On Fri, Dec 08, 2017 at 06:26:34PM +0000, Lorenzo Pieralisi wrote: [...] > > +static int mobiveil_pcie_init_irq_domain(struct mobiveil_pcie *pcie) > > +{ > > + struct device *dev = &pcie->pdev->dev; > > + struct device_node *node = dev->of_node; > > + > > + /* setup INTx */ > > + pcie->intx_domain = > > + irq_domain_add_linear(node, PCI_NUM_INTX + 1, &intx_domain_ops, > > + pcie); > > + > > + if (!pcie->intx_domain) { > > + dev_err(dev, "Failed to get a INTx IRQ domain\n"); > > + return -ENODEV; > > + } > > + /* setup MSI */ > > + if (IS_ENABLED(CONFIG_PCI_MSI)) { > > + pcie->msi_domain = > > + irq_domain_add_linear(node, > > + PCI_NUM_MSI, > > + &msi_domain_ops, > > + &pcie->msi_chip); > > + if (!pcie->msi_domain) { > > + dev_err(dev, "Failed to get a MSI IRQ domain\n"); > > + return -ENODEV; > > + } > > + > > + mobiveil_pcie_enable_msi(pcie); > > You need to rewrite the MSI support - I will review it then, see above. Actually it would be good to split MSI support in a separate patch, to simplify the review. Thanks, Lorenzo