PCI/MSI: Don't set up INTx if MSI or MSI-X is enabled
If MSI or MSI-X is enabled, the device uses that. It uses INTx only if both MSI and MSI-X are disabled (see PCIe r4.0, sec 7.7.1.2), so if a device already has MSI or MSI-X enabled, there's no need to set up its legacy INTx interrupt.bba6f6fc68
("[PATCH] MSI-X: fix resume crash") changed the cris, frv, x86, and ia64 arches to skip INTx setup when MSI is enabled. The cris and frv arches have since been removed.16cf0ebc35
("x86/PCI: Do not use interrupt links for devices using MSI-X") extended that by changing x86 to also skip INTx setup when MSI-X is enabled. Change ia64 to skip INTx setup when either MSI or MSI-X is enabled by applying the logic from16cf0ebc35
to ia64 as well as x86. Tested-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
This commit is contained in:
parent
7928b2cbe5
commit
5a1e0baa34
|
@ -398,7 +398,7 @@ pcibios_enable_device (struct pci_dev *dev, int mask)
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (!dev->msi_enabled)
|
||||
if (!pci_dev_msi_enabled(dev))
|
||||
return acpi_pci_irq_enable(dev);
|
||||
return 0;
|
||||
}
|
||||
|
@ -407,7 +407,7 @@ void
|
|||
pcibios_disable_device (struct pci_dev *dev)
|
||||
{
|
||||
BUG_ON(atomic_read(&dev->enable_cnt));
|
||||
if (!dev->msi_enabled)
|
||||
if (!pci_dev_msi_enabled(dev))
|
||||
acpi_pci_irq_disable(dev);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue