diff options
| author | Nam Cao <[email protected]> | 2025-08-11 05:39:35 +0000 |
|---|---|---|
| committer | Bjorn Helgaas <[email protected]> | 2025-08-12 18:45:01 +0000 |
| commit | 5149bbb56bdcf5c5f72904025fbb502217580b63 (patch) | |
| tree | 6c6acb962edd41f56fefd3b9dfee73e9e4c734c8 /drivers/pci/controller/vmd.c | |
| parent | PCI: xilinx: Fix NULL pointer dereference in xilinx_pcie_intr_handler() (diff) | |
| download | kernel-5149bbb56bdcf5c5f72904025fbb502217580b63.tar.gz kernel-5149bbb56bdcf5c5f72904025fbb502217580b63.zip | |
PCI: vmd: Remove MSI-X check on child devices
d7d8ab87e3e7 ("PCI: vmd: Switch to msi_create_parent_irq_domain()") added a
WARN_ON sanity check that child devices support MSI-X, because VMD document
says [1]:
Intel VMD only supports MSIx Interrupts from child devices and therefore
the BIOS must enable PCIe Hot Plug and MSIx interrups [sic].
However, the VMD device can't even tell the difference between a child
device using MSI and one using MSI-X. Per 185a383ada2e ("x86/PCI: Add
driver for Intel Volume Management Device (VMD)"), VMD does not support
INTx interrupts, but does support child devices using either MSI or MSI-X.
Remove the sanity check to avoid the WARN_ON and allow child devices to use
MSI, reported by Ammar.
Fixes: d7d8ab87e3e7 ("PCI: vmd: Switch to msi_create_parent_irq_domain()")
Link: https://cdrdv2-public.intel.com/776857/VMD_White_Paper.pdf [1]
Reported-by: Ammar Faizi <[email protected]>
Closes: https://lore.kernel.org/linux-pci/aJXYhfc%[email protected]/
Signed-off-by: Nam Cao <[email protected]>
[bhelgaas: commit log]
Signed-off-by: Bjorn Helgaas <[email protected]>
Tested-by: Ammar Faizi <[email protected]>
Link: https://patch.msgid.link/[email protected]
Diffstat (limited to 'drivers/pci/controller/vmd.c')
| -rw-r--r-- | drivers/pci/controller/vmd.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index b679c7f28f51..1bd5bf4a6097 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -306,9 +306,6 @@ static bool vmd_init_dev_msi_info(struct device *dev, struct irq_domain *domain, struct irq_domain *real_parent, struct msi_domain_info *info) { - if (WARN_ON_ONCE(info->bus_token != DOMAIN_BUS_PCI_DEVICE_MSIX)) - return false; - if (!msi_lib_init_dev_msi_info(dev, domain, real_parent, info)) return false; |
