Re: [PATCH -v11 00/30] PCI: allocate pci bus num range for unassignedbridge busn

From: Bjorn Helgaas
Date: Wed May 02 2012 - 17:22:23 EST


On Sun, Mar 18, 2012 at 11:42 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote:
> Set up iobusn_resource tree, and register bus number range to it.
> Later when need to find bus range, will try to allocate from the tree
>
> Need to test on arches other than x86. esp for ia64 and powerpc that support
>  more than on peer root buses.
>
> The patches need to apply to linux v3.3 + pci-next and
>        [PATCH -v3] PCI: pci_host_bridge related cleanup
>
> could be found at:
>        git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git for-pci-busn-alloc

I started merging this series, but I didn't get very far. I stopped
at the "resources: Add probe_resource()" patch because I don't think
that interface makes sense yet. My work-in-progress is at
git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git on the
topic/yinghai-busn-alloc branch.

I *could* merge that branch, but I don't think they fix anything (that
would come in the later patches), and there are still some issues in
my mind.

- I think we really want a [bus 00-ff] resource for each *domain*,
with each host bridge in the domain requesting part of that range. I
think these patches only track bus number usage within each host
bridge, and I'm not sure there's any place we would detect conflicts
between host bridges.

- I think I made a mistake in the pci_create_root_bus() and
pci_scan_root_bus() interfaces. They currently take a bus number and
a list of resources, and we expect the arch to include the bus number
aperture in the list. The bus number argument should have been
replaced with a bus number aperture resource. The bus number aperture
is essential, while the MMIO/IO aperture list may be empty. And it's
stupid to pass both the starting bus number and a bus resource that
contains the starting bus number. Fixing this would make some of
these patches quite a bit simpler.

- In some of the arches (sparc, powerpc), you added a bus number
resource right next to existing first_busno, last_busno fields. So
now that data lives two places, which will bite us later.

Bjorn


> Yinghai Lu (30):
>  x86, PCI: Add print all root info for not using _CRS path
>  x86, PCI: Allocate temp range array in amd_bus pci_root_info probing
>  x86, PCI: Merge pcibios_scan_root and pci_scan_bus_on_node
>  PCI: Add busn_res into struct pci_bus.
>  PCI: Add busn_res operation functions
>  PCI: Release busn_res when removing bus
>  PCI: Insert busn_res in pci_create_root_bus()
>  PCI: Checking busn_res in pci_scan_root_bus()
>  PCI: Add default busn_resource
>  PCI: Add default busn_res for pci_scan_bus()
>  x86, PCI: Add busn_res into resources list for acpi path
>  x86, PCI: Put busn resource in pci_root_info for not using _CRS path
>  PCI, ia64: Register busn_res for root buses
>  PCI, sparc: Register busn_res for root buses
>  PCI, powerpc: Register busn_res for root buses
>  PCI, parisc: Register busn_res for root buses
>  resources: Add probe_resource()
>  resources: Replace registered resource in tree.
>  PCI: Add pci_bus_extend/shrink_top()
>  PCI: Probe safe range that we can use for unassigned bridge.
>  PCI: Add pci_bus_replace_busn_res()
>  PCI: Allocate bus range instead of use max blindly
>  PCI: Strict checking of valid range for bridge
>  PCI: Kill pci_fixup_parent_subordinate_busnr()
>  PCI: Seperate child bus scanning to two passes overall
>  pcmcia: Remove workaround for fixing pci parent bus subordinate
>  PCI: Double checking setting for bus register and bus struct.
>  PCI, pciehp: Remove not needed bus number range checking
>  PCI: More strict checking of valid range for bridge
>  PCI: Don't shrink too much for hotplug bridge
>
>  arch/ia64/pci/pci.c                   |    2 +
>  arch/powerpc/include/asm/pci-bridge.h |    1 +
>  arch/powerpc/kernel/pci-common.c      |   10 +-
>  arch/sparc/kernel/pci.c               |    4 +
>  arch/sparc/kernel/pci_impl.h          |    1 +
>  arch/x86/pci/acpi.c                   |   11 +-
>  arch/x86/pci/amd_bus.c                |   14 +-
>  arch/x86/pci/bus_numa.c               |   30 ++-
>  arch/x86/pci/bus_numa.h               |    4 +-
>  arch/x86/pci/common.c                 |   27 +--
>  drivers/parisc/dino.c                 |    5 +
>  drivers/parisc/lba_pci.c              |    3 +
>  drivers/pci/hotplug/pciehp_pci.c      |   12 +-
>  drivers/pci/probe.c                   |  439 +++++++++++++++++++++++++++------
>  drivers/pci/remove.c                  |    1 +
>  drivers/pcmcia/yenta_socket.c         |   75 ------
>  include/linux/ioport.h                |    8 +
>  include/linux/pci.h                   |    6 +
>  kernel/resource.c                     |  175 +++++++++++++-
>  19 files changed, 613 insertions(+), 215 deletions(-)
>
> --
> 1.7.7
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/