Re: [PATCH v5 0/7] [RFC] Support for creating generic host_bridge from device tree

Tanmay Inamdar
2014-03-05T17:49:30Z

On Wed, Mar 5, 2014 at 3:40 AM, Liviu Dudau <Liviu.Dudau@arm.com> wrote:
> On Wed, Mar 05, 2014 at 01:53:55AM +0000, Tanmay Inamdar wrote:
>> Hello,
>>
>> Thanks for the patch set.
>>
>> On Tue, Mar 4, 2014 at 7:49 AM, Liviu Dudau <Liviu.Dudau@arm.com> wrote:
>> > This is v5 of my attempt to add support for a generic pci_host_bridge controller created
>> > from a description passed in the device tree.
>> >
>> > Changes from v4:
>> > - Export pci_find_host_bridge() to be used by arch code. There is scope for
>> > making the arch/arm64 version of pci_domain_nr the default weak implementation
>> > but that would double the size of this series in order to handle all #define
>> > versions of the pci_domain_nr() function, so I suggest keeping that for a separate
>> > cleanup series.
>> >
>> > Changes from v3:
>> > - Dynamically allocate bus_range resource in of_create_pci_host_bridge()
>> > - Fix the domain number used when creating child busses.
>> > - Changed domain number allocator to use atomic operations.
>> > - Use ERR_PTR() to propagate the error out of pci_create_root_bus_in_domain()
>> > and of_create_pci_host_bridge().
>> >
>> > Changes from v2:
>> > - Use range->cpu_addr when calling pci_address_to_pio()
>> > - Introduce pci_register_io_range() helper function in order to register
>> > io ranges ahead of their conversion to PIO values. This is needed as no
>> > information is being stored yet regarding the range mapping, making
>> > pci_address_to_pio() fail. Default weak implementation does nothing,
>> > to cover the default weak implementation of pci_address_to_pio() that
>> > expects direct mapping of physical addresses into PIO values (x86 view).
>> >
>> > Changes from v1:
>> > - Add patch to fix conversion of IO ranges into IO resources.
>> > - Added a domain_nr member to pci_host_bridge structure, and a new function
>> > to create a root bus in a given domain number. In order to facilitate that
>> > I propose changing the order of initialisation between pci_host_bridge and
>> > it's related bus in pci_create_root_bus() as sort of a rever of 7b5436635800.
>> > This is done in patch 1/4 and 2/4.
>> > - Added a simple allocator of domain numbers in drivers/pci/host-bridge.c. The
>> > code will first try to get a domain id from of_alias_get_id(..., "pci-domain")
>> > and if that fails assign the next unallocated domain id.
>> > - Changed the name of the function that creates the generic host bridge from
>> > pci_host_bridge_of_init to of_create_pci_host_bridge and exported as GPL symbol.
>> >
>> >
>> > v4 thread here: https://lkml.org/lkml/2014/3/3/301
>> > v3 thread here: https://lkml.org/lkml/2014/2/28/216
>> > v2 thread here: https://lkml.org/lkml/2014/2/27/245
>> > v1 thread here: https://lkml.org/lkml/2014/2/3/380
>> >
>> > Best regards,
>> > Liviu
>> >
>> > Liviu Dudau (7):
>> > pci: Introduce pci_register_io_range() helper function.
>> > pci: OF: Fix the conversion of IO ranges into IO resources.
>> > pci: Create pci_host_bridge before its associated bus in pci_create_root_bus.
>> > pci: Introduce a domain number for pci_host_bridge.
>> > pci: Use parent domain number when allocating child busses.
>> > pci: Export find_pci_host_bridge() function.
>> > pci: Add support for creating a generic host_bridge from device tree
>> >
>> > drivers/of/address.c | 39 +++++++++++++
>> > drivers/pci/host-bridge.c | 142 ++++++++++++++++++++++++++++++++++++++++++++-
>> > drivers/pci/probe.c | 72 +++++++++++++++--------
>> > include/linux/of_address.h | 14 +----
>> > include/linux/pci.h | 17 ++++++
>> > 5 files changed, 248 insertions(+), 36 deletions(-)
>> >
>> > --
>> > 1.9.0
>> >
>>
>> This series is working fine on X-Gene with multiple PCIe ports. You
>> can add my Tested-by if you want.
>
> What about the arm64 series, can I add a Tested-by to that one as well?

Sure.

>
> Thanks,
> Liviu
>
>>
>> Thanks,
>> Tanmay
>>
>
> --
> ====================
> | I would like to |
> | fix the world, |
> | but they're not |
> | giving me the |
> \ source code! /
> ---------------
> ¯\_(ツ)_/¯
>