[+cc Lorenzo, Tanmay] On Tue, Nov 21, 2017 at 05:45:16PM +0530, Subrahmanya Lingappa wrote: > On Fri, Nov 10, 2017 at 5:13 AM, Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote: > > On Thu, Nov 09, 2017 at 05:33:03PM +0530, subrahmanya_lingappa wrote: > >> + /* create the PCIe root bus */ > >> + bus = > >> + pci_create_root_bus(&pdev->dev, 0, &mobiveil_pcie_ops, pcie, &res); > >> + if (!bus) > >> + return -ENOMEM; > >> + > >> + /* setup MSI, if enabled */ > >> + if (IS_ENABLED(CONFIG_PCI_MSI)) { > >> + mobiveil_pcie_msi_chip.dev = &pcie->pdev->dev; > >> + bus->msi = &mobiveil_pcie_msi_chip; > >> + } > >> + > >> + /* setup the kernel resources for the newly added PCIe root bus */ > >> + pci_scan_child_bus(bus); > > > > Use pci_scan_root_bus_bridge(). For example, see > > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=123db533072e > > > >> + pci_assign_unassigned_bus_resources(bus); > >> + > >> + list_for_each_entry(child, &bus->children, node) > >> + pcie_bus_configure_settings(child); > >> + > >> + pci_fixup_irqs(pci_common_swizzle, of_irq_parse_and_map_pci); > > > > pci_scan_root_bus_bridge() also takes care of this pci_fixup_irqs() > > (which doesn't exist anymore); see > > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6ab380957838 > > > I am testing this driver on a board whcih supports Xilinx's latest > Petalinux build environment has Linux-4.9 kernel version with all > the patches from Xilinx included in it. But these > pci_scan_root_bus_bridge() and friends we added in recent versions > will it be ok keeping pci_scan_child_bus() for now ? I would strongly prefer to use pci_scan_root_bus_bridge(). As I mentioned, pci_fixup_irqs() doesn't even exist upstream anymore, so this can't be merged as-is. BTW, Lorenzo, it looks like 9af275be15f7 ("PCI: xgene: Convert PCI scan API to pci_scan_root_bus_bridge()") forgot to remove the pci_scan_child_bus() call from xgene_pcie_probe(). Bjorn