Message ID | 1416382369-13587-4-git-send-email-wangyijing@huawei.com |
---|---|
State | New |
Headers | show |
On 2014/11/19 20:28, Arnd Bergmann wrote: > On Wednesday 19 November 2014 15:32:47 Yijing Wang wrote: >> Use pci_scan_bus_simple() to scan pci buses with >> the default IO/MEM/BUS resources. Use it instead >> of pci_scan_bus() and pci_scan_bus_parented(). >> >> Signed-off-by: Yijing Wang <wangyijing@huawei.com> >> > > I think we should replace pci_scan_bus_parented() with something better > by making the xen code use pci_scan_root_bus() (see below for a draft > patch). After that we no longer need the 'parent' argument here and we > can just keep using the pci_scan_bus() function for the legacy users, > or rename it if that helps. It make sense to me, and we could rename pci_scan_bus() to pci_scan_bus_legacy(). Thanks, I will add this to my series, > > Arnd > > > 8<--- > > diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c > index 116ca3746adb..45a4843a608a 100644 > --- a/drivers/pci/xen-pcifront.c > +++ b/drivers/pci/xen-pcifront.c > @@ -448,6 +448,7 @@ static int pcifront_scan_root(struct pcifront_device *pdev, > struct pci_bus *b; > struct pcifront_sd *sd = NULL; > struct pci_bus_entry *bus_entry = NULL; > + LIST_HEAD(resources); > int err = 0; > > #ifndef CONFIG_PCI_DOMAINS > @@ -470,17 +471,20 @@ static int pcifront_scan_root(struct pcifront_device *pdev, > err = -ENOMEM; > goto err_out; > } > + pci_add_resource(&resources, &ioport_resource); > + pci_add_resource(&resources, &iomem_resource); > pcifront_init_sd(sd, domain, bus, pdev); > > pci_lock_rescan_remove(); > > - b = pci_scan_bus_parented(&pdev->xdev->dev, bus, > - &pcifront_bus_ops, sd); > + b = pci_scan_root_bus(&pdev->xdev->dev, bus, &pcifront_bus_ops, sd, > + &resources); > if (!b) { > dev_err(&pdev->xdev->dev, > "Error creating PCI Frontend Bus!\n"); > err = -ENOMEM; > pci_unlock_rescan_remove(); > + pci_free_resource_list(&resources); > goto err_out; > } > > > > . >
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c index 4ae4a40..a4f190b 100644 --- a/arch/alpha/kernel/sys_nautilus.c +++ b/arch/alpha/kernel/sys_nautilus.c @@ -206,7 +206,7 @@ nautilus_init_pci(void) unsigned long memtop = max_low_pfn << PAGE_SHIFT; /* Scan our single hose. */ - bus = pci_scan_bus(0, alpha_mv.pci_ops, hose); + bus = pci_scan_bus_simple(NULL, 0, alpha_mv.pci_ops, hose); hose->bus = bus; pcibios_claim_one_bus(bus); diff --git a/arch/m68k/coldfire/pci.c b/arch/m68k/coldfire/pci.c index d45f087..9f423d5 100644 --- a/arch/m68k/coldfire/pci.c +++ b/arch/m68k/coldfire/pci.c @@ -312,7 +312,7 @@ static int __init mcf_pci_init(void) set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(msecs_to_jiffies(200)); - rootbus = pci_scan_bus(0, &mcf_pci_ops, NULL); + rootbus = pci_scan_bus_simple(NULL, 0, &mcf_pci_ops, NULL); rootbus->resource[0] = &mcf_pci_io; rootbus->resource[1] = &mcf_pci_mem; diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index 7a82fe2..9665e03 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c @@ -390,7 +390,8 @@ static void __init pcic_pbm_scan_bus(struct linux_pcic *pcic) { struct linux_pbm_info *pbm = &pcic->pbm; - pbm->pci_bus = pci_scan_bus(pbm->pci_first_busno, &pcic_ops, pbm); + pbm->pci_bus = pci_scan_bus_simple(NULL, + pbm->pci_first_busno, &pcic_ops, pbm); if (pbm->pci_bus) pci_bus_add_devices(pbm->pci_bus); #if 0 /* deadwood transplanted from sparc64 */ diff --git a/arch/unicore32/kernel/pci.c b/arch/unicore32/kernel/pci.c index 3d82024..f290a3d 100644 --- a/arch/unicore32/kernel/pci.c +++ b/arch/unicore32/kernel/pci.c @@ -258,8 +258,8 @@ static int __init pci_common_init(void) pci_puv3_preinit(); - puv3_bus = pci_scan_bus(0, &pci_puv3_ops, NULL); - + puv3_bus = pci_scan_bus_simple(NULL, 0, + &pci_puv3_ops, NULL); if (!puv3_bus) panic("PCI: unable to scan bus!"); diff --git a/drivers/pci/hotplug/ibmphp_core.c b/drivers/pci/hotplug/ibmphp_core.c index db0f2e8..9190cb1 100644 --- a/drivers/pci/hotplug/ibmphp_core.c +++ b/drivers/pci/hotplug/ibmphp_core.c @@ -767,7 +767,8 @@ static u8 bus_structure_fixup(u8 busno) (l != 0x0000) && (l != 0xffff)) { debug("%s - Inside bus_structure_fixup()\n", __func__); - b = pci_scan_bus(busno, ibmphp_pci_bus->ops, NULL); + b = pci_scan_bus_simple(NULL, busno, + ibmphp_pci_bus->ops, NULL); if (b) pci_bus_add_devices(b); break; diff --git a/drivers/pci/xen-pcifront.c b/drivers/pci/xen-pcifront.c index b1ffebe..364aaf4 100644 --- a/drivers/pci/xen-pcifront.c +++ b/drivers/pci/xen-pcifront.c @@ -474,7 +474,7 @@ static int pcifront_scan_root(struct pcifront_device *pdev, pci_lock_rescan_remove(); - b = pci_scan_bus_parented(&pdev->xdev->dev, bus, + b = pci_scan_bus_simple(&pdev->xdev->dev, bus, &pcifront_bus_ops, sd); if (!b) { dev_err(&pdev->xdev->dev, diff --git a/include/linux/pci.h b/include/linux/pci.h index 90a5fde..befefbd 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -769,6 +769,8 @@ struct pci_bus *pci_find_bus(int domain, int busnr); void pci_bus_add_devices(const struct pci_bus *bus); struct pci_bus *pci_scan_bus_parented(struct device *parent, int bus, struct pci_ops *ops, void *sysdata); +struct pci_bus *pci_scan_bus_simple(struct device *parent, int bus, + struct pci_ops *ops, void *sysdata); struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata); struct pci_bus *pci_create_root_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata,
Use pci_scan_bus_simple() to scan pci buses with the default IO/MEM/BUS resources. Use it instead of pci_scan_bus() and pci_scan_bus_parented(). Signed-off-by: Yijing Wang <wangyijing@huawei.com> --- arch/alpha/kernel/sys_nautilus.c | 2 +- arch/m68k/coldfire/pci.c | 2 +- arch/sparc/kernel/pcic.c | 3 ++- arch/unicore32/kernel/pci.c | 4 ++-- drivers/pci/hotplug/ibmphp_core.c | 3 ++- drivers/pci/xen-pcifront.c | 2 +- include/linux/pci.h | 2 ++ 7 files changed, 11 insertions(+), 7 deletions(-)