From: Arnd Bergmann <arnd@arndb.de>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
linaro-kernel <linaro-kernel@lists.linaro.org>,
linux-pci <linux-pci@vger.kernel.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Will Deacon <Will.Deacon@arm.com>,
LKML <linux-kernel@vger.kernel.org>,
Grant Likely <grant.likely@secretlab.ca>,
Tanmay Inamdar <tinamdar@apm.com>,
Catalin Marinas <Catalin.Marinas@arm.com>,
LAKML <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v7 4/6] pci: Introduce a domain number for pci_host_bridge.
Date: Thu, 10 Apr 2014 10:00:17 +0200 [thread overview]
Message-ID: <4506772.YFSM2m1eaP@wuerfel> (raw)
In-Reply-To: <CAErSpo7egL2T_W_OCJw2kPHFDqspwOHXtZJw8JyjWU=56ofFKQ@mail.gmail.com>
On Wednesday 09 April 2014 21:48:14 Bjorn Helgaas wrote:
> On Wed, Apr 9, 2014 at 7:27 PM, Liviu Dudau <liviu@dudau.co.uk> wrote:
> > On Wed, Apr 09, 2014 at 08:02:41AM -0600, Bjorn Helgaas wrote:
> >> >> struct pci_host_bridge {
> >> >> int domain;
> >> >> int node;
> >> >> struct device *dev;
> >> >> struct pci_ops *ops;
> >> >> struct list_head resources;
> >> >> void *sysdata;
> >> >> struct pci_bus *bus; /* filled in by core, not by arch */
> >> >> ... /* other existing contents managed by core */
> >> >> };
> >> >>
> >> >> struct pci_bus *pci_scan_host_bridge(struct pci_host_bridge *bridge);
> >> >
> >> > I'm really reluctant to give the arches more rope to hang themselves.
> >>
> >> If you mean the sysdata pointer is rope to hang themselves, I think it
> >> would be great it we didn't need sysdata at all. But I think it would
> >> be a huge amount of work to get rid of it completely, and keeping it
> >> would let us work at that incrementally.
> >
> > Agree. But then your suggestion was to wrap sysdata inside another structure,
> > which to me constitutes additional rope.
>
> I'll ponder this more, but I don't see your point here yet. The arch
> already supplies a sysdata pointer to pci_scan_root_bus(), and we
> stash it in every struct pci_bus already. My idea was just to pass it
> in differently, as a structure member rather than a separate argument.
> (And I'm not completely attached to my proposal; it was only to
> illustrate my concern about the explosion of interfaces if we have to
> add *_domain(), *_node(), etc.)
As a minor variation of your suggestion, how about passing in a pointer
to struct pci_host_bridge, and embed that within its own private
structure? I think this is closer to how a lot of other subsystems
do the abstraction.
> > The "what" for PCI host bridges is defined in the spec. The "how" is implementation
> > defined. What I'm trying to get with the cleanup is the ordering of pci_host_bridge
> > creation: core creates the structure first ("what"), arch then has the chance
> > of adding specific data to it (ops, resources, etc) ("how").
> >
> > At the moment arm and powerpc do some horrible dances in trying to create their
> > local idea of a host bridge before passing it to the core code.
> >
> > As for the root bus number, maybe we can offer some sensible default strategy
> > for numbering them and the arches that don't care too much can use that.
>
> I think we're at the limit of what can be accomplished with the
> abstractness of English.
>
> My opinion is that it's reasonable for the arch to discover the host
> bridge properties first and pass them to the core, and it doesn't
> require unreasonable things of the arch. I know the arm PCI setup is
> complicated, partly because it deals with a huge number of machines
> that don't have a consistent firmware interface. The x86/ACPI setup
> is relatively simple because it deals with a simple firmware
> interface. But that's just my opinion, and maybe your code will show
> otherwise.
Makes sense. One of the areas where the PCI code shows its age is the
method how the various parts link together: there are function calls
going back and forth between architecture specific files and generic
files, rather a hierarchy of files with generic code being code by more
specific code.
To do the probing properly, I think it's totally fine to have the
core code expect stuff like the resources and domain number
to be filled out already by whoever calls it, but then have wrappers
around it that get this information from a firmware interface, or
from hardwired architecture specific code where necessary.
Arnd
next prev parent reply other threads:[~2014-04-10 8:00 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-14 15:34 [PATCH v7 0/6] Support for creating generic host_bridge from device tree Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 1/6] pci: Introduce pci_register_io_range() helper function Liviu Dudau
[not found] ` <1394811272-1547-2-git-send-email-Liviu.Dudau-5wv7dgnIgG8@public.gmane.org>
2014-04-05 0:19 ` Bjorn Helgaas
2014-04-06 9:49 ` Benjamin Herrenschmidt
2014-04-07 8:35 ` Liviu Dudau
2014-04-07 9:13 ` Benjamin Herrenschmidt
2014-04-07 11:16 ` Arnd Bergmann
[not found] ` <20140405001953.GE15806-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2014-04-07 8:31 ` Liviu Dudau
2014-04-07 11:36 ` Arnd Bergmann
2014-04-07 13:42 ` Liviu Dudau
2014-04-07 17:58 ` Bjorn Helgaas
2014-04-08 9:50 ` Liviu Dudau
2014-04-08 10:22 ` Arnd Bergmann
2014-04-08 16:54 ` Bjorn Helgaas
2014-06-26 8:59 ` Catalin Marinas
2014-06-26 9:30 ` Liviu Dudau
[not found] ` <20140626093029.GB12812-2JSQmVVBSi7ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-06-26 14:11 ` Catalin Marinas
2014-06-26 14:14 ` Will Deacon
2014-06-27 0:44 ` Rob Herring
2014-06-27 11:03 ` Arnd Bergmann
2014-06-27 12:49 ` Will Deacon
2014-06-27 13:16 ` Arnd Bergmann
2014-06-27 13:38 ` Catalin Marinas
2014-06-27 16:15 ` Rob Herring
2014-06-30 10:17 ` Will Deacon
[not found] ` <CAL_JsqKCHf6VXR3FFcBSu1xuhP54dYsAJCZwT-X9p5iTZAOJfQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-27 14:14 ` Catalin Marinas
2014-06-27 14:55 ` Bjorn Helgaas
2014-06-27 15:18 ` Liviu Dudau
2014-04-07 23:21 ` Bjorn Helgaas
2014-04-08 7:12 ` Arnd Bergmann
2014-04-08 9:49 ` Liviu Dudau
2014-04-08 10:11 ` Arnd Bergmann
2014-04-08 16:48 ` Bjorn Helgaas
2014-03-14 15:34 ` [PATCH v7 2/6] pci: OF: Fix the conversion of IO ranges into IO resources Liviu Dudau
2014-03-14 17:05 ` Arnd Bergmann
2014-03-14 17:19 ` Liviu Dudau
2014-03-14 18:46 ` Arnd Bergmann
2014-03-14 19:00 ` Liviu Dudau
[not found] ` <20140314190017.GA6457-2JSQmVVBSi7ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-03-14 19:16 ` Arnd Bergmann
2014-03-17 13:41 ` Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 3/6] pci: Create pci_host_bridge before its associated bus in pci_create_root_bus Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 4/6] pci: Introduce a domain number for pci_host_bridge Liviu Dudau
2014-04-05 0:00 ` Bjorn Helgaas
2014-04-07 8:46 ` Liviu Dudau
2014-04-07 9:14 ` Benjamin Herrenschmidt
2014-04-07 10:07 ` Liviu Dudau
2014-04-07 22:44 ` Bjorn Helgaas
2014-04-08 10:20 ` Liviu Dudau
[not found] ` <20140408102043.GV17163-2JSQmVVBSi7ZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2014-04-08 16:28 ` Bjorn Helgaas
2014-04-09 12:07 ` Liviu Dudau
2014-04-09 14:02 ` Bjorn Helgaas
2014-04-09 14:08 ` Arnd Bergmann
2014-04-09 23:49 ` Benjamin Herrenschmidt
[not found] ` <CAErSpo4BmoYzf6GxOPRni=q563zhON57s7=5Hz=2Cf-X2ft-1A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-10 1:27 ` Liviu Dudau
2014-04-10 3:48 ` Bjorn Helgaas
2014-04-10 8:00 ` Arnd Bergmann [this message]
2014-04-10 13:50 ` Bjorn Helgaas
[not found] ` <CAErSpo6u7kr+QdnhAXBo20izg-DNHR4zHT+kRvq34whp68RJCQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-10 14:07 ` Arnd Bergmann
2014-04-10 14:53 ` Liviu Dudau
2014-04-10 20:46 ` Arnd Bergmann
2014-04-11 5:01 ` Benjamin Herrenschmidt
2014-04-11 8:36 ` Arnd Bergmann
2014-04-11 9:16 ` Benjamin Herrenschmidt
2014-04-11 9:22 ` Liviu Dudau
2014-04-11 13:51 ` Arnd Bergmann
2014-07-01 16:37 ` Liviu Dudau
2014-07-04 14:57 ` Liviu Dudau
2014-07-08 1:11 ` Bjorn Helgaas
2014-07-08 10:21 ` Liviu Dudau
2014-03-14 15:34 ` [PATCH v7 5/6] pci: Export find_pci_host_bridge() function Liviu Dudau
2014-04-04 23:39 ` Bjorn Helgaas
2014-04-07 14:20 ` Liviu Dudau
2014-04-07 14:38 ` One Thousand Gnomes
2014-03-14 15:34 ` [PATCH v7 6/6] pci: Add support for creating a generic host_bridge from device tree Liviu Dudau
2014-04-08 12:57 ` Hanjun Guo
2014-04-08 13:09 ` Liviu Dudau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4506772.YFSM2m1eaP@wuerfel \
--to=arnd@arndb.de \
--cc=Catalin.Marinas@arm.com \
--cc=Will.Deacon@arm.com \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=grant.likely@secretlab.ca \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=tinamdar@apm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).