Re: [PATCH v10 00/29] Refine PCI scan interfaces and make generic pci host bridge

2015-04-27 Thread Yijing Wang
On 2015/4/27 12:09, Daniel Axtens wrote:
> Hi Yijing,
> 
> I'm wondering if you might get some more momentum on these changes if
> we could split them into a few smaller patch sets. I think we might
> then be able to start getting bits of this in for 4.2, which should help
> with getting the rest of it in.

Yes, I think this is a good idea, the whole series maybe a bit heavy,
split it to several parts make it easier for folks to review and test the 
patchset.

> 
> I think there are a few things that would be easy to pull out.
> 
>   * #1 (xen/PCI: Don't use deprecated function
>  pci_scan_bus_parented()) can go directly to Xen people and should
>  be easy to merge. #2 (PCI: Remove deprecated
>  pci_scan_bus_parented()) is then an easy fixup.

I will poke Konrad to try to get some feedback.

> 
>   * I think #12 (powerpc/PCI: Rename pcibios_root_bridge_prepare() to
> pcibios_set_root_bus_speed()) could go to the PowerPC folks
> individually. I'm not sure, however, that it's worth renaming it
> and creating another function and another hook when no other arch
> uses it. If mpe and benh don't want to pick it up, it'd be pretty
> easy to take out set_root_bus_speed from the host_bridge_ops
> struct, and this way we can still advance other parts of the
> series.
> 
>   * #16 (PCI: Introduce pci_bus_child_max_busnr()) is self-contained
>  and already has a user, so that should go in easily.
> 
>   * The domain/bus numbering cleanup stuff could be broken out:
> #3  (PCI: Save domain in pci_host_bridge)
> #4  (PCI: Move pci_bus_assign_domain_nr() declaration into
> drivers/pci/pci.h)
> #8  (PCI: Introduce pci_host_assign_domain_nr() to assign domain),
> #28 (PCI: Remove platform specific pci_domain_nr())
> #29 (PCI: Remove pci_bus_assign_domain_nr())
> 

The domain number related changes could be pulled out first, in this part,
try to remove arch spec pci_domain_nr().

> 
> 
> I've done a bunch of rebasing and compiles to try to make sure all of
> these proposed divisions work and there are no dependencies that I've
> missed. It it's helpful, you can see what I've done at
> https://github.com/daxtens/linux in the YijingWang-enumer10
> branch. Feel free to use it as you wish.
> 
> I think the remaining 20 patches could probably be split again at least
> once - it looks like the bus/bus numbering stuff might be easy to split
> out? I might have a look again in a few days.

Hi Daniel, thanks very much!
I will try to reorganize these patches in two days.

Thanks!
Yijing.

> 
> Regards,
> Daniel
> 
> My final set of series, using your original patch names:
> 
> Set 1 (Xen cleanup):
>   xen/PCI: Don't use deprecated function pci_scan_bus_parented()
>   PCI: Remove deprecated pci_scan_bus_parented()
> 
> Set 2 (PowerPC cleanup):
>   powerpc/PCI: Rename pcibios_root_bridge_prepare() to
> pcibios_set_root_bus_speed()
> 
> Set 3: (could possibly be merged with set 4)
>   PCI: Introduce pci_bus_child_max_busnr()
> 
> Set 4: (_nr and friends)
>   PCI: Save domain in pci_host_bridge
>   PCI: Move pci_bus_assign_domain_nr() declaration into
>drivers/pci/pci.h
>   PCI: Introduce pci_host_assign_domain_nr() to assign domain
>   PCI: Remove platform specific pci_domain_nr()
>   PCI: Remove pci_bus_assign_domain_nr()
> 
> Remainder:
>   PCI: Remove argument bus for pci_create_root_bus()
>   PCI: Alloc busn resource dynamically for pci_scan_bus()
>   PCI: Allocate busn resource for pci_scan_root_bus()
>   PCI: Separate pci_host_bridge creation out of pci_create_root_bus()
>   PCI: Introduce pci_host_bridge_list to manage host bridges
>   PCI: Save sysdata in pci_host_bridge drvdata  
>   PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
>   PCI: Introduce pci_host_bridge_ops to support host specific
> operations
>   PCI: Introduce new scan function pci_scan_host_bridge()
>   x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
>   ia64/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
>   powerpc/pci: Use pci_scan_host_bridge() for simplicity
>   PCI: Remove pcibios_root_bridge_prepare() and
> pcibos_set_root_bus_speed()
>   sparc/PCI: Use pci_scan_host_bridge() for simplicity
>   parisc/PCI: Use pci_scan_root_bus() for simplicity
>   PCI/mvebu: Use pci_common_init_dev() to simplify code
>   PCI/tegra: Remove redundant tegra_pcie_scan_bus()
>   PCI/designware: Use pci_scan_root_bus() for simplicity
>   PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus()
>   PCI: Rename __pci_create_root_bus() to pci_create_root_bus()
> 
> On Tue, 2015-04-21 at 19:34 +0800, Yijing Wang wrote:
>> This series could be pulled from:
>> https://github.com/YijingWang/linux-pci.git enumer10
>>
>> v9->v10:
>>  Dynamically allocate busn resource if callers don't supply.
>>  Try to adjust busn resource if host bridge busn resource conlict.
>>  Rebase whole series on Bjorn's latest pci-next branch.
>>  

Re: [PATCH v10 00/29] Refine PCI scan interfaces and make generic pci host bridge

2015-04-27 Thread Yijing Wang
On 2015/4/27 12:09, Daniel Axtens wrote:
 Hi Yijing,
 
 I'm wondering if you might get some more momentum on these changes if
 we could split them into a few smaller patch sets. I think we might
 then be able to start getting bits of this in for 4.2, which should help
 with getting the rest of it in.

Yes, I think this is a good idea, the whole series maybe a bit heavy,
split it to several parts make it easier for folks to review and test the 
patchset.

 
 I think there are a few things that would be easy to pull out.
 
   * #1 (xen/PCI: Don't use deprecated function
  pci_scan_bus_parented()) can go directly to Xen people and should
  be easy to merge. #2 (PCI: Remove deprecated
  pci_scan_bus_parented()) is then an easy fixup.

I will poke Konrad to try to get some feedback.

 
   * I think #12 (powerpc/PCI: Rename pcibios_root_bridge_prepare() to
 pcibios_set_root_bus_speed()) could go to the PowerPC folks
 individually. I'm not sure, however, that it's worth renaming it
 and creating another function and another hook when no other arch
 uses it. If mpe and benh don't want to pick it up, it'd be pretty
 easy to take out set_root_bus_speed from the host_bridge_ops
 struct, and this way we can still advance other parts of the
 series.
 
   * #16 (PCI: Introduce pci_bus_child_max_busnr()) is self-contained
  and already has a user, so that should go in easily.
 
   * The domain/bus numbering cleanup stuff could be broken out:
 #3  (PCI: Save domain in pci_host_bridge)
 #4  (PCI: Move pci_bus_assign_domain_nr() declaration into
 drivers/pci/pci.h)
 #8  (PCI: Introduce pci_host_assign_domain_nr() to assign domain),
 #28 (PCI: Remove platform specific pci_domain_nr())
 #29 (PCI: Remove pci_bus_assign_domain_nr())
 

The domain number related changes could be pulled out first, in this part,
try to remove arch spec pci_domain_nr().

 
 
 I've done a bunch of rebasing and compiles to try to make sure all of
 these proposed divisions work and there are no dependencies that I've
 missed. It it's helpful, you can see what I've done at
 https://github.com/daxtens/linux in the YijingWang-enumer10
 branch. Feel free to use it as you wish.
 
 I think the remaining 20 patches could probably be split again at least
 once - it looks like the bus/bus numbering stuff might be easy to split
 out? I might have a look again in a few days.

Hi Daniel, thanks very much!
I will try to reorganize these patches in two days.

Thanks!
Yijing.

 
 Regards,
 Daniel
 
 My final set of series, using your original patch names:
 
 Set 1 (Xen cleanup):
   xen/PCI: Don't use deprecated function pci_scan_bus_parented()
   PCI: Remove deprecated pci_scan_bus_parented()
 
 Set 2 (PowerPC cleanup):
   powerpc/PCI: Rename pcibios_root_bridge_prepare() to
 pcibios_set_root_bus_speed()
 
 Set 3: (could possibly be merged with set 4)
   PCI: Introduce pci_bus_child_max_busnr()
 
 Set 4: (_nr and friends)
   PCI: Save domain in pci_host_bridge
   PCI: Move pci_bus_assign_domain_nr() declaration into
drivers/pci/pci.h
   PCI: Introduce pci_host_assign_domain_nr() to assign domain
   PCI: Remove platform specific pci_domain_nr()
   PCI: Remove pci_bus_assign_domain_nr()
 
 Remainder:
   PCI: Remove argument bus for pci_create_root_bus()
   PCI: Alloc busn resource dynamically for pci_scan_bus()
   PCI: Allocate busn resource for pci_scan_root_bus()
   PCI: Separate pci_host_bridge creation out of pci_create_root_bus()
   PCI: Introduce pci_host_bridge_list to manage host bridges
   PCI: Save sysdata in pci_host_bridge drvdata  
   PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
   PCI: Introduce pci_host_bridge_ops to support host specific
 operations
   PCI: Introduce new scan function pci_scan_host_bridge()
   x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
   ia64/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
   powerpc/pci: Use pci_scan_host_bridge() for simplicity
   PCI: Remove pcibios_root_bridge_prepare() and
 pcibos_set_root_bus_speed()
   sparc/PCI: Use pci_scan_host_bridge() for simplicity
   parisc/PCI: Use pci_scan_root_bus() for simplicity
   PCI/mvebu: Use pci_common_init_dev() to simplify code
   PCI/tegra: Remove redundant tegra_pcie_scan_bus()
   PCI/designware: Use pci_scan_root_bus() for simplicity
   PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus()
   PCI: Rename __pci_create_root_bus() to pci_create_root_bus()
 
 On Tue, 2015-04-21 at 19:34 +0800, Yijing Wang wrote:
 This series could be pulled from:
 https://github.com/YijingWang/linux-pci.git enumer10

 v9-v10:
  Dynamically allocate busn resource if callers don't supply.
  Try to adjust busn resource if host bridge busn resource conlict.
  Rebase whole series on Bjorn's latest pci-next branch.
  Major v9-v10 changes are in patch 5,6,7,10.
 v8-v9:
  Add Thierry's Acked-by and Tested-by.
  Fix the 

Re: [PATCH v10 00/29] Refine PCI scan interfaces and make generic pci host bridge

2015-04-26 Thread Daniel Axtens
Hi Yijing,

I'm wondering if you might get some more momentum on these changes if
we could split them into a few smaller patch sets. I think we might
then be able to start getting bits of this in for 4.2, which should help
with getting the rest of it in.

I think there are a few things that would be easy to pull out.

  * #1 (xen/PCI: Don't use deprecated function
 pci_scan_bus_parented()) can go directly to Xen people and should
 be easy to merge. #2 (PCI: Remove deprecated
 pci_scan_bus_parented()) is then an easy fixup.

  * I think #12 (powerpc/PCI: Rename pcibios_root_bridge_prepare() to
pcibios_set_root_bus_speed()) could go to the PowerPC folks
individually. I'm not sure, however, that it's worth renaming it
and creating another function and another hook when no other arch
uses it. If mpe and benh don't want to pick it up, it'd be pretty
easy to take out set_root_bus_speed from the host_bridge_ops
struct, and this way we can still advance other parts of the
series.

  * #16 (PCI: Introduce pci_bus_child_max_busnr()) is self-contained
 and already has a user, so that should go in easily.

  * The domain/bus numbering cleanup stuff could be broken out:
#3  (PCI: Save domain in pci_host_bridge)
#4  (PCI: Move pci_bus_assign_domain_nr() declaration into
drivers/pci/pci.h)
#8  (PCI: Introduce pci_host_assign_domain_nr() to assign domain),
#28 (PCI: Remove platform specific pci_domain_nr())
#29 (PCI: Remove pci_bus_assign_domain_nr())



I've done a bunch of rebasing and compiles to try to make sure all of
these proposed divisions work and there are no dependencies that I've
missed. It it's helpful, you can see what I've done at
https://github.com/daxtens/linux in the YijingWang-enumer10
branch. Feel free to use it as you wish.

I think the remaining 20 patches could probably be split again at least
once - it looks like the bus/bus numbering stuff might be easy to split
out? I might have a look again in a few days.

Regards,
Daniel

My final set of series, using your original patch names:

Set 1 (Xen cleanup):
  xen/PCI: Don't use deprecated function pci_scan_bus_parented()
  PCI: Remove deprecated pci_scan_bus_parented()

Set 2 (PowerPC cleanup):
  powerpc/PCI: Rename pcibios_root_bridge_prepare() to
pcibios_set_root_bus_speed()

Set 3: (could possibly be merged with set 4)
  PCI: Introduce pci_bus_child_max_busnr()

Set 4: (_nr and friends)
  PCI: Save domain in pci_host_bridge
  PCI: Move pci_bus_assign_domain_nr() declaration into
   drivers/pci/pci.h
  PCI: Introduce pci_host_assign_domain_nr() to assign domain
  PCI: Remove platform specific pci_domain_nr()
  PCI: Remove pci_bus_assign_domain_nr()

Remainder:
  PCI: Remove argument bus for pci_create_root_bus()
  PCI: Alloc busn resource dynamically for pci_scan_bus()
  PCI: Allocate busn resource for pci_scan_root_bus()
  PCI: Separate pci_host_bridge creation out of pci_create_root_bus()
  PCI: Introduce pci_host_bridge_list to manage host bridges
  PCI: Save sysdata in pci_host_bridge drvdata  
  PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
  PCI: Introduce pci_host_bridge_ops to support host specific
operations
  PCI: Introduce new scan function pci_scan_host_bridge()
  x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  ia64/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  powerpc/pci: Use pci_scan_host_bridge() for simplicity
  PCI: Remove pcibios_root_bridge_prepare() and
pcibos_set_root_bus_speed()
  sparc/PCI: Use pci_scan_host_bridge() for simplicity
  parisc/PCI: Use pci_scan_root_bus() for simplicity
  PCI/mvebu: Use pci_common_init_dev() to simplify code
  PCI/tegra: Remove redundant tegra_pcie_scan_bus()
  PCI/designware: Use pci_scan_root_bus() for simplicity
  PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus()
  PCI: Rename __pci_create_root_bus() to pci_create_root_bus()

On Tue, 2015-04-21 at 19:34 +0800, Yijing Wang wrote:
> This series could be pulled from:
> https://github.com/YijingWang/linux-pci.git enumer10
> 
> v9->v10:
>   Dynamically allocate busn resource if callers don't supply.
>   Try to adjust busn resource if host bridge busn resource conlict.
>   Rebase whole series on Bjorn's latest pci-next branch.
>   Major v9->v10 changes are in patch 5,6,7,10.
> v8->v9:
>   Add Thierry's Acked-by and Tested-by.
>   Fix the building error for powerpc found by Daniel.
>   Change pci_host_assign_domain_nr() to static.
> v7->v8:
>   Fix some cross building errors found by kbuild test.
>   Drop the rename patch for find_pci_host_bridge().
> v6->v7:
>   Drop previous patch which combined the domain and bus in one argument.
>   Make the pci_host_bridge hold the default busn resource, so we could
>   check whether new host busn resource is conflict with existing ones.
>   Move pci_host_assign_domain_nr() to drivers/pci/host-bridge.c
>  

Re: [PATCH v10 00/29] Refine PCI scan interfaces and make generic pci host bridge

2015-04-26 Thread Daniel Axtens
Hi Yijing,

I'm wondering if you might get some more momentum on these changes if
we could split them into a few smaller patch sets. I think we might
then be able to start getting bits of this in for 4.2, which should help
with getting the rest of it in.

I think there are a few things that would be easy to pull out.

  * #1 (xen/PCI: Don't use deprecated function
 pci_scan_bus_parented()) can go directly to Xen people and should
 be easy to merge. #2 (PCI: Remove deprecated
 pci_scan_bus_parented()) is then an easy fixup.

  * I think #12 (powerpc/PCI: Rename pcibios_root_bridge_prepare() to
pcibios_set_root_bus_speed()) could go to the PowerPC folks
individually. I'm not sure, however, that it's worth renaming it
and creating another function and another hook when no other arch
uses it. If mpe and benh don't want to pick it up, it'd be pretty
easy to take out set_root_bus_speed from the host_bridge_ops
struct, and this way we can still advance other parts of the
series.

  * #16 (PCI: Introduce pci_bus_child_max_busnr()) is self-contained
 and already has a user, so that should go in easily.

  * The domain/bus numbering cleanup stuff could be broken out:
#3  (PCI: Save domain in pci_host_bridge)
#4  (PCI: Move pci_bus_assign_domain_nr() declaration into
drivers/pci/pci.h)
#8  (PCI: Introduce pci_host_assign_domain_nr() to assign domain),
#28 (PCI: Remove platform specific pci_domain_nr())
#29 (PCI: Remove pci_bus_assign_domain_nr())



I've done a bunch of rebasing and compiles to try to make sure all of
these proposed divisions work and there are no dependencies that I've
missed. It it's helpful, you can see what I've done at
https://github.com/daxtens/linux in the YijingWang-enumer10
branch. Feel free to use it as you wish.

I think the remaining 20 patches could probably be split again at least
once - it looks like the bus/bus numbering stuff might be easy to split
out? I might have a look again in a few days.

Regards,
Daniel

My final set of series, using your original patch names:

Set 1 (Xen cleanup):
  xen/PCI: Don't use deprecated function pci_scan_bus_parented()
  PCI: Remove deprecated pci_scan_bus_parented()

Set 2 (PowerPC cleanup):
  powerpc/PCI: Rename pcibios_root_bridge_prepare() to
pcibios_set_root_bus_speed()

Set 3: (could possibly be merged with set 4)
  PCI: Introduce pci_bus_child_max_busnr()

Set 4: (_nr and friends)
  PCI: Save domain in pci_host_bridge
  PCI: Move pci_bus_assign_domain_nr() declaration into
   drivers/pci/pci.h
  PCI: Introduce pci_host_assign_domain_nr() to assign domain
  PCI: Remove platform specific pci_domain_nr()
  PCI: Remove pci_bus_assign_domain_nr()

Remainder:
  PCI: Remove argument bus for pci_create_root_bus()
  PCI: Alloc busn resource dynamically for pci_scan_bus()
  PCI: Allocate busn resource for pci_scan_root_bus()
  PCI: Separate pci_host_bridge creation out of pci_create_root_bus()
  PCI: Introduce pci_host_bridge_list to manage host bridges
  PCI: Save sysdata in pci_host_bridge drvdata  
  PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
  PCI: Introduce pci_host_bridge_ops to support host specific
operations
  PCI: Introduce new scan function pci_scan_host_bridge()
  x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  ia64/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  powerpc/pci: Use pci_scan_host_bridge() for simplicity
  PCI: Remove pcibios_root_bridge_prepare() and
pcibos_set_root_bus_speed()
  sparc/PCI: Use pci_scan_host_bridge() for simplicity
  parisc/PCI: Use pci_scan_root_bus() for simplicity
  PCI/mvebu: Use pci_common_init_dev() to simplify code
  PCI/tegra: Remove redundant tegra_pcie_scan_bus()
  PCI/designware: Use pci_scan_root_bus() for simplicity
  PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus()
  PCI: Rename __pci_create_root_bus() to pci_create_root_bus()

On Tue, 2015-04-21 at 19:34 +0800, Yijing Wang wrote:
 This series could be pulled from:
 https://github.com/YijingWang/linux-pci.git enumer10
 
 v9-v10:
   Dynamically allocate busn resource if callers don't supply.
   Try to adjust busn resource if host bridge busn resource conlict.
   Rebase whole series on Bjorn's latest pci-next branch.
   Major v9-v10 changes are in patch 5,6,7,10.
 v8-v9:
   Add Thierry's Acked-by and Tested-by.
   Fix the building error for powerpc found by Daniel.
   Change pci_host_assign_domain_nr() to static.
 v7-v8:
   Fix some cross building errors found by kbuild test.
   Drop the rename patch for find_pci_host_bridge().
 v6-v7:
   Drop previous patch which combined the domain and bus in one argument.
   Make the pci_host_bridge hold the default busn resource, so we could
   check whether new host busn resource is conflict with existing ones.
   Move pci_host_assign_domain_nr() to drivers/pci/host-bridge.c
   Other changes 

[PATCH v10 00/29] Refine PCI scan interfaces and make generic pci host bridge

2015-04-21 Thread Yijing Wang
This series could be pulled from:
https://github.com/YijingWang/linux-pci.git enumer10

v9->v10:
Dynamically allocate busn resource if callers don't supply.
Try to adjust busn resource if host bridge busn resource conlict.
Rebase whole series on Bjorn's latest pci-next branch.
Major v9->v10 changes are in patch 5,6,7,10.
v8->v9:
Add Thierry's Acked-by and Tested-by.
Fix the building error for powerpc found by Daniel.
Change pci_host_assign_domain_nr() to static.
v7->v8:
Fix some cross building errors found by kbuild test.
Drop the rename patch for find_pci_host_bridge().
v6->v7:
Drop previous patch which combined the domain and bus in one argument.
Make the pci_host_bridge hold the default busn resource, so we could
check whether new host busn resource is conflict with existing ones.
Move pci_host_assign_domain_nr() to drivers/pci/host-bridge.c
Other changes suggested by Bjorn and Suravee.
v5->v6:
Fix cross building errors found by kbuild test.
Export busn_resource to Xen pcifront driver.
v4->v5:
Fix some code style issues and rename some functions suggested by Bjorn.
Fix some code flaw(Eg. call pci_bus_add_devices() before resources claim
or lack the return checking).
v3->v4:
Fix the rebase issue.
v2->v3:
Rebase this series on v4.0-rc1.
v1->v2:
Split pci_host_bridge_list into a new patch, remove .phb_probe_mode
and rework powerpc .phb_of_scan_bus() for simpilicty suggested by
Arnd. Refresh some patch description log, and add a new patch to fix
build warning in ia64.

This series is based on Bjorn's pci/enumeration branch.
You could pull it from https://github.com/YijingWang/linux-pci.git enumer9

Now in kernel, we scan pci bus use the following ways:
1. pci_scan_bus. 
parent = NULL, default io/mem/bus resources
call pci_bus_add_devices()

2. pci_scan_bus_parented() + pci_bus_add_devices()
default io/mem/bus resources, only used by xen

3. pci_scan_root_bus() + pci_bus_add_devices()

4. pci_create_root_bus() + pci_scan_child_bus() + pci_bus_add_devices()

5. pci_create_root_bus() + xx_of_scan_bus()  +  pci_bus_add_devices()

And we have a lot of arch specific pci_domain_nr() and other platform
specific weak function like pcibios_root_bridge_prepare().

After applied this series, we have following scan interfaces:

1. pci_scan_bus() 
parent = NULL, default io/mem/bus resources.
for legacy pci scan

2. pci_scan_root_bus()
for callers provide its own parent and io/mem/bus resources
but no platform specific pci_host_bridge operations

3. pci_scan_host_bridge()
for callers provide its own parent and io/mem/bus resources



Arnd Bergmann (1):
  xen/PCI: Don't use deprecated function pci_scan_bus_parented()

Yijing Wang (28):
  PCI: Remove deprecated pci_scan_bus_parented()
  PCI: Save domain in pci_host_bridge
  PCI: Move pci_bus_assign_domain_nr() declaration into
drivers/pci/pci.h
  PCI: Remove argument bus for pci_create_root_bus()
  PCI: Alloc busn resource dynamically for pci_scan_bus()
  PCI: Allocate busn resource for pci_scan_root_bus()
  PCI: Introduce pci_host_assign_domain_nr() to assign domain
  PCI: Separate pci_host_bridge creation out of pci_create_root_bus()
  PCI: Introduce pci_host_bridge_list to manage host bridges
  PCI: Save sysdata in pci_host_bridge drvdata
  powerpc/PCI: Rename pcibios_root_bridge_prepare() to
pcibios_set_root_bus_speed()
  PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
  PCI: Introduce pci_host_bridge_ops to support host specific
operations
  PCI: Introduce new scan function pci_scan_host_bridge()
  PCI: Introduce pci_bus_child_max_busnr()
  x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  ia64/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  powerpc/pci: Use pci_scan_host_bridge() for simplicity
  PCI: Remove pcibios_root_bridge_prepare() and
pcibos_set_root_bus_speed()
  sparc/PCI: Use pci_scan_host_bridge() for simplicity
  parisc/PCI: Use pci_scan_root_bus() for simplicity
  PCI/mvebu: Use pci_common_init_dev() to simplify code
  PCI/tegra: Remove redundant tegra_pcie_scan_bus()
  PCI/designware: Use pci_scan_root_bus() for simplicity
  PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus()
  PCI: Rename __pci_create_root_bus() to pci_create_root_bus()
  PCI: Remove platform specific pci_domain_nr()
  PCI: Remove pci_bus_assign_domain_nr()

 arch/alpha/include/asm/pci.h |2 -
 arch/alpha/kernel/pci.c  |4 +-
 arch/alpha/kernel/sys_nautilus.c |2 +-
 arch/arm/kernel/bios32.c |2 +-
 arch/arm/mach-dove/pcie.c|2 +-
 arch/arm/mach-iop13xx/pci.c  |4 +-
 arch/arm/mach-mv78xx0/pcie.c |2 +-
 arch/arm/mach-orion5x/pci.c 

[PATCH v10 00/29] Refine PCI scan interfaces and make generic pci host bridge

2015-04-21 Thread Yijing Wang
This series could be pulled from:
https://github.com/YijingWang/linux-pci.git enumer10

v9-v10:
Dynamically allocate busn resource if callers don't supply.
Try to adjust busn resource if host bridge busn resource conlict.
Rebase whole series on Bjorn's latest pci-next branch.
Major v9-v10 changes are in patch 5,6,7,10.
v8-v9:
Add Thierry's Acked-by and Tested-by.
Fix the building error for powerpc found by Daniel.
Change pci_host_assign_domain_nr() to static.
v7-v8:
Fix some cross building errors found by kbuild test.
Drop the rename patch for find_pci_host_bridge().
v6-v7:
Drop previous patch which combined the domain and bus in one argument.
Make the pci_host_bridge hold the default busn resource, so we could
check whether new host busn resource is conflict with existing ones.
Move pci_host_assign_domain_nr() to drivers/pci/host-bridge.c
Other changes suggested by Bjorn and Suravee.
v5-v6:
Fix cross building errors found by kbuild test.
Export busn_resource to Xen pcifront driver.
v4-v5:
Fix some code style issues and rename some functions suggested by Bjorn.
Fix some code flaw(Eg. call pci_bus_add_devices() before resources claim
or lack the return checking).
v3-v4:
Fix the rebase issue.
v2-v3:
Rebase this series on v4.0-rc1.
v1-v2:
Split pci_host_bridge_list into a new patch, remove .phb_probe_mode
and rework powerpc .phb_of_scan_bus() for simpilicty suggested by
Arnd. Refresh some patch description log, and add a new patch to fix
build warning in ia64.

This series is based on Bjorn's pci/enumeration branch.
You could pull it from https://github.com/YijingWang/linux-pci.git enumer9

Now in kernel, we scan pci bus use the following ways:
1. pci_scan_bus. 
parent = NULL, default io/mem/bus resources
call pci_bus_add_devices()

2. pci_scan_bus_parented() + pci_bus_add_devices()
default io/mem/bus resources, only used by xen

3. pci_scan_root_bus() + pci_bus_add_devices()

4. pci_create_root_bus() + pci_scan_child_bus() + pci_bus_add_devices()

5. pci_create_root_bus() + xx_of_scan_bus()  +  pci_bus_add_devices()

And we have a lot of arch specific pci_domain_nr() and other platform
specific weak function like pcibios_root_bridge_prepare().

After applied this series, we have following scan interfaces:

1. pci_scan_bus() 
parent = NULL, default io/mem/bus resources.
for legacy pci scan

2. pci_scan_root_bus()
for callers provide its own parent and io/mem/bus resources
but no platform specific pci_host_bridge operations

3. pci_scan_host_bridge()
for callers provide its own parent and io/mem/bus resources



Arnd Bergmann (1):
  xen/PCI: Don't use deprecated function pci_scan_bus_parented()

Yijing Wang (28):
  PCI: Remove deprecated pci_scan_bus_parented()
  PCI: Save domain in pci_host_bridge
  PCI: Move pci_bus_assign_domain_nr() declaration into
drivers/pci/pci.h
  PCI: Remove argument bus for pci_create_root_bus()
  PCI: Alloc busn resource dynamically for pci_scan_bus()
  PCI: Allocate busn resource for pci_scan_root_bus()
  PCI: Introduce pci_host_assign_domain_nr() to assign domain
  PCI: Separate pci_host_bridge creation out of pci_create_root_bus()
  PCI: Introduce pci_host_bridge_list to manage host bridges
  PCI: Save sysdata in pci_host_bridge drvdata
  powerpc/PCI: Rename pcibios_root_bridge_prepare() to
pcibios_set_root_bus_speed()
  PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
  PCI: Introduce pci_host_bridge_ops to support host specific
operations
  PCI: Introduce new scan function pci_scan_host_bridge()
  PCI: Introduce pci_bus_child_max_busnr()
  x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  ia64/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge
  powerpc/pci: Use pci_scan_host_bridge() for simplicity
  PCI: Remove pcibios_root_bridge_prepare() and
pcibos_set_root_bus_speed()
  sparc/PCI: Use pci_scan_host_bridge() for simplicity
  parisc/PCI: Use pci_scan_root_bus() for simplicity
  PCI/mvebu: Use pci_common_init_dev() to simplify code
  PCI/tegra: Remove redundant tegra_pcie_scan_bus()
  PCI/designware: Use pci_scan_root_bus() for simplicity
  PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus()
  PCI: Rename __pci_create_root_bus() to pci_create_root_bus()
  PCI: Remove platform specific pci_domain_nr()
  PCI: Remove pci_bus_assign_domain_nr()

 arch/alpha/include/asm/pci.h |2 -
 arch/alpha/kernel/pci.c  |4 +-
 arch/alpha/kernel/sys_nautilus.c |2 +-
 arch/arm/kernel/bios32.c |2 +-
 arch/arm/mach-dove/pcie.c|2 +-
 arch/arm/mach-iop13xx/pci.c  |4 +-
 arch/arm/mach-mv78xx0/pcie.c |2 +-
 arch/arm/mach-orion5x/pci.c