[PATCH] PCI: qcom: Skip DWC MSI host initialization when msi-map is present

From: Ayiluri Naga Rashmi

Date: Thu Sep 17 2026 - 07:13:52 EST


qcom_pcie_ecam_host_init() unconditionally initializes the DesignWare
internal MSI controller and sets use_imsi_rx, irrespective of whether an
external MSI controller is described for the host bridge. When an msi-map
property is present, MSI interrupts are handled by the mapped external
MSI controller. Initializing the internal iMSI-RX domain in this case is
unnecessary.

Set use_imsi_rx based on the presence of msi-map and initialize the
DesignWare MSI host only when iMSI-RX is required.

Signed-off-by: Ayiluri Naga Rashmi <ayiluri.rashmi@xxxxxxxxxxxxxxxx>
---
drivers/pci/controller/dwc/pcie-qcom.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index ee63a6ec99de..b65852c32a55 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -1981,11 +1981,13 @@ static int qcom_pcie_ecam_host_init(struct pci_config_window *cfg)
*/
raw_spin_lock_init(&pp->lock);

- ret = dw_pcie_msi_host_init(pp);
- if (ret)
- return ret;
+ pp->use_imsi_rx = !pci_host_of_has_msi_map(dev);
+ if (pp->use_imsi_rx) {
+ ret = dw_pcie_msi_host_init(pp);
+ if (ret)
+ return ret;
+ }

- pp->use_imsi_rx = true;
dw_pcie_msi_init(pp);

return devm_add_action_or_reset(dev, qcom_pci_free_msi, pp);

---
base-commit: 0d9d0dbf2fddcff5859d623e90ca73c4054276e1
change-id: 20260917-skipmsi_forlpi-d9c486a1a04c

Best regards,
--
Ayiluri Naga Rashmi <ayiluri.rashmi@xxxxxxxxxxxxxxxx>