From: Jonathan Chocron <jonnyc@amazon.com>
To: <lorenzo.pieralisi@arm.com>, <bhelgaas@google.com>,
<jingoohan1@gmail.com>, <gustavo.pimentel@synopsys.com>,
<robh+dt@kernel.org>, <mark.rutland@arm.com>
Cc: <andrew.murray@arm.com>, <dwmw@amazon.co.uk>,
<benh@kernel.crashing.org>, <alisaidi@amazon.com>,
<ronenk@amazon.com>, <barakw@amazon.com>, <talel@amazon.com>,
<hanochu@amazon.com>, <hhhawa@amazon.com>,
<linux-pci@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<devicetree@vger.kernel.org>, <jonnyc@amazon.com>
Subject: [PATCH v4 4/7] PCI: Add quirk to disable MSI-X support for Amazon's Annapurna Labs Root Port
Date: Wed, 21 Aug 2019 18:35:44 +0300 [thread overview]
Message-ID: <20190821153545.17635-5-jonnyc@amazon.com> (raw)
In-Reply-To: <20190821153545.17635-1-jonnyc@amazon.com>
The Root Port (identified by [1c36:0031]) doesn't support MSI-X. On some
platforms it is configured to not advertise the capability at all, while
on others it (mistakenly) does. This causes a panic during
initialization by the pcieport driver, since it tries to configure the
MSI-X capability. Specifically, when trying to access the MSI-X table
a "non-existing addr" exception occurs.
Example stacktrace snippet:
[ 1.632363] SError Interrupt on CPU2, code 0xbf000000 -- SError
[ 1.632364] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc1-Jonny-14847-ge76f1d4a1828-dirty #33
[ 1.632365] Hardware name: Annapurna Labs Alpine V3 EVP (DT)
[ 1.632365] pstate: 80000005 (Nzcv daif -PAN -UAO)
[ 1.632366] pc : __pci_enable_msix_range+0x4e4/0x608
[ 1.632367] lr : __pci_enable_msix_range+0x498/0x608
[ 1.632367] sp : ffffff80117db700
[ 1.632368] x29: ffffff80117db700 x28: 0000000000000001
[ 1.632370] x27: 0000000000000001 x26: 0000000000000000
[ 1.632372] x25: ffffffd3e9d8c0b0 x24: 0000000000000000
[ 1.632373] x23: 0000000000000000 x22: 0000000000000000
[ 1.632375] x21: 0000000000000001 x20: 0000000000000000
[ 1.632376] x19: ffffffd3e9d8c000 x18: ffffffffffffffff
[ 1.632378] x17: 0000000000000000 x16: 0000000000000000
[ 1.632379] x15: ffffff80116496c8 x14: ffffffd3e9844503
[ 1.632380] x13: ffffffd3e9844502 x12: 0000000000000038
[ 1.632382] x11: ffffffffffffff00 x10: 0000000000000040
[ 1.632384] x9 : ffffff801165e270 x8 : ffffff801165e268
[ 1.632385] x7 : 0000000000000002 x6 : 00000000000000b2
[ 1.632387] x5 : ffffffd3e9d8c2c0 x4 : 0000000000000000
[ 1.632388] x3 : 0000000000000000 x2 : 0000000000000000
[ 1.632390] x1 : 0000000000000000 x0 : ffffffd3e9844680
[ 1.632392] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 1.632393] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc1-Jonny-14847-ge76f1d4a1828-dirty #33
[ 1.632394] Hardware name: Annapurna Labs Alpine V3 EVP (DT)
[ 1.632394] Call trace:
[ 1.632395] dump_backtrace+0x0/0x140
[ 1.632395] show_stack+0x14/0x20
[ 1.632396] dump_stack+0xa8/0xcc
[ 1.632396] panic+0x140/0x334
[ 1.632397] nmi_panic+0x6c/0x70
[ 1.632398] arm64_serror_panic+0x74/0x88
[ 1.632398] __pte_error+0x0/0x28
[ 1.632399] el1_error+0x84/0xf8
[ 1.632400] __pci_enable_msix_range+0x4e4/0x608
[ 1.632400] pci_alloc_irq_vectors_affinity+0xdc/0x150
[ 1.632401] pcie_port_device_register+0x2b8/0x4e0
[ 1.632402] pcie_portdrv_probe+0x34/0xf0
Notice that this quirk also disables MSI (which may work, but hasn't
been tested nor has a current use case), since currently there is no
standard way to disable only MSI-X.
Signed-off-by: Jonathan Chocron <jonnyc@amazon.com>
Reviewed-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
---
drivers/pci/quirks.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 23672680dba7..b6e6e7df3f7b 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2925,6 +2925,24 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a1,
quirk_msi_intx_disable_qca_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0xe091,
quirk_msi_intx_disable_qca_bug);
+
+/*
+ * Amazon's Annapurna Labs 1c36:0031 Root Ports don't support MSI-X, so it
+ * should be disabled on platforms where the device (mistakenly) advertises it.
+ *
+ * Notice that this quirk also disables MSI (which may work, but hasn't been
+ * tested), since currently there is no standard way to disable only MSI-X.
+ *
+ * The 0031 device id is reused for other non Root Port device types,
+ * therefore the quirk is registered for the PCI_CLASS_BRIDGE_PCI class.
+ */
+static void quirk_al_msi_disable(struct pci_dev *dev)
+{
+ dev->no_msi = 1;
+ pci_warn(dev, "Disabling MSI/MSI-X\n");
+}
+DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031,
+ PCI_CLASS_BRIDGE_PCI, 8, quirk_al_msi_disable);
#endif /* CONFIG_PCI_MSI */
/*
--
2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Chocron <jonnyc@amazon.com>
To: lorenzo.pieralisi@arm.com, bhelgaas@google.com,
jingoohan1@gmail.com, gustavo.pimentel@synopsys.com,
robh+dt@kernel.org, mark.rutland@arm.com
Cc: andrew.murray@arm.com, dwmw@amazon.co.uk,
benh@kernel.crashing.org, alisaidi@amazon.com, ronenk@amazon.com,
barakw@amazon.com, talel@amazon.com, hanochu@amazon.com,
hhhawa@amazon.com, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
jonnyc@amazon.com
Subject: [PATCH v4 4/7] PCI: Add quirk to disable MSI-X support for Amazon's Annapurna Labs Root Port
Date: Wed, 21 Aug 2019 18:35:44 +0300 [thread overview]
Message-ID: <20190821153545.17635-5-jonnyc@amazon.com> (raw)
In-Reply-To: <20190821153545.17635-1-jonnyc@amazon.com>
The Root Port (identified by [1c36:0031]) doesn't support MSI-X. On some
platforms it is configured to not advertise the capability at all, while
on others it (mistakenly) does. This causes a panic during
initialization by the pcieport driver, since it tries to configure the
MSI-X capability. Specifically, when trying to access the MSI-X table
a "non-existing addr" exception occurs.
Example stacktrace snippet:
[ 1.632363] SError Interrupt on CPU2, code 0xbf000000 -- SError
[ 1.632364] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc1-Jonny-14847-ge76f1d4a1828-dirty #33
[ 1.632365] Hardware name: Annapurna Labs Alpine V3 EVP (DT)
[ 1.632365] pstate: 80000005 (Nzcv daif -PAN -UAO)
[ 1.632366] pc : __pci_enable_msix_range+0x4e4/0x608
[ 1.632367] lr : __pci_enable_msix_range+0x498/0x608
[ 1.632367] sp : ffffff80117db700
[ 1.632368] x29: ffffff80117db700 x28: 0000000000000001
[ 1.632370] x27: 0000000000000001 x26: 0000000000000000
[ 1.632372] x25: ffffffd3e9d8c0b0 x24: 0000000000000000
[ 1.632373] x23: 0000000000000000 x22: 0000000000000000
[ 1.632375] x21: 0000000000000001 x20: 0000000000000000
[ 1.632376] x19: ffffffd3e9d8c000 x18: ffffffffffffffff
[ 1.632378] x17: 0000000000000000 x16: 0000000000000000
[ 1.632379] x15: ffffff80116496c8 x14: ffffffd3e9844503
[ 1.632380] x13: ffffffd3e9844502 x12: 0000000000000038
[ 1.632382] x11: ffffffffffffff00 x10: 0000000000000040
[ 1.632384] x9 : ffffff801165e270 x8 : ffffff801165e268
[ 1.632385] x7 : 0000000000000002 x6 : 00000000000000b2
[ 1.632387] x5 : ffffffd3e9d8c2c0 x4 : 0000000000000000
[ 1.632388] x3 : 0000000000000000 x2 : 0000000000000000
[ 1.632390] x1 : 0000000000000000 x0 : ffffffd3e9844680
[ 1.632392] Kernel panic - not syncing: Asynchronous SError Interrupt
[ 1.632393] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc1-Jonny-14847-ge76f1d4a1828-dirty #33
[ 1.632394] Hardware name: Annapurna Labs Alpine V3 EVP (DT)
[ 1.632394] Call trace:
[ 1.632395] dump_backtrace+0x0/0x140
[ 1.632395] show_stack+0x14/0x20
[ 1.632396] dump_stack+0xa8/0xcc
[ 1.632396] panic+0x140/0x334
[ 1.632397] nmi_panic+0x6c/0x70
[ 1.632398] arm64_serror_panic+0x74/0x88
[ 1.632398] __pte_error+0x0/0x28
[ 1.632399] el1_error+0x84/0xf8
[ 1.632400] __pci_enable_msix_range+0x4e4/0x608
[ 1.632400] pci_alloc_irq_vectors_affinity+0xdc/0x150
[ 1.632401] pcie_port_device_register+0x2b8/0x4e0
[ 1.632402] pcie_portdrv_probe+0x34/0xf0
Notice that this quirk also disables MSI (which may work, but hasn't
been tested nor has a current use case), since currently there is no
standard way to disable only MSI-X.
Signed-off-by: Jonathan Chocron <jonnyc@amazon.com>
Reviewed-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
---
drivers/pci/quirks.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 23672680dba7..b6e6e7df3f7b 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2925,6 +2925,24 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x10a1,
quirk_msi_intx_disable_qca_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0xe091,
quirk_msi_intx_disable_qca_bug);
+
+/*
+ * Amazon's Annapurna Labs 1c36:0031 Root Ports don't support MSI-X, so it
+ * should be disabled on platforms where the device (mistakenly) advertises it.
+ *
+ * Notice that this quirk also disables MSI (which may work, but hasn't been
+ * tested), since currently there is no standard way to disable only MSI-X.
+ *
+ * The 0031 device id is reused for other non Root Port device types,
+ * therefore the quirk is registered for the PCI_CLASS_BRIDGE_PCI class.
+ */
+static void quirk_al_msi_disable(struct pci_dev *dev)
+{
+ dev->no_msi = 1;
+ pci_warn(dev, "Disabling MSI/MSI-X\n");
+}
+DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_AMAZON_ANNAPURNA_LABS, 0x0031,
+ PCI_CLASS_BRIDGE_PCI, 8, quirk_al_msi_disable);
#endif /* CONFIG_PCI_MSI */
/*
--
2.17.1
next prev parent reply other threads:[~2019-08-21 15:36 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-21 15:35 [PATCH v4 0/7] Amazon's Annapurna Labs DT-based PCIe host controller driver Jonathan Chocron
2019-08-21 15:35 ` Jonathan Chocron
2019-08-21 15:35 ` [PATCH v4 1/7] PCI: Add Amazon's Annapurna Labs vendor ID Jonathan Chocron
2019-08-21 15:35 ` Jonathan Chocron
2019-08-21 15:35 ` [PATCH v4 2/7] PCI: Add ACS quirk for Amazon Annapurna Labs root ports Jonathan Chocron
2019-08-21 15:35 ` Jonathan Chocron
2019-08-22 8:31 ` Andrew Murray
2019-09-04 13:33 ` Chocron, Jonathan
2019-09-04 13:33 ` Chocron, Jonathan
2019-08-21 15:35 ` [PATCH v4 3/7] PCI/VPD: Add VPD release quirk for Amazon's Annapurna Labs Root Port Jonathan Chocron
2019-08-21 15:35 ` Jonathan Chocron
2019-08-22 11:41 ` Andrew Murray
2019-08-22 14:36 ` Chocron, Jonathan
2019-08-22 14:36 ` Chocron, Jonathan
2019-08-22 15:07 ` Andrew Murray
2019-08-22 15:07 ` Andrew Murray
2019-09-04 13:36 ` Chocron, Jonathan
2019-09-04 13:36 ` Chocron, Jonathan
2019-09-04 14:08 ` Andrew Murray
2019-09-04 14:08 ` Andrew Murray
2019-08-22 15:08 ` Andrew Murray
2019-08-22 15:08 ` Andrew Murray
2019-08-21 15:35 ` Jonathan Chocron [this message]
2019-08-21 15:35 ` [PATCH v4 4/7] PCI: Add quirk to disable MSI-X support " Jonathan Chocron
2019-08-22 7:54 ` Andrew Murray
2019-08-21 15:47 ` [PATCH v4 5/7] dt-bindings: PCI: Add Amazon's Annapurna Labs PCIe host bridge binding Jonathan Chocron
2019-08-21 15:47 ` Jonathan Chocron
2019-08-22 11:15 ` Andrew Murray
2019-08-27 18:53 ` Rob Herring
2019-08-27 18:53 ` Rob Herring
2019-08-21 15:47 ` [PATCH v4 6/7] PCI: dwc: al: Add support for DW based driver type Jonathan Chocron
2019-08-21 15:47 ` Jonathan Chocron
2019-08-22 10:00 ` Andrew Murray
2019-08-22 15:23 ` Chocron, Jonathan
2019-08-22 15:23 ` Chocron, Jonathan
2019-08-21 15:47 ` [PATCH v4 7/7] PCI: dwc: Add validation that PCIe core is set to correct mode Jonathan Chocron
2019-08-21 15:47 ` Jonathan Chocron
2019-08-22 11:13 ` Andrew Murray
2019-08-22 16:30 ` Chocron, Jonathan
2019-08-22 16:30 ` Chocron, Jonathan
2019-08-27 9:48 ` Andrew Murray
2019-08-27 9:48 ` Andrew Murray
2019-09-04 13:40 ` Chocron, Jonathan
2019-09-04 13:40 ` Chocron, Jonathan
2019-09-02 9:58 ` [PATCH v4 0/7] Amazon's Annapurna Labs DT-based PCIe host controller driver Lorenzo Pieralisi
2019-09-04 13:41 ` Chocron, Jonathan
2019-09-04 13:41 ` Chocron, Jonathan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190821153545.17635-5-jonnyc@amazon.com \
--to=jonnyc@amazon.com \
--cc=alisaidi@amazon.com \
--cc=andrew.murray@arm.com \
--cc=barakw@amazon.com \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=dwmw@amazon.co.uk \
--cc=gustavo.pimentel@synopsys.com \
--cc=hanochu@amazon.com \
--cc=hhhawa@amazon.com \
--cc=jingoohan1@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=ronenk@amazon.com \
--cc=talel@amazon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.