[PATCH 06/13] PCI, powerpc: Register busn_res for root buses
Bjorn Helgaas
bhelgaas at google.com
Tue Jan 31 02:44:04 EST 2012
On Fri, Jan 27, 2012 at 6:49 PM, Yinghai Lu <yinghai at kernel.org> wrote:
> Signed-off-by: Yinghai Lu <yinghai at kernel.org>
> Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> Cc: Paul Mackerras <paulus at samba.org>
> Cc: linuxppc-dev at lists.ozlabs.org
> ---
> arch/powerpc/kernel/pci-common.c | 7 ++++++-
> 1 files changed, 6 insertions(+), 1 deletions(-)
>
> diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
> index cce98d7..501f29b 100644
> --- a/arch/powerpc/kernel/pci-common.c
> +++ b/arch/powerpc/kernel/pci-common.c
> @@ -1732,6 +1732,8 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
> bus->secondary = hose->first_busno;
> hose->bus = bus;
>
> + pci_bus_insert_busn_res(bus, hose->first_busno, hose->last_busno);
The pci_create_root_bus() call is a few lines above this. So this is
a case of "create the root bus" followed by "fix something that's
wrong with the bus we just created." I'm trying to get rid of that
pattern because it's just an opportunity for bugs. I'd rather create
the root bus with all the information it needs up front.
And pci_bus_insert_busn_res() is not really architecture-specific, so
I'd like this better if that call were done in the PCI core somewhere.
> /* Get probe mode and perform scan */
> mode = PCI_PROBE_NORMAL;
> if (node && ppc_md.pci_probe_mode)
> @@ -1742,8 +1744,11 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
> of_scan_bus(node, bus);
> }
>
> - if (mode == PCI_PROBE_NORMAL)
> + if (mode == PCI_PROBE_NORMAL) {
> + pci_bus_update_busn_res_end(bus, 255);
> hose->last_busno = bus->subordinate = pci_scan_child_bus(bus);
> + pci_bus_update_busn_res_end(bus, bus->subordinate);
> + }
>
> /* Platform gets a chance to do some global fixups before
> * we proceed to resource allocation
> --
> 1.7.7
>
More information about the Linuxppc-dev
mailing list