Linux 6.11 Addressing "Long-Time Regression" Of Buggy AMD HDMI Audio
([AMD] 6 Hours Ago
AMD HDMI Audio Fix)
- Reference: 0001482884
- News link: https://www.phoronix.com/news/AMD-HDMI-Audio-Fix-Linux-6.11
- Source link:
For those that have experienced a buggy AMD HDMI audio experience when using recent versions of the Linux kernel, a fix has been submitted today for Linux 6.11 and in turn for back-porting to stable series in addressing "another long-time regression fix for AMD HDMI."
The fix to the Linux HDA audio driver is to only conditionally use snooping for AMD HDMI hardware. It's a regression fix to a change that was made to the Linux kernel back in March of 2022 that dropped CONFIG_DMA_REMAP. Leading to action now on this buggy HDMI audio was [1]this recent bug report citing AMD HDMI audio with a Navi graphics card citing audio skipping, stuttering, and white noise. That bug reporter also bisected the problem that led to quick action in resolving the situation.
"I am having severe audio issues when using ALSA and HDMI audio which include skipping, stuttering and white noise. This can be reproduced by playing a flac music file with mpv where increased even minor CPU usage greatly affects audio quality. For example opening a web browser (Firefox) will break the sound momentarily and normal usage with many programs open will cause the audio to be entirely broken. If only mpv is running with no other usage including changing focus in the window manager then audio is mostly okay."
Takashi Iwai of SUSE and the longtime Linux sound subsystem maintainer worked through [2]a fix where he explained:
"The recent regression report revealed that the use of WC pages for AMD HDMI device together with AMD IOMMU leads to unexpected truncation or noises. The issue seems triggered by the change in the kernel core memory allocation that enables IOMMU driver to use always S/G buffers. Meanwhile, the use of WC pages has been a workaround for the similar issue with standard pages in the past. So, now we need to apply the workaround conditionally, namely, only when IOMMU isn't in place.
This patch modifies the workaround code to check the DMA ops at first and apply the snoop-off only when needed."
That fix is now on its way to Linux 6.11 Git this morning as part of the week's [3]sound fixes pull request and from there can be back-ported to stable kernel series.
Today's pull request also happens to address a long-time regression around Linux's Firewire audio support. Those Firewire problems have been around since the 2021 kernel code.
[1] https://bugzilla.kernel.org/show_bug.cgi?id=219087
[2] https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/?h=for-linus&id=478689b5990deb626a0b3f1ebf165979914d6be4
[3] https://lore.kernel.org/lkml/87a5hvibm6.wl-tiwai@suse.de/
The fix to the Linux HDA audio driver is to only conditionally use snooping for AMD HDMI hardware. It's a regression fix to a change that was made to the Linux kernel back in March of 2022 that dropped CONFIG_DMA_REMAP. Leading to action now on this buggy HDMI audio was [1]this recent bug report citing AMD HDMI audio with a Navi graphics card citing audio skipping, stuttering, and white noise. That bug reporter also bisected the problem that led to quick action in resolving the situation.
"I am having severe audio issues when using ALSA and HDMI audio which include skipping, stuttering and white noise. This can be reproduced by playing a flac music file with mpv where increased even minor CPU usage greatly affects audio quality. For example opening a web browser (Firefox) will break the sound momentarily and normal usage with many programs open will cause the audio to be entirely broken. If only mpv is running with no other usage including changing focus in the window manager then audio is mostly okay."
Takashi Iwai of SUSE and the longtime Linux sound subsystem maintainer worked through [2]a fix where he explained:
"The recent regression report revealed that the use of WC pages for AMD HDMI device together with AMD IOMMU leads to unexpected truncation or noises. The issue seems triggered by the change in the kernel core memory allocation that enables IOMMU driver to use always S/G buffers. Meanwhile, the use of WC pages has been a workaround for the similar issue with standard pages in the past. So, now we need to apply the workaround conditionally, namely, only when IOMMU isn't in place.
This patch modifies the workaround code to check the DMA ops at first and apply the snoop-off only when needed."
That fix is now on its way to Linux 6.11 Git this morning as part of the week's [3]sound fixes pull request and from there can be back-ported to stable kernel series.
Today's pull request also happens to address a long-time regression around Linux's Firewire audio support. Those Firewire problems have been around since the 2021 kernel code.
[1] https://bugzilla.kernel.org/show_bug.cgi?id=219087
[2] https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/commit/?h=for-linus&id=478689b5990deb626a0b3f1ebf165979914d6be4
[3] https://lore.kernel.org/lkml/87a5hvibm6.wl-tiwai@suse.de/
Kjell