pci_decode: disable MSI on HDAUDIO cards

According to OpenBSD's azalia driver some AMD HDAudio devices do not
play nice with MSIs although the capability is set. At least the
0x1457 device was tested and worked using GSIs only.

genodelabs/genode#4578
This commit is contained in:
Josef Söntgen 2022-10-07 21:00:10 +02:00 committed by Christian Helmuth
parent bc1e231775
commit a420670217

View File

@ -153,6 +153,27 @@ void Main::parse_pci_function(Bdf bdf,
});
});
{
/* Apply GSI/MSI/MSI-X quirks based on vendor/device/class */
using Cc = Config::Class_code_rev_id;
bool const hdaudio = cfg.read<Cc::Class_code>() == 0x40300;
auto const vendor_id = cfg.read<Config::Vendor>();
auto const device_id = cfg.read<Config::Device>();
if (hdaudio && vendor_id == 0x1022 /* AMD */) {
/**
* see dde_bsd driver dev/pci/azalia.c
*
* PCI_PRODUCT_AMD_17_HDA
* PCI_PRODUCT_AMD_17_1X_HDA
* PCI_PRODUCT_AMD_HUDSON2_HDA
*/
if (device_id == 0x1457 || device_id == 0x15e3 ||
device_id == 0x780d)
msi = msi_x = false;
}
}
/*
* Only generate <irq> nodes if at least one of the following