123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- From 26a3cdb73644090ff9a2fb68775ef61d361a8883 Mon Sep 17 00:00:00 2001
- From: Lucas Stach <[email protected]>
- 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 <[email protected]>
- Signed-off-by: Lucas Stach <[email protected]>
- Signed-off-by: Lorenzo Pieralisi <[email protected]>
- Acked-by: Gustavo Pimentel <[email protected]>
- Cc: [email protected]
- Signed-off-by: Greg Kroah-Hartman <[email protected]>
- ---
- 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
|