mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Liviu Dudau <Liviu.Dudau@arm.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	linux-pci <linux-pci@vger.kernel.org>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	Will Deacon <Will.Deacon@arm.com>,
	linaro-kernel <linaro-kernel@lists.linaro.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	LAKML <linux-arm-kernel@lists.infradead.org>,
	Tanmay Inamdar <tinamdar@apm.com>,
	Grant Likely <grant.likely@secretlab.ca>
Subject: Re: [PATCH v7 4/6] pci: Introduce a domain number for pci_host_bridge.
Date: Fri, 11 Apr 2014 10:22:25 +0100	[thread overview]
Message-ID: <20140411092225.GW985@e106497-lin.cambridge.arm.com> (raw)
In-Reply-To: <6459805.ygy4tBNDNz@wuerfel>

On Thu, Apr 10, 2014 at 09:46:36PM +0100, Arnd Bergmann wrote:
> On Thursday 10 April 2014 15:53:04 Liviu Dudau wrote:
> > On Thu, Apr 10, 2014 at 03:07:44PM +0100, Arnd Bergmann wrote:
> 
> > > This mirrors how we treat devices: a pci_device has an embedded device,
> > > and so on, in other subsystems we can have multiple layers.
> > > 
> > > In this example, the tegra pcie driver then allocates its own tegra_pcie
> > > structure, fills out the fields it needs, and registers it with the
> > > ARM architecture code, passing just the pci_sys_data pointer. That function
> > > in turn passes a pointer to the embedded pci_host_bridge down to the
> > > generic code. Ideally we should try to eliminate the architecture specific
> > > portion here, but that is a later step.
> > 
> > So Arnd seems to agree with me: we should try to get out of architecture specific
> > pci_sys_data and link the host bridge driver straight into the PCI core. The
> > core then can call into arch code via pcibios_*() functions.
> > 
> > Arnd, am I reading correctly into what you are saying?
> 
> Half of it ;-)
> 
> I think it would be better to not have an architecture specific data
> structure, just like it would be better not to have architecture specific
> pcibios_* functions that get called by the PCI core. Note that the
> architecture specific functions are the ones that rely on the architecture
> specific data structures as well. If they only use the common fields,
> it should also be possible to share the code.

While I've come to like the pcibios_*() interface (and yes, it could be
formalised and abstracted into a pci_xxxx_ops structure) I don't like the fact
that those functions use architectural data in order to function. I know it
might sound strange, as they *are* supposed to be implemented by the arches,
but in my mind the link between generic code and arch code for PCI should be
done by the host bridge driver. That's how PCI spec describes it, and I see no
reason why we should not be able to adopt the same view.

To be more precise, what I would like to happen in the case of some functions
would be for the PCI core code to call a pci_host_bridge_ops method which
in turn will call the arch specific code if it needs to. Why I think that would
be better? Because otherwise you put in the architectural side code to cope
with a certain host bridge, then another host bridge comes in and you add
more architectural code, but then when you port host bridge X to arch B you
discover that you need to add code there as well for X. And it all ends up in
the mess we currently have where the drivers in drivers/pci/host are not capable
of being ported to a different architecture because they rely on infrastructure
only present in arm32 that is not properly documented.

> 
> I also don't realistically think we can get there on a lot of architectures
> any time soon. Note that most architectures only have one PCI host
> implementation, so the architecture structure is the same as the host
> driver structure anyway.
> 
> For architectures like powerpc and arm that have people actively working
> on them, we have a chance to clean up that code in the way we want it
> (if we can agree on the direction), but it's still not trivial to do.
> 
> Speaking of arm32 in particular, I think we will end up with a split
> approach: modern platforms (multiplatform, possibly all DT based) using
> PCI core infrastructure directly and no architecture specific PCI
> code on the one side, and a variation of today's code for the legacy
> platforms on the other.

Actually, if we could come up with a compromise for the pci_fixup_*() functions
(are they still used by functional hardware?) then I think we could convert
most of the arm32 arch code to re-direct the calls to the infrastructure code.
But yes, there might be a lot of resistance to change due to lack of resources
when changing old platforms.

Best regards,
Liviu

> 
> 	Arnd
> 
> 

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


  parent reply	other threads:[~2014-04-11  9:22 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
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
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
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
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
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
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
2014-04-10  1:27                     ` Liviu Dudau
2014-04-10  3:48                       ` Bjorn Helgaas
2014-04-10  8:00                         ` Arnd Bergmann
2014-04-10 13:50                           ` Bjorn Helgaas
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 [this message]
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=20140411092225.GW985@e106497-lin.cambridge.arm.com \
    --to=liviu.dudau@arm.com \
    --cc=Catalin.Marinas@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=arnd@arndb.de \
    --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

all inboxes | Powered by JetHome®