diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2015-01-27 10:24:53 -0600 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-02-11 15:00:50 +0800 |
commit | 0df05be2d81ba21663c611c50515b9e54a1372b3 (patch) | |
tree | 4a1ee306522bccb5f60dbda51b8a0e9d5022b4f3 /drivers/pci | |
parent | 9a42a8a458c76c4583fcb5f8eaa336fd8157be20 (diff) | |
download | linux-stable-0df05be2d81ba21663c611c50515b9e54a1372b3.tar.gz linux-stable-0df05be2d81ba21663c611c50515b9e54a1372b3.tar.bz2 linux-stable-0df05be2d81ba21663c611c50515b9e54a1372b3.zip |
PCI: designware: Reject MSI-X IRQs
commit 19c5392eb1c1e81188e898400c0e8258827eb160 upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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 dfed00aa3ac0..f0fcbceee209 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_chip *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; |