Skip to contentSkip to conversation

ALSA: hda: Force MSI for Hygon H34M51A board

PATCH In review [email protected] 2 participants 2 messages Oct 22 – Oct 23 Sound

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ALSA: hda: Force MSI for Hygon H34M51A board

From: renpanpan <[email protected]>

The Hygon HDA controller (PCI 1d94:14a9) has AZX_DCAPS_NO_MSI set in the PCI ID table to use legacy INTx, as MSI may lose interrupts under heavy load on some Hygon platforms (commit 41212ff3e4ed ("ALSA: hda:
Add support for Hygon family 18h model 5h HD-Audio")).

However, on the Kunlun H34M51A board (PCI subsystem 1d94:c950) the INTx interrupt line is not wired. /proc/interrupts shows zero count for the HDA IRQ from boot, so the RIRB interrupt handler is never called. Without RIRB processing, azx_rirb_get_response() times out after 1 s, switches to polling mode, and the resulting slow codec communication delays card registration by ~20 s and breaks unsolicited jack-detection event delivery.

Force MSI on for subsystem 1d94:c950 by adding it to msi_deny_list with value 1. The list is consulted in check_msi() before the AZX_DCAPS_NO_MSI check, so H34M51A gets MSI enabled while other Hygon platforms retain INTx.

---
 sound/hda/controllers/intel.c | 1 +
 1 file changed, 1 insertion(+)
sound/hda/controllers/intel.c +1 -0
index 24015c73a67f..fa36ed4c1153 100644
@@ -1669,6 +1669,7 @@ static const struct snd_pci_quirk msi_deny_list[] = {
 	SND_PCI_QUIRK(0x1179, 0xfb44, "Toshiba Satellite C870", 0), /* AMD Hudson */
 	SND_PCI_QUIRK(0x1849, 0x0888, "ASRock", 0), /* Athlon64 X2 + nvidia */
 	SND_PCI_QUIRK(0xa0a0, 0x0575, "Aopen MZ915-M", 0), /* ICH6 */
+	SND_PCI_QUIRK(0x1d94, 0xc950, "Hygon H34M51A", 1), /* INTx broken */
 	{}
 };
 
Signature · 1 line
2.43.0
#1 lore raw
Quoted 16 lines · On Thu, 22 Oct 2026 10:54:38 +0200, [email protected] wrote:

From: renpanpan <[email protected]>

The Hygon HDA controller (PCI 1d94:14a9) has AZX_DCAPS_NO_MSI set in the PCI ID table to use legacy INTx, as MSI may lose interrupts under heavy load on some Hygon platforms (commit 41212ff3e4ed ("ALSA: hda:
Add support for Hygon family 18h model 5h HD-Audio")).

However, on the Kunlun H34M51A board (PCI subsystem 1d94:c950) the INTx interrupt line is not wired. /proc/interrupts shows zero count for the HDA IRQ from boot, so the RIRB interrupt handler is never called. Without RIRB processing, azx_rirb_get_response() times out after 1 s, switches to polling mode, and the resulting slow codec communication delays card registration by ~20 s and breaks unsolicited jack-detection event delivery.

Quoted 6 lines

Force MSI on for subsystem 1d94:c950 by adding it to msi_deny_list with value 1. The list is consulted in check_msi() before the AZX_DCAPS_NO_MSI check, so H34M51A gets MSI enabled while other Hygon platforms retain INTx.

Applied now. Thanks.

Takashi