diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2015-01-27 10:24:53 -0600 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2015-01-27 10:24:53 -0600 |
commit | 19c5392eb1c1e81188e898400c0e8258827eb160 (patch) | |
tree | b20f30a281759a19a999ee850e90e260be954c7d /drivers/pci | |
parent | f175aa2c9f6cc08f043e85ea37f44ef3676cbac1 (diff) | |
download | linux-19c5392eb1c1e81188e898400c0e8258827eb160.tar.gz linux-19c5392eb1c1e81188e898400c0e8258827eb160.tar.bz2 linux-19c5392eb1c1e81188e898400c0e8258827eb160.zip |
PCI: designware: Reject MSI-X IRQs
The DesignWare PCIe MSI hardware does not support MSI-X IRQs. Setting
those up failed as a side effect of a bug which was fixed by 91f8ae823f2b
("PCI: designware: Setup and clear exactly one MSI at a time").
Now that this bug is fixed, MSI-X IRQs need to be rejected explicitly;
otherwise devices trying to use them may end up with incorrectly working
interrupts.
Fixes: 91f8ae823f2b ("PCI: designware: Setup and clear exactly one MSI at a time")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Jingoo Han <jg1.han@samsung.com>
CC: stable@vger.kernel.org # v3.18+
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/host/pcie-designware.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c index df781cdf13c1..17ca98657a28 100644 --- a/drivers/pci/host/pcie-designware.c +++ b/drivers/pci/host/pcie-designware.c @@ -283,6 +283,9 @@ static int dw_msi_setup_irq(struct msi_controller *chip, struct pci_dev *pdev, struct msi_msg msg; struct pcie_port *pp = sys_to_pcie(pdev->bus->sysdata); + if (desc->msi_attrib.is_msix) + return -EINVAL; + irq = assign_irq(1, desc, &pos); if (irq < 0) return irq; |