linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: thomas.petazzoni@free-electrons.com (Thomas Petazzoni)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 19/27] pci: PCIe driver for Marvell Armada 370/XP systems
Date: Wed, 30 Jan 2013 10:35:01 +0100	[thread overview]
Message-ID: <20130130103501.1873d39c@skate> (raw)
In-Reply-To: <CAErSpo41TbWTZ_6m0_uv-EaKnnqMR9jpqsarOJLGYZ31mrdkiw@mail.gmail.com>

Dear Bjorn Helgaas,

On Tue, 29 Jan 2013 15:27:43 -0700, Bjorn Helgaas wrote:

> I'm not sure the existing emulation in these patches is sufficient.
> For example, pci_sw_pci_bridge_write() updates bridge->membase when we
> write to the window register, but I don't see anything that updates
> the actual hardware decoder.  That might be done in
> mvebu_pcie_window_config_port() via armada_370_xp_alloc_pcie_window(),
> but that looks like it's only done once.

That's correct. I currently let the Linux PCI core enumerate the
real PCIe devices, allocate the resources, and set the appropriate
values in the emulated PCI-to-PCI bridge registers. Once this is all
done, the Marvell PCIe driver looks at each PCI-to-PCI bridge, reads
the membase and iobase registers, and creates address decoding windows
so that the physical addresses assigned by the Linux PCI core actually
resolve to the right PCIe interface. This is done once for all.

> If the PCI core updates a root port window later, I don't see where the hardware
> decoder will be updated.

It will not be updated.

> Maybe you're counting on the window assignments to be static?  The PCI
> core doesn't guarantee anything like that, though in the absence of
> hotplug I don't know any reason why it would change things.

Right. Is supporting hotplug a show-stopper to get this included? I
think it could be added later, if it happens to be needed, no?

I could of course do it, but the patch series is already quite large
and complicated, so if we could merge a simple, but working, version
first, and then improve on top of it when needed, it would be nice.

> I also forgot about the bus number munging in mvebu_pcie_rd_conf().
> The PCI core can update the bridge secondary/subordinate registers.
> It looks like you don't support writing to them, and the read path
> (pci_sw_pci_bridge_read()) looks like it doesn't do any translation
> between the hardware and Linux bus numbers.  I don't understand the
> system well enough to know if this is an issue.

Right. Could you explain a little bit for what reasons the PCI core
could update the secondary/subordinate registers, and to what values it
sets them?

For now, I statically assign the secondary bus register value to be
X+1, where X is the number of the PCIe interface, since X=0 is reserved
for the root bus (which has the host bridge and the PCI-to-PCI
bridges).

Also, could you detail what kind of translation I should be doing when
reading the hardware and Linux bus numbers?

I apologize for asking so many, probably silly, questions, but I am
still learning all those internal PCI mechanisms.

Thanks,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  parent reply	other threads:[~2013-01-30  9:35 UTC|newest]

Thread overview: 216+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-28 18:56 [PATCH v2] PCIe support for the Armada 370 and Armada XP SoCs Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 01/27] of/pci: Provide support for parsing PCI DT ranges property Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 02/27] of/pci: Add of_pci_get_devfn() function Thomas Petazzoni
2013-01-28 22:00   ` Stephen Warren
2013-01-28 22:16     ` Thierry Reding
2013-01-29 10:04       ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 03/27] of/pci: Add of_pci_parse_bus_range() function Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 04/27] ARM: pci: Allow passing per-controller private data Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 05/27] arm: pci: add a align_resource hook Thomas Petazzoni
2013-01-29 15:12   ` Thomas Petazzoni
2013-01-29 15:15     ` Russell King - ARM Linux
2013-01-29 15:23       ` Thomas Petazzoni
2013-01-29 15:25         ` Russell King - ARM Linux
2013-01-29 15:28           ` Thomas Petazzoni
2013-01-29 15:58     ` Russell King - ARM Linux
2013-01-29 16:20       ` Thomas Petazzoni
2013-01-29 16:45         ` Arnd Bergmann
2013-01-29 17:09           ` Thomas Petazzoni
2013-01-29 20:15             ` Arnd Bergmann
2013-01-29 20:33               ` Thomas Petazzoni
2013-01-29 21:59                 ` Thomas Petazzoni
2013-01-29 22:17                   ` Stephen Warren
2013-01-30  4:49                   ` Jason Gunthorpe
2013-01-29 22:54                 ` Arnd Bergmann
2013-01-30  4:21                   ` Jason Gunthorpe
2013-01-30  9:55                     ` Arnd Bergmann
2013-01-30 11:47                       ` Thomas Petazzoni
2013-01-30 16:17                         ` Arnd Bergmann
2013-01-30 16:38                           ` Thomas Petazzoni
2013-01-30 20:48                         ` Bjorn Helgaas
2013-01-30 21:06                           ` Jason Gunthorpe
2013-01-30  4:56           ` Jason Gunthorpe
2013-01-30  8:19             ` Thomas Petazzoni
2013-01-30  9:46             ` Arnd Bergmann
2013-01-30  9:54               ` Thomas Petazzoni
2013-01-30 10:03                 ` Arnd Bergmann
2013-01-30 11:42                   ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 06/27] lib: devres: don't enclose pcim_*() functions in CONFIG_HAS_IOPORT Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 07/27] PCI: Add software-emulated host bridge Thomas Petazzoni
2013-01-28 20:18   ` Arnd Bergmann
2013-01-28 22:03     ` Stephen Warren
2013-01-28 22:09       ` Jason Gunthorpe
2013-01-28 22:18         ` Thomas Petazzoni
2013-01-28 22:23           ` Jason Gunthorpe
2013-01-28 22:30             ` Thomas Petazzoni
2013-01-28 22:51               ` Jason Gunthorpe
2013-01-29 10:01                 ` Thomas Petazzoni
2013-01-29 17:42                   ` Jason Gunthorpe
2013-01-29 17:43                     ` Thomas Petazzoni
2013-01-29  2:40         ` Bjorn Helgaas
2013-01-29  6:16           ` Jason Gunthorpe
2013-01-28 22:09     ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 08/27] pci: implement an emulated PCI-to-PCI bridge Thomas Petazzoni
2013-01-28 19:35   ` Jason Gunthorpe
2013-01-28 19:39     ` Thomas Petazzoni
2013-01-28 19:55       ` Jason Gunthorpe
2013-01-28 22:06         ` Stephen Warren
2013-01-28 22:16           ` Jason Gunthorpe
2013-01-29 22:35   ` Bjorn Helgaas
2013-01-29 23:06     ` Arnd Bergmann
2013-01-30  4:12       ` Jason Gunthorpe
2013-01-28 18:56 ` [PATCH v2 09/27] pci: infrastructure to add drivers in drivers/pci/host Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 10/27] arm: mvebu: fix address-cells in mpic DT node Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 11/27] clk: mvebu: create parent-child relation for PCIe clocks on Armada 370 Thomas Petazzoni
2013-01-28 22:08   ` Stephen Warren
2013-01-28 22:21     ` Thomas Petazzoni
2013-01-28 22:27       ` Stephen Warren
2013-01-28 22:44         ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 12/27] clk: mvebu: add more PCIe clocks for Armada XP Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 13/27] arm: plat-orion: introduce WIN_CTRL_ENABLE in address mapping code Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 14/27] arm: plat-orion: refactor the orion_disable_wins() function Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 15/27] arm: plat-orion: introduce orion_{alloc, free}_cpu_win() functions Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 16/27] arm: mvebu: add functions to alloc/free PCIe decoding windows Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 17/27] arm: plat-orion: make common PCIe code usable on mvebu Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 18/27] arm: plat-orion: add more flexible PCI configuration space read/write functions Thomas Petazzoni
2013-01-28 19:51   ` Jason Gunthorpe
2013-01-29  8:40     ` Thomas Petazzoni
2013-01-29 17:40       ` Jason Gunthorpe
2013-01-28 18:56 ` [PATCH v2 19/27] pci: PCIe driver for Marvell Armada 370/XP systems Thomas Petazzoni
2013-01-28 22:21   ` Stephen Warren
2013-01-29  8:41     ` Thomas Petazzoni
2013-01-29  9:20       ` Thierry Reding
2013-01-29  9:21         ` Thomas Petazzoni
2013-02-07 10:24         ` Thomas Petazzoni
2013-02-07 15:46           ` Bjorn Helgaas
2013-02-07 16:00             ` Thomas Petazzoni
2013-02-07 18:08               ` Bjorn Helgaas
2013-02-07 18:15                 ` Jason Gunthorpe
2013-02-07 18:30                   ` Bjorn Helgaas
2013-02-07 18:43                 ` Thierry Reding
2013-01-29 19:47       ` Stephen Warren
2013-01-29  3:29   ` Bjorn Helgaas
2013-01-29  5:55     ` Jason Gunthorpe
2013-01-29  8:00       ` Thomas Petazzoni
2013-01-29 17:47       ` Bjorn Helgaas
2013-01-29 18:14         ` Thomas Petazzoni
2013-01-29 18:41         ` Jason Gunthorpe
2013-01-29 19:07           ` Bjorn Helgaas
2013-01-29 19:18             ` Jason Gunthorpe
2013-01-29 19:38               ` Bjorn Helgaas
2013-01-29 22:27                 ` Bjorn Helgaas
2013-01-30  4:24                   ` Jason Gunthorpe
2013-01-30  9:35                   ` Thomas Petazzoni [this message]
2013-01-30 18:52                     ` Bjorn Helgaas
2013-01-30 22:28                       ` Thomas Petazzoni
2013-01-30 23:10                         ` Jason Gunthorpe
2013-01-30 23:48                         ` Bjorn Helgaas
2013-01-31 16:04                       ` Thomas Petazzoni
2013-01-31 16:30                         ` Bjorn Helgaas
2013-01-31 16:33                           ` Thomas Petazzoni
2013-01-31 17:03                             ` Bjorn Helgaas
2013-01-31 16:42                           ` Russell King - ARM Linux
2013-01-29 13:22   ` Andrew Murray
2013-01-29 13:45     ` Thomas Petazzoni
2013-01-29 14:05       ` Andrew Murray
2013-01-29 14:20         ` Thierry Reding
2013-01-29 14:29           ` Thomas Petazzoni
2013-01-29 15:02             ` Thierry Reding
2013-01-29 15:08               ` Andrew Murray
2013-01-29 15:10               ` Thomas Petazzoni
2013-02-07 14:37     ` Thomas Petazzoni
2013-02-07 15:51       ` Andrew Murray
2013-02-07 16:19         ` Thomas Petazzoni
2013-02-07 16:40           ` Thomas Petazzoni
2013-02-07 16:53             ` Andrew Murray
2013-02-07 17:14               ` Thomas Petazzoni
2013-02-07 17:29                 ` Andrew Murray
2013-02-07 17:37                   ` Thomas Petazzoni
2013-02-07 18:21                     ` Jason Gunthorpe
2013-02-07 23:25                       ` Arnd Bergmann
2013-02-08  0:44                         ` Jason Gunthorpe
2013-02-09 22:23                           ` Arnd Bergmann
2013-02-12 19:26                             ` Jason Gunthorpe
2013-02-07 18:30                     ` Andrew Murray
2013-02-07 23:27                       ` Arnd Bergmann
2013-01-30 11:32   ` Russell King - ARM Linux
2013-01-30 11:37     ` Thomas Petazzoni
2013-01-30 12:03     ` Thierry Reding
2013-01-30 13:07       ` Thomas Petazzoni
2013-01-30 15:08       ` Russell King - ARM Linux
2013-01-30 15:19         ` Russell King - ARM Linux
2013-01-30 15:36           ` Thomas Petazzoni
2013-01-30 15:46             ` Russell King - ARM Linux
2013-01-31 14:30               ` Thomas Petazzoni
2013-01-31 14:50                 ` Russell King - ARM Linux
2013-01-31 14:57                   ` Thomas Petazzoni
2013-01-31 15:08                     ` Russell King - ARM Linux
2013-01-31 15:22                       ` Thomas Petazzoni
2013-01-31 15:36                         ` Russell King - ARM Linux
2013-01-31 15:47                           ` Thomas Petazzoni
2013-01-31 15:48                             ` Russell King - ARM Linux
2013-01-31 16:18                           ` Arnd Bergmann
2013-01-31 18:02                             ` Jason Gunthorpe
2013-01-31 20:46                               ` Arnd Bergmann
2013-01-31 22:44                                 ` Jason Gunthorpe
2013-02-01 11:30                                   ` Arnd Bergmann
2013-02-01 19:52                                     ` Jason Gunthorpe
2013-02-06 16:51                                   ` Thomas Petazzoni
2013-02-06 17:09                                     ` Jason Gunthorpe
2013-02-06 17:18                                       ` Thomas Petazzoni
2013-02-06 17:50                                         ` Jason Gunthorpe
2013-02-06 18:02                                           ` Thomas Petazzoni
2013-02-06 18:22                                           ` Stephen Warren
2013-02-06 18:39                                             ` Jason Gunthorpe
2013-02-06 18:42                                             ` Thomas Petazzoni
2013-02-06 22:04                                               ` Arnd Bergmann
     [not found]                                           ` <20130207165009.73b1f340@skate>
2013-02-07 23:33                                             ` Giving special alignment/size constraints to the Linux PCI core? Arnd Bergmann
2013-02-08  4:21                                             ` Bjorn Helgaas
2013-02-08  8:14                                               ` Thomas Petazzoni
2013-02-12 16:00                                                 ` Arnd Bergmann
2013-02-12 18:41                                                   ` Jason Gunthorpe
2013-02-12 19:02                                                     ` Arnd Bergmann
2013-02-12 19:38                                                       ` Jason Gunthorpe
2013-02-12 23:05                                                         ` Arnd Bergmann
2013-02-13  0:32                                                           ` Jason Gunthorpe
2013-02-13 18:53                                                             ` Arnd Bergmann
2013-02-13 19:12                                                               ` Jason Gunthorpe
2013-02-13 19:51                                                                 ` Thomas Petazzoni
2013-02-13 21:10                                                                 ` Arnd Bergmann
2013-02-13 21:20                                                                   ` Yinghai Lu
2013-02-13 22:24                                                                     ` Arnd Bergmann
2013-02-13 21:02                                                             ` Yinghai Lu
2013-01-31  7:10           ` [PATCH v2 19/27] pci: PCIe driver for Marvell Armada 370/XP systems Thierry Reding
2013-02-01  0:34   ` Stephen Warren
2013-02-01  1:41     ` Jason Gunthorpe
2013-02-01  2:21       ` Stephen Warren
2013-02-01  3:51         ` Jason Gunthorpe
2013-02-01  9:03           ` Thomas Petazzoni
2013-02-01 16:07             ` Arnd Bergmann
2013-02-01 16:26               ` Russell King - ARM Linux
2013-02-01 17:45                 ` Arnd Bergmann
2013-02-01 19:58                   ` Jason Gunthorpe
2013-02-01  8:46         ` Thomas Petazzoni
2013-02-01 16:02           ` Arnd Bergmann
2013-02-01 17:57           ` Stephen Warren
2013-02-01 19:39             ` Jason Gunthorpe
2013-02-01 20:30               ` Stephen Warren
2013-01-28 18:56 ` [PATCH v2 20/27] arm: mvebu: PCIe support is now available on mvebu Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 21/27] arm: mvebu: add PCIe Device Tree informations for Armada 370 Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 22/27] arm: mvebu: add PCIe Device Tree informations for Armada XP Thomas Petazzoni
2013-02-06 22:41   ` Arnd Bergmann
2013-02-06 23:07     ` Thomas Petazzoni
2013-02-07  8:04       ` Arnd Bergmann
2013-02-07  8:45         ` Thomas Petazzoni
2013-02-07  9:09           ` Arnd Bergmann
2013-02-07  1:05     ` Jason Gunthorpe
2013-02-07  7:28       ` Thierry Reding
2013-02-07 17:49         ` Jason Gunthorpe
2013-02-07  8:24       ` Arnd Bergmann
2013-02-07 17:00         ` Jason Gunthorpe
2013-02-07 23:44           ` Arnd Bergmann
2013-01-28 18:56 ` [PATCH v2 23/27] arm: mvebu: PCIe Device Tree informations for OpenBlocks AX3-4 Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 24/27] arm: mvebu: PCIe Device Tree informations for Armada XP DB Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 25/27] arm: mvebu: PCIe Device Tree informations for Armada 370 Mirabox Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 26/27] arm: mvebu: PCIe Device Tree informations for Armada 370 DB Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 27/27] arm: mvebu: update defconfig with PCI and USB support Thomas Petazzoni

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=20130130103501.1873d39c@skate \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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).