From a67716078b5a172e8c9f43bcc66cec8bafc40637 Mon Sep 17 00:00:00 2001 From: Ayiluri Naga Rashmi Date: Thu, 17 Sep 2026 16:43:28 +0530 Subject: [PATCH] PCI: qcom: Skip DWC MSI host initialization when DT 'msi-map' is present 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' DT 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' in DT and initialize the DesignWare MSI host only when iMSI-RX is required. Signed-off-by: Ayiluri Naga Rashmi Signed-off-by: Manivannan Sadhasivam Signed-off-by: Bjorn Helgaas Link: https://patch.msgid.link/20260917-skipmsi_forlpi-v1-1-14a4932a4311@oss.qualcomm.com --- 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 18c96ed96f56..5cc0925b948d 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -2022,11 +2022,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);