linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
To: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
	Gregory Clement <gregory.clement@free-electrons.com>,
	Arnd Bergmann <arnd@arndb.de>, Maen Suleiman <maen@marvell.com>,
	Lior Amsalem <alior@marvell.com>,
	Thierry Reding <thierry.reding@avionic-design.de>,
	Eran Ben-Avi <benavi@marvell.com>,
	Nadav Haklai <nadavh@marvell.com>,
	Shadi Ammouri <shadi@marvell.com>,
	Tawfik Bayouk <tawfik@marvell.com>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>
Subject: Re: [PATCH v2 19/27] pci: PCIe driver for Marvell Armada 370/XP systems
Date: Fri, 1 Feb 2013 12:39:35 -0700	[thread overview]
Message-ID: <20130201193935.GA19335@obsidianresearch.com> (raw)
In-Reply-To: <510C0200.5040505@wwwdotorg.org>

On Fri, Feb 01, 2013 at 10:57:20AM -0700, Stephen Warren wrote:

> > We have 20 windows on Armada XP if I remember correctly, and they are
> > not only used for PCIe, but also to map the BootROM (needed to boot
> > secondary CPUs), to map SPI flashes or NOR flashes, for example. So
> > they are really shared between many uses. In terms of PCIe, there are
> > only two types of windows: I/O and Memory, there is no notion of
> > Prefetchable Memory window as far as I could see.
> 
> In Tegra, we end up having separate MMIO vs. Prefetchable MMIO
> chunks of our overall PCIe aperture. However, the HW setup appears
> the same for both of those. I'm not sure if it's a bug in the
> driver, or if it's just to separate the two address spaces so that
> the page tables can be configured for those two regions with large
> rather than small granularity. I need to go investigate that.

The only purpose of prefetchable space is for legacy PCI. When a P2P
bridge targets legacy PCI it has different behavior for its
prefetchable memory window compared to the non-prefetchable memory
window.

IIRC (though it has been a long time since I looked really close at
this) PCI-X and PCI-E did away with this special bridge behaviour but
kept the prefetchable memory space for compatibility.

These days it is typically used to mark cachable memory on an end
device.

>From a SOC perspective, there is no need to treat MMIO and prefetch
areas any differently. ARM's per-page cachability flags can be used to
deal with the differing caching requirements.

However, the bus tree downstream of each root port will require the
prefetch window to be contiguous. On Marvell, today, this means you
need to burn two mbus windows to get this. If the Linux pci core could
allocate the prefetch space for each root port bridge contiguously
with the mmio space for the same root port then this could be reduced
to one window covering both spaces for the port.

> So there are 10 PCIe interfaces (root ports). That's on the SoC itself
> right. Are all 10 (or a large number of them) actually used at once on
> any given board design? I suppose this must be the case, or Marvell
> wouldn't have wasted the silicon space on 10 root ports... Still, that's
> a rather large number of ports!

Agreed.. I have no idea what the target is for this..
 
> I think the only difference on the Marvell HW is:
> 
> * The overall total size of the physical address space is dynamic rather
> than fixed, because it's programmed through windows rather than
> hard-coded into HW.

Is it hard coded on tegra? I thought there was a register set that was
used to set the overall PCI-E MMIO window location and size. I know
even on x86 the PCI window is set via register, though that typically
isn't disclosed except to bios writers.. 

Jason

  reply	other threads:[~2013-02-01 19:39 UTC|newest]

Thread overview: 217+ 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
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
2013-02-07 15:50                                           ` Giving special alignment/size constraints to the Linux PCI core? Thomas Petazzoni
2013-02-07 23:33                                             ` 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 [this message]
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=20130201193935.GA19335@obsidianresearch.com \
    --to=jgunthorpe@obsidianresearch.com \
    --cc=alior@marvell.com \
    --cc=andrew@lunn.ch \
    --cc=arnd@arndb.de \
    --cc=benavi@marvell.com \
    --cc=bhelgaas@google.com \
    --cc=gregory.clement@free-electrons.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=maen@marvell.com \
    --cc=nadavh@marvell.com \
    --cc=shadi@marvell.com \
    --cc=swarren@wwwdotorg.org \
    --cc=tawfik@marvell.com \
    --cc=thierry.reding@avionic-design.de \
    --cc=thomas.petazzoni@free-electrons.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).