メモリー容量の壁は 4GB @ Intel HDA ドライバー (alsa-driver)

解決済みの問題です.すぐに直される事でしょう.

[追記 22:45 翻訳挿入 3/16 03:04]
* Daniel Koukola さんが,私の間違いだと訂正を入れてきました.これは, AMD/ATI SB600 のバグだそうです.

Realtek ALC889A Audio Codec(ATI azalia) が, Fedora 10 x86_64 のドライバーで認識されないという問題がありました.詳しくは,私自身が書いた alsa doesn’t recognize onboard sound on GA-MA69H-S3H (Fedorabugzilla での投稿.)

[root@star1 ~]# cat /proc/version
Linux version 2.6.27.19-170.2.35.fc10.x86_64 (mockbuild@xenbuilder2.fedora.redhat.com) (gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC) ) #1 SMP Mon Feb 23 13:00:23 EST 2009
[root@star1 ~]# lspci |grep -i “multi|audio|040[0-3]”
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)

lspci は,カードを認識していました.ですが, alsa のドライバー, snd_hda_intel モジュールが動かず,エラー・メッセージを /var/log/dmesg と /var/log/messages に吐き出しているという次第.

古い HDD 上の Fedora 10 では,そんな問題は起きず,新しい 1TB HDD と 2GB メモリー2枚買ってそこにインストールして問題が起こった次第. DVD からクリーン・インストールまでしてしまいましたが,問題はなくなりませんでした.そう,メモリーが,サウンド・ドライバーに対して大きすぎた訳ですが,パニックで気づかなかった次第.

それで, Fedora 10bugzilla”alsa doesn’t recognize onboard sound on GA-MA69H-S3H.” という報告をしました. Jaroslav Kysela さんは,私に, alsa のスナップショット・ソースからコンパイルして使えるよという返信をくれました.それで,安定版・スナップショットの両方を試しましたが,駄目でした.

で,チャットで相談したかったので, 13日に FreeNode という IRC の #alsa チャンネルに入りました.そして,翌日,二つのメーリング・リスト: alsa-user and alsa-devel(この問題を投稿しました.) に入りました.そして,チャンネルで, Daniel Koukola さんが,夕方から徹夜で,14時間もさいて,相談に載ってくれました.彼の指示にしたがい,私にデバッグのためにソースを編集して,モジュールをロードし, /var/log/dmesg や /var/log/messages にある記録を送りました.そして彼が, Intel HDA ドライバーが, Response Inbound Ring Buffer という領域がメモリーの物理領域の 4GB より後ろにあると,読み込みに失敗する事を突き止めました.とんでもなく酷い問題でしたが,彼には非常に感謝しています.

以下が変更した点です.この後, INSTALL の指示に従い,インストールしました.

[emmanuel@star1 hda]$ pwd
/home/emmanuel/Softwares/alsa-driver-1.0.19/alsa-kernel/pci/hda
[emmanuel@star1 hda]$ diff hda_intel.c{0,}
2215,2216c2215,2218
< if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK))
< pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK);

> /* if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK))
> pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK); */
> pci_set_dma_mask(pci, DMA_32BIT_MASK);
> pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK);

* [追記 22:45 翻訳挿入 3/16 03:04] に関して

Thingol Emmanuel_Chanel, hello again 🙂 this is not intel hda driver limitation. it looks like a bug in your southbridge (amd/ati sb600), it says it support 64-bit dma (gcap bit 1 is set), but apparently it doesn’t (at least not for the RIRB).
Emmanuel_Chanel Oh… What a bad news!
* Silkjc has quit (Remote closed the connection)
Thingol Emmanuel_Chanel, why? the workaround is easy… disable 64-bit dma for sb600. 🙂
Emmanuel_Chanel Oh… ok.
Thingol Emmanuel_Chanel, that’s what those two lines (pci_set_dma_mask/pci_set_consistent_dma_mask) do.. disable 64-bit dma. it only needs to be modified so it’s disabled only for sb600 (not for all hda controllers).
Emmanuel_Chanel Oh… ok.
Thingol Oh.. http://www.mail-archive.com/linux-ide@vger.kernel.org/msg06694.html ..seems like sb600 ahci (hdd) controller is broken in the same way. 🙂
Emmanuel_Chanel That bug can disable me to use 2TB SATA HDD or so, too?
Emmanuel_Chanel Thingol: Can I export your comments for my entry?
(Omitted)
Thingol Emmanuel_Chanel, yeah.. but my English is not good. 🙂