static void dw_pcie_free_msi(struct dw_pcie_rp *pp)
 {
-       if (pp->msi_irq > 0)
-               irq_set_chained_handler_and_data(pp->msi_irq, NULL, NULL);
+       u32 ctrl;
+
+       for (ctrl = 0; ctrl < MAX_MSI_CTRLS; ctrl++) {
+               if (pp->msi_irq[ctrl] > 0)
+                       irq_set_chained_handler_and_data(pp->msi_irq[ctrl],
+                                                        NULL, NULL);
+       }
 
        irq_domain_remove(pp->msi_domain);
        irq_domain_remove(pp->irq_domain);
        for (ctrl = 0; ctrl < num_ctrls; ctrl++)
                pp->irq_mask[ctrl] = ~0;
 
-       if (!pp->msi_irq) {
-               pp->msi_irq = platform_get_irq_byname_optional(pdev, "msi");
-               if (pp->msi_irq < 0) {
-                       pp->msi_irq = platform_get_irq(pdev, 0);
-                       if (pp->msi_irq < 0)
-                               return pp->msi_irq;
+       if (!pp->msi_irq[0]) {
+               pp->msi_irq[0] = platform_get_irq_byname_optional(pdev, "msi");
+               if (pp->msi_irq[0] < 0) {
+                       pp->msi_irq[0] = platform_get_irq(pdev, 0);
+                       if (pp->msi_irq[0] < 0)
+                               return pp->msi_irq[0];
                }
        }
 
        if (ret)
                return ret;
 
-       if (pp->msi_irq > 0)
-               irq_set_chained_handler_and_data(pp->msi_irq,
-                                           dw_chained_msi_isr, pp);
+       for (ctrl = 0; ctrl < num_ctrls; ctrl++) {
+               if (pp->msi_irq[ctrl] > 0)
+                       irq_set_chained_handler_and_data(pp->msi_irq[ctrl],
+                                                   dw_chained_msi_isr, pp);
+       }
 
        ret = dma_set_mask(dev, DMA_BIT_MASK(32));
        if (ret)
 
 
        disable_irq(pcie->pci.pp.irq);
        if (IS_ENABLED(CONFIG_PCI_MSI))
-               disable_irq(pcie->pci.pp.msi_irq);
+               disable_irq(pcie->pci.pp.msi_irq[0]);
 
        tegra194_pcie_pme_turnoff(pcie);
        tegra_pcie_unconfig_controller(pcie);