aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/generic/backport-4.19/030-PCI-dwc-skip-MSI-init-if-MSIs-have-been-explicitly-d.patch48
-rw-r--r--target/linux/imx6/config-4.192
2 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/generic/backport-4.19/030-PCI-dwc-skip-MSI-init-if-MSIs-have-been-explicitly-d.patch b/target/linux/generic/backport-4.19/030-PCI-dwc-skip-MSI-init-if-MSIs-have-been-explicitly-d.patch
new file mode 100644
index 0000000000..d87dfd26ef
--- /dev/null
+++ b/target/linux/generic/backport-4.19/030-PCI-dwc-skip-MSI-init-if-MSIs-have-been-explicitly-d.patch
@@ -0,0 +1,48 @@
+From 26a3cdb73644090ff9a2fb68775ef61d361a8883 Mon Sep 17 00:00:00 2001
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Wed, 27 Feb 2019 17:52:19 +0100
+Subject: [PATCH] PCI: dwc: skip MSI init if MSIs have been explicitly disabled
+
+commit 3afc8299f39a27b60e1519a28e18878ce878e7dd upstream.
+
+Since 7c5925afbc58 (PCI: dwc: Move MSI IRQs allocation to IRQ domains
+hierarchical API) the MSI init claims one of the controller IRQs as a
+chained IRQ line for the MSI controller. On some designs, like the i.MX6,
+this line is shared with a PCIe legacy IRQ. When the line is claimed for
+the MSI domain, any device trying to use this legacy IRQs will fail to
+request this IRQ line.
+
+As MSI and legacy IRQs are already mutually exclusive on the DWC core,
+as the core won't forward any legacy IRQs once any MSI has been enabled,
+users wishing to use legacy IRQs already need to explictly disable MSI
+support (usually via the pci=nomsi kernel commandline option). To avoid
+any issues with MSI conflicting with legacy IRQs, just skip all of the
+DWC MSI initalization, including the IRQ line claim, when MSI is disabled.
+
+Fixes: 7c5925afbc58 ("PCI: dwc: Move MSI IRQs allocation to IRQ domains hierarchical API")
+Tested-by: Tim Harvey <tharvey@gateworks.com>
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/controller/dwc/pcie-designware-host.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
+index 0fa9e8fdce66..b56e22262a77 100644
+--- a/drivers/pci/controller/dwc/pcie-designware-host.c
++++ b/drivers/pci/controller/dwc/pcie-designware-host.c
+@@ -439,7 +439,7 @@ int dw_pcie_host_init(struct pcie_port *pp)
+ if (ret)
+ pci->num_viewport = 2;
+
+- if (IS_ENABLED(CONFIG_PCI_MSI)) {
++ if (IS_ENABLED(CONFIG_PCI_MSI) && pci_msi_enabled()) {
+ /*
+ * If a specific SoC driver needs to change the
+ * default number of vectors, it needs to implement
+--
+2.17.1
+
diff --git a/target/linux/imx6/config-4.19 b/target/linux/imx6/config-4.19
index 3ff2d902cb..9fada9a01a 100644
--- a/target/linux/imx6/config-4.19
+++ b/target/linux/imx6/config-4.19
@@ -65,6 +65,8 @@ CONFIG_CLKSRC_IMX_GPT=y
CONFIG_CLKSRC_MMIO=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CLZ_TAB=y
+CONFIG_CMDLINE="pci=nomsi"
+CONFIG_CMDLINE_EXTEND=y
CONFIG_COMMON_CLK=y
CONFIG_CPUFREQ_DT=y
CONFIG_CPUFREQ_DT_PLATDEV=y