| From d668f35bb8d2f2c9aaaacf2f87e45d5726957a1f Mon Sep 17 00:00:00 2001 |
| From: Dongdong Liu <liudongdong3@huawei.com> |
| Date: Thu, 28 Dec 2017 17:53:32 +0800 |
| Subject: PCI: Disable MSI for HiSilicon Hip06/Hip07 only in Root Port mode |
| |
| [ Upstream commit deb86999323661c019ef2740eb9d479d1e526b5c ] |
| |
| HiSilicon Hip06/Hip07 can operate as either a Root Port or an Endpoint. It |
| always advertises an MSI capability, but it can only generate MSIs when in |
| Endpoint mode. |
| |
| The device has the same Vendor and Device IDs in both modes, so check the |
| Class Code and disable MSI only when operating as a Root Port. |
| |
| [bhelgaas: changelog] |
| Fixes: 72f2ff0deb87 ("PCI: Disable MSI for HiSilicon Hip06/Hip07 Root Ports") |
| Signed-off-by: Dongdong Liu <liudongdong3@huawei.com> |
| Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> |
| Reviewed-by: Zhou Wang <wangzhou1@hisilicon.com> |
| Cc: stable@vger.kernel.org # v4.11+ |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/pci/quirks.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c |
| index c7a695c2303a..2250f0d33481 100644 |
| --- a/drivers/pci/quirks.c |
| +++ b/drivers/pci/quirks.c |
| @@ -1634,8 +1634,8 @@ static void quirk_pcie_mch(struct pci_dev *pdev) |
| DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7520_MCH, quirk_pcie_mch); |
| DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7320_MCH, quirk_pcie_mch); |
| DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_E7525_MCH, quirk_pcie_mch); |
| -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_HUAWEI, 0x1610, quirk_pcie_mch); |
| |
| +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_HUAWEI, 0x1610, PCI_CLASS_BRIDGE_PCI, 8, quirk_pcie_mch); |
| |
| /* |
| * It's possible for the MSI to get corrupted if shpc and acpi |
| -- |
| 2.17.1 |
| |