[PATCH v8 8/9] pci: Add support for creating a generic host_bridge from device tree

Liviu Dudau
2014-07-08T22:57:55Z

On Tue, Jul 08, 2014 at 11:37:37PM +0100, Bjorn Helgaas wrote:
> On Tue, Jul 08, 2014 at 11:27:38PM +0100, Liviu Dudau wrote:
> > On Tue, Jul 08, 2014 at 10:33:05PM +0100, Bjorn Helgaas wrote:
> > > On Tue, Jul 08, 2014 at 11:29:40AM +0100, Liviu Dudau wrote:
> > > > On Tue, Jul 08, 2014 at 02:01:04AM +0100, Bjorn Helgaas wrote:
> > > > > On Tue, Jul 01, 2014 at 07:43:33PM +0100, Liviu Dudau wrote:
> > > > > > ...
> > > > > > +int __weak pcibios_fixup_bridge_ranges(struct list_head *resources)
> > > > > > +{
> > > > > > + return 0;
> > > > > > +}
> > > > >
> > > > > I'd wait to add this until there's a platform that needs to implement it.
> > > > > Splitting it out will make this patch that much smaller and easier to
> > > > > understand.
> > > >
> > > > I need this as this is the default implementation (i.e. do nothing). Otherwise the
> > > > link phase will give errors.
> > >
> > > I meant that you could remove the default implementation *and* the call of
> > > it, since it currently does nothing.
> >
> > True. But it looks like converting Will's pci-host-generic.c driver will make use of this.
>
> I think we should move this part of the patch to the conversion of
> that driver. That will keep related changes grouped together, which
> makes them easier to review and easier to backport, e.g., to distro
> kernels.
>
> > > > > > diff --git a/include/linux/pci.h b/include/linux/pci.h
> > > > > > index 7e7b939..556dc5f 100644
> > > > > > --- a/include/linux/pci.h
> > > > > > +++ b/include/linux/pci.h
> > > > > > @@ -402,6 +402,7 @@ struct pci_host_bridge {
> > > > > > struct device dev;
> > > > > > struct pci_bus *bus; /* root bus */
> > > > > > int domain_nr;
> > > > > > + resource_size_t io_base; /* physical address for the start of I/O area */
> > > > >
> > > > > I don't see where this is used yet.
> > > >
> > > > It's used in pci_host_bridge_of_get_ranges() (earlier in this patch).
> > >
> > > of_create_pci_host_bridge() fills in bridge->io_base, but I don't see
> > > anything that ever *reads* bridge->io_base.
> >
> > Ah, understood. It is used by the host bridge drivers to set their ATR registers to the
> > correct CPU address values.
>
> Same applies here.

Except I have no idea which host bridge driver is going to be submitted first. There are
at least a couple of public series for HB drivers based on my series plus the one I have yet
to submit for my platform.

Maybe an associated documentation patch that explains the intended use for io_base could
persuade you on the value of keeping the io_base patch here?

Best regards,
Liviu

>
> Bjorn
>

--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
?\_(?)_/?