[RFC/RFT PATCH 05/18] ARM: PCI: dove: Convert PCI scan API to pci_scan_root_bus_bridge()

Arnd Bergmann arnd at arndb.de
Wed May 3 05:02:16 PDT 2017


On Wed, May 3, 2017 at 12:31 PM, Lorenzo Pieralisi
<lorenzo.pieralisi at arm.com> wrote:
> On Fri, Apr 28, 2017 at 02:38:48PM +0200, Arnd Bergmann wrote:
>> On Wed, Apr 26, 2017 at 1:17 PM, Lorenzo Pieralisi
>> <lorenzo.pieralisi at arm.com> wrote:
>> > The introduction of pci_scan_root_bus_bridge() provides a PCI core
>> > API to scan a PCI root bus backed by an already initialized
>> > struct pci_host_bridge object, which simplifies the bus scan
>> > interface and makes the PCI scan root bus interface easier to
>> > generalize as members are added to the struct pci_host_bridge().
>> >
>> > Convert ARM dove platform code to pci_scan_root_bus_bridge() to improve
>> > the PCI root bus scanning interface.
>> >
>> > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi at arm.com>
>>
>> Is this patch required for one of the later steps in the series?
>>
>> As non-DT dove uses the traditional pci_common_init() helper rather
>> than registering its own driver, I wonder if there is anything to gain here.
>
> Well, the point is, the non-DT platforms I patched implement a custom
> .scan method in struct hw_pci. If we move the bridge allocation to
> pcibios_init_hw() we would end up initializing some struct
> pci_host_bridge fields in pcibios_init_hw() and some in the custom .scan
> method (ie custom pci_ops) which I found not very elegant but it could be
> done I reckon, I need to give it a go to see how the code looks like.

I don't see anything wrong with initializing the members in different
places. The first set would give you a default that works for basic
drivers, and the second set is a way to override the defaults for drivers
that do something special. Conceptually we do this all the time in
other places.

     Arnd



More information about the linux-arm-kernel mailing list