The limitation of the memory size is 4 GB @ Intel HDA driver of alsa

It seems solved. It will be fixed soon.
[Addition on 22:45]
* Mr. Daniel Koukola says that I mistook the prblem. It’s a bug of amd/ati sb600.
I had a problem that Realtek ALC889A Audio Codec (ATI azalia) isn’t detected on alsa-driver of Fedora 10 x86_64. Detail info is alsa doesn’t recognize onboard sound on GA-MA69H-S3H (On Fedora‘s bugzilla. Originally, I posted.)

[root@star1 ~]# cat /proc/version

Linux version ( (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 shows the sound card detected. But alsa‘s driver snd_hda_intel doesn’t work but output error messages on /var/log/dmesg and on /var/log/messages . On Fedora 10 on my old HDD, this problem didn’t occur. It occured after I installed Fedora 10 on a new 1TB HDD with 6GB memory (with two new 2GB memories) 9 Mar, 2009. So I had even a clean installation again from the installation DVD. But that problem didn’t extinguish. Yeah… the memory is too big for the sound driver. I couldn’t find it by panic then.

So I posted the report: “alsa doesn’t recognize onboard sound on GA-MA69H-S3H”. to Fedora 10‘s bugzilla. Mr. Jaroslav Kysela says that I can compile alsa’s latest snapshot. I tried both the snapshot and the latest stable alsa-driver but failed.

Wanting advices on chat, I joined #alsa @ FreeNode, the IRC channel of alsa. on 13 Mar. And on 14 Mar. I subscribed alsa-user and alsa-devel that I posted this problem two mailing lists. And on the channel, I got a good helper: Mr. Daniel Koukola. He spared all his evening and night time (About 14 hours!) for helping me. By his indication, I modified some of the source for debug, tried loading the modified driver, and sent him the records on /var/log/dmesg and /var/log/messages . And he got the answer that the Intel HDA driver fails when the Response Inbound Ring Buffer is placed at a physical address greater than 4 GB, on memory. I thank him a lot. It was too a bad problem but I thank him very, very, much!

This is the modified part from the source. I installed it, reading 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,}


< 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);

About the addition on 22:45

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.. ..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?
Thingol Emmanuel_Chanel, yeah.. but my English is not good. 🙂

One thought on “The limitation of the memory size is 4 GB @ Intel HDA driver of alsa”

Leave a Reply

Your email address will not be published. Required fields are marked *