No HDA sound output with AMD IOMMU on master
From: Alex Xu (Hello71)
Date: Thu Nov 04 2021 - 12:02:05 EST
Hi,
At some point between 86f925fded03 and 5f4e450cd96b, the built-in sound
card on my ASRock B450 Pro4 has stopped working for me. All controls are
unchanged (no new or removed controls, all outputs are unmuted), but
when I try to play sound, I hear a click from the output powering up but
no sound otherwise. While attempting to play sound, the following lines
are output to the kernel log:
[ 15.081961] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00000 flags=0x0000]
[ 15.081982] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00040 flags=0x0000]
[ 15.082253] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00080 flags=0x0000]
[ 15.082581] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac000c0 flags=0x0000]
[ 15.082914] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00100 flags=0x0000]
[ 15.083247] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00140 flags=0x0000]
[ 15.083580] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00180 flags=0x0000]
[ 15.083914] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac001c0 flags=0x0000]
[ 15.084246] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00200 flags=0x0000]
[ 15.084579] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x14ac00240 flags=0x0000]
[ 749.373925] amd_iommu_report_page_fault: 5917 callbacks suppressed
[ 749.373933] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000000 flags=0x0000]
[ 749.373952] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000040 flags=0x0000]
[ 749.374248] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000080 flags=0x0000]
[ 749.374574] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f20000c0 flags=0x0000]
[ 749.374907] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000100 flags=0x0000]
[ 749.375240] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000140 flags=0x0000]
[ 749.375572] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000180 flags=0x0000]
[ 749.375904] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f20001c0 flags=0x0000]
[ 749.376238] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000200 flags=0x0000]
[ 749.376570] snd_hda_intel 0000:0b:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0016 address=0x1f2000240 flags=0x0000]
Note that I first attempted to play audio around 15 seconds in, then
tried again about 730 seconds later.
Adding mem_encrypt=off to the kernel command line does not fix the
issue, but adding mem_encrypt=off amd_iommu=off to the kernel command
line does fix it. I am not using any other IOMMU-related parameters such
as iommu=pt.
I have not yet tested it, but it seems reasonable that this issue is
probably related to the recently pulled "ALSA: memalloc" series of
changes.
Let me know what further information or testing is required. I can do a
full bisection but it is somewhat time-consuming due to the manual
nature of the tests.
Thanks,
Alex.