All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: Andrew Murray <andrew.murray@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.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>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Jason Gunthorpe <jgunthorpe@obsidianresearch.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: Thu, 7 Feb 2013 15:37:50 +0100	[thread overview]
Message-ID: <20130207153750.0fef1192@skate> (raw)
In-Reply-To: <20130129132204.GA23886@arm.com>

Dear Andrew Murray,

On Tue, 29 Jan 2013 13:22:04 +0000, Andrew Murray wrote:

> > +       /*
> > +        * Build an laddr array that describes the PCI device in a
> > DT
> > +        * way
> > +        */
> > +       laddr[0] = cpu_to_be32(port->devfn << 8);
> > +       laddr[1] = laddr[2] = 0;
> > +       intspec = cpu_to_be32(pin);
> > +
> > +       ret = of_irq_map_raw(port->dn, &intspec, 1, laddr, &oirq);
> > +       if (ret) {
> > +               dev_err(&pcie->pdev->dev,
> > +                       "%s: of_irq_map_raw() failed, %d\n",
> > +                       __func__, ret);
> > +               return ret;
> > +       }
> 
> Are you able to replace the above code with a call to of_irq_map_pci?
> I'm not sure which approach is better. The of_irq_map_pci function
> doesn't require the pin argument and instead uses the DT and/or
> performs its own pin swizzling. I guess this means that if there are
> PCIe devices in the DT tree that does any thing strange with pins
> then it would be reflected in the IRQ you get. I've found that you
> will also need to provide an implementation of
> pcibios_get_phb_of_node for this to work correctly (see my RFC bios32
> patch).

I tried to do so, but it doesn't work properly. Let me explain what I
did and the behavior that I observe.

First of all, I didn't reimplement the pcibios_get_phb_of_node(), but
instead, as Thierry Reding suggested, simply implemented the
hw_pci.scan() function as follows:

static struct pci_bus *mvebu_pcie_scan_bus(int nr, struct pci_sys_data *sys)
{
	struct mvebu_pcie *pcie = sys_to_pcie(sys);
	return pci_scan_root_bus(&pcie->pdev->dev, sys->busnr,
				 &mvebu_pcie_ops, sys, &sys->resources);
}

This allows to pass the "struct device *" pointer, which ultimately
allows the PCI devices to carry a pointer to the corresponding DT node.

The DT representing my PCIe controller and its interfaces is the
following:

		pcie-controller {
			compatible = "marvell,armada-370-xp-pcie";
			status = "disabled";

			#address-cells = <3>;
			#size-cells = <2>;

			bus-range = <0x00 0xff>;

			ranges = <0x00000800 0 0xd0040000 0xd0040000 0 0x00002000   /* port 0.0 registers */
				  0x00001000 0 0xd0080000 0xd0080000 0 0x00002000   /* port 1.0 registers */
				  0x81000000 0 0	  0xc0000000 0 0x00010000   /* downstream I/O */
				  0x82000000 0 0	  0xc1000000 0 0x08000000>; /* non-prefetchable memory */

			#interrupt-cells = <1>;
			interrupt-map-mask = <0xf800 0 0 1>;
			interrupt-map = <0x0800 0 0 1 &mpic 58 /* port 0.0 */
					 0x1000 0 0 1 &mpic 62>; /* port 1.0 */

			pcie@0,0 {
				device_type = "pciex";
				reg = <0x0800 0 0xd0040000 0 0x2000>;
				#address-cells = <3>;
				#size-cells = <2>;
				marvell,pcie-port = <0>;
				marvell,pcie-lane = <0>;
				clocks = <&gateclk 5>;
				status = "disabled";
			};

			pcie@1,0 {
				device_type = "pciex";
				reg = <0x1000 0 0xd0080000 0 0x2000>;
				#address-cells = <3>;
				#size-cells = <2>;
				marvell,pcie-port = <1>;
				marvell,pcie-lane = <0>;
				clocks = <&gateclk 9>;
				status = "disabled";
			};
		};

So we have two PCIe interfaces. lspci shows the following output:

00:01.0 PCI bridge: Marvell Technology Group Ltd. Device 1092
00:02.0 PCI bridge: Marvell Technology Group Ltd. Device 1092
01:00.0 Network controller: Intel Corporation Ultimate N WiFi Link 5300
02:00.0 USB controller: ASMedia Technology Inc. Device 1040

So:

 * On bus 0, we have two PCI-to-PCI bridges. Those are emulated in
   software and allow the Marvell PCIe driver to get dynamic assignment
   of address decoding windows. The entries in the interrupt-map DT
   property match the bus number and slot number of those PCI-to-PCI
   bridges.

 * On bus 1, we have the real PCIe device connected to the first PCIe
   interface. This bus 1 is made "visible" thanks to the 00:01.0
   PCI-to-PCI bridge.

 * On bus 2, we have the real PCIe device connected to the second PCIe
   interface. This bus 2 is made "visible" thanks to the 00:02.0
   PCI-to-PCI bridge.

Now, when I call the of_irq_map_pci() function, the problem is that the
"struct pci_dev" that it receives is the one corresponding to the
particular PCIe device we're interested in. And this "struct pci_dev"
has a non-NULL pointer to the "struct device_node" representing
"pcie0,0" or "pci0,1" above. Since the "struct device_node" is
non-NULL, of_irq_map_pci() builds a laddr[] with the bus number and
devfn of this device: bus number is 1, devfn is 0. And this doesn't
match with the interrupt-map that is in my DT, which associates the
interrupts numbers with the PCI-to-PCI bridges rather than the devices
themselves.

To me, the "struct pci_dev" representing the real PCIe devices should
have a NULL "struct device_node" pointer, because those device are not
represented in the DT. If this was the case, then the of_irq_map_pci()
would go one level up in the PCI hierarchy, find the "struct pci_dev"
that corresponds to the PCI-to-PCI bridge, which generates an laddr[]
having a bus number a devfn value matching the interrupt-map property.

If I do the following hack in of_irq_map_pci(), then everything works
nicely:

                } else {
                        /* We found a P2P bridge, check if it has a node */
                        ppnode = pci_device_to_OF_node(ppdev);
+                       if (pdev->bus->number != 0)
+                               ppnode = NULL;
                }


What this hack does is that if we are not on bus 0, it means that the
pci_dev is a real PCIe device, and therefore we force the code to
asssume it does not have a DT reference.

Isn't there a problem here in the PCI/DT code ? Is it normal that a
PCIe device that isn't described in the DT carries a non-NULL struct
device_node pointer?

If you need some more details about the problem, do not hesitate to ask.

Thanks a lot for your help,

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

WARNING: multiple messages have this Message-ID (diff)
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: Thu, 7 Feb 2013 15:37:50 +0100	[thread overview]
Message-ID: <20130207153750.0fef1192@skate> (raw)
In-Reply-To: <20130129132204.GA23886@arm.com>

Dear Andrew Murray,

On Tue, 29 Jan 2013 13:22:04 +0000, Andrew Murray wrote:

> > +       /*
> > +        * Build an laddr array that describes the PCI device in a
> > DT
> > +        * way
> > +        */
> > +       laddr[0] = cpu_to_be32(port->devfn << 8);
> > +       laddr[1] = laddr[2] = 0;
> > +       intspec = cpu_to_be32(pin);
> > +
> > +       ret = of_irq_map_raw(port->dn, &intspec, 1, laddr, &oirq);
> > +       if (ret) {
> > +               dev_err(&pcie->pdev->dev,
> > +                       "%s: of_irq_map_raw() failed, %d\n",
> > +                       __func__, ret);
> > +               return ret;
> > +       }
> 
> Are you able to replace the above code with a call to of_irq_map_pci?
> I'm not sure which approach is better. The of_irq_map_pci function
> doesn't require the pin argument and instead uses the DT and/or
> performs its own pin swizzling. I guess this means that if there are
> PCIe devices in the DT tree that does any thing strange with pins
> then it would be reflected in the IRQ you get. I've found that you
> will also need to provide an implementation of
> pcibios_get_phb_of_node for this to work correctly (see my RFC bios32
> patch).

I tried to do so, but it doesn't work properly. Let me explain what I
did and the behavior that I observe.

First of all, I didn't reimplement the pcibios_get_phb_of_node(), but
instead, as Thierry Reding suggested, simply implemented the
hw_pci.scan() function as follows:

static struct pci_bus *mvebu_pcie_scan_bus(int nr, struct pci_sys_data *sys)
{
	struct mvebu_pcie *pcie = sys_to_pcie(sys);
	return pci_scan_root_bus(&pcie->pdev->dev, sys->busnr,
				 &mvebu_pcie_ops, sys, &sys->resources);
}

This allows to pass the "struct device *" pointer, which ultimately
allows the PCI devices to carry a pointer to the corresponding DT node.

The DT representing my PCIe controller and its interfaces is the
following:

		pcie-controller {
			compatible = "marvell,armada-370-xp-pcie";
			status = "disabled";

			#address-cells = <3>;
			#size-cells = <2>;

			bus-range = <0x00 0xff>;

			ranges = <0x00000800 0 0xd0040000 0xd0040000 0 0x00002000   /* port 0.0 registers */
				  0x00001000 0 0xd0080000 0xd0080000 0 0x00002000   /* port 1.0 registers */
				  0x81000000 0 0	  0xc0000000 0 0x00010000   /* downstream I/O */
				  0x82000000 0 0	  0xc1000000 0 0x08000000>; /* non-prefetchable memory */

			#interrupt-cells = <1>;
			interrupt-map-mask = <0xf800 0 0 1>;
			interrupt-map = <0x0800 0 0 1 &mpic 58 /* port 0.0 */
					 0x1000 0 0 1 &mpic 62>; /* port 1.0 */

			pcie at 0,0 {
				device_type = "pciex";
				reg = <0x0800 0 0xd0040000 0 0x2000>;
				#address-cells = <3>;
				#size-cells = <2>;
				marvell,pcie-port = <0>;
				marvell,pcie-lane = <0>;
				clocks = <&gateclk 5>;
				status = "disabled";
			};

			pcie at 1,0 {
				device_type = "pciex";
				reg = <0x1000 0 0xd0080000 0 0x2000>;
				#address-cells = <3>;
				#size-cells = <2>;
				marvell,pcie-port = <1>;
				marvell,pcie-lane = <0>;
				clocks = <&gateclk 9>;
				status = "disabled";
			};
		};

So we have two PCIe interfaces. lspci shows the following output:

00:01.0 PCI bridge: Marvell Technology Group Ltd. Device 1092
00:02.0 PCI bridge: Marvell Technology Group Ltd. Device 1092
01:00.0 Network controller: Intel Corporation Ultimate N WiFi Link 5300
02:00.0 USB controller: ASMedia Technology Inc. Device 1040

So:

 * On bus 0, we have two PCI-to-PCI bridges. Those are emulated in
   software and allow the Marvell PCIe driver to get dynamic assignment
   of address decoding windows. The entries in the interrupt-map DT
   property match the bus number and slot number of those PCI-to-PCI
   bridges.

 * On bus 1, we have the real PCIe device connected to the first PCIe
   interface. This bus 1 is made "visible" thanks to the 00:01.0
   PCI-to-PCI bridge.

 * On bus 2, we have the real PCIe device connected to the second PCIe
   interface. This bus 2 is made "visible" thanks to the 00:02.0
   PCI-to-PCI bridge.

Now, when I call the of_irq_map_pci() function, the problem is that the
"struct pci_dev" that it receives is the one corresponding to the
particular PCIe device we're interested in. And this "struct pci_dev"
has a non-NULL pointer to the "struct device_node" representing
"pcie0,0" or "pci0,1" above. Since the "struct device_node" is
non-NULL, of_irq_map_pci() builds a laddr[] with the bus number and
devfn of this device: bus number is 1, devfn is 0. And this doesn't
match with the interrupt-map that is in my DT, which associates the
interrupts numbers with the PCI-to-PCI bridges rather than the devices
themselves.

To me, the "struct pci_dev" representing the real PCIe devices should
have a NULL "struct device_node" pointer, because those device are not
represented in the DT. If this was the case, then the of_irq_map_pci()
would go one level up in the PCI hierarchy, find the "struct pci_dev"
that corresponds to the PCI-to-PCI bridge, which generates an laddr[]
having a bus number a devfn value matching the interrupt-map property.

If I do the following hack in of_irq_map_pci(), then everything works
nicely:

                } else {
                        /* We found a P2P bridge, check if it has a node */
                        ppnode = pci_device_to_OF_node(ppdev);
+                       if (pdev->bus->number != 0)
+                               ppnode = NULL;
                }


What this hack does is that if we are not on bus 0, it means that the
pci_dev is a real PCIe device, and therefore we force the code to
asssume it does not have a DT reference.

Isn't there a problem here in the PCI/DT code ? Is it normal that a
PCIe device that isn't described in the DT carries a non-NULL struct
device_node pointer?

If you need some more details about the problem, do not hesitate to ask.

Thanks a lot for your help,

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-02-07 14:37 UTC|newest]

Thread overview: 433+ 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 ` 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   ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 02/27] of/pci: Add of_pci_get_devfn() function Thomas Petazzoni
2013-01-28 18:56   ` Thomas Petazzoni
2013-01-28 22:00   ` Stephen Warren
2013-01-28 22:00     ` Stephen Warren
2013-01-28 22:16     ` Thierry Reding
2013-01-28 22:16       ` Thierry Reding
2013-01-29 10:04       ` Thomas Petazzoni
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   ` 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   ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 05/27] arm: pci: add a align_resource hook Thomas Petazzoni
2013-01-28 18:56   ` Thomas Petazzoni
2013-01-29 15:12   ` Thomas Petazzoni
2013-01-29 15:12     ` Thomas Petazzoni
2013-01-29 15:15     ` Russell King - ARM Linux
2013-01-29 15:15       ` Russell King - ARM Linux
2013-01-29 15:23       ` Thomas Petazzoni
2013-01-29 15:23         ` Thomas Petazzoni
2013-01-29 15:25         ` Russell King - ARM Linux
2013-01-29 15:25           ` Russell King - ARM Linux
2013-01-29 15:28           ` Thomas Petazzoni
2013-01-29 15:28             ` Thomas Petazzoni
2013-01-29 15:58     ` Russell King - ARM Linux
2013-01-29 15:58       ` Russell King - ARM Linux
2013-01-29 16:20       ` Thomas Petazzoni
2013-01-29 16:20         ` Thomas Petazzoni
2013-01-29 16:45         ` Arnd Bergmann
2013-01-29 16:45           ` Arnd Bergmann
2013-01-29 17:09           ` Thomas Petazzoni
2013-01-29 17:09             ` Thomas Petazzoni
2013-01-29 20:15             ` Arnd Bergmann
2013-01-29 20:15               ` Arnd Bergmann
2013-01-29 20:33               ` Thomas Petazzoni
2013-01-29 20:33                 ` Thomas Petazzoni
2013-01-29 21:59                 ` Thomas Petazzoni
2013-01-29 21:59                   ` Thomas Petazzoni
2013-01-29 22:17                   ` Stephen Warren
2013-01-29 22:17                     ` Stephen Warren
2013-01-30  4:49                   ` Jason Gunthorpe
2013-01-30  4:49                     ` Jason Gunthorpe
2013-01-29 22:54                 ` Arnd Bergmann
2013-01-29 22:54                   ` Arnd Bergmann
2013-01-30  4:21                   ` Jason Gunthorpe
2013-01-30  4:21                     ` Jason Gunthorpe
2013-01-30  9:55                     ` Arnd Bergmann
2013-01-30  9:55                       ` Arnd Bergmann
2013-01-30 11:47                       ` Thomas Petazzoni
2013-01-30 11:47                         ` Thomas Petazzoni
2013-01-30 16:17                         ` Arnd Bergmann
2013-01-30 16:17                           ` Arnd Bergmann
2013-01-30 16:38                           ` Thomas Petazzoni
2013-01-30 16:38                             ` Thomas Petazzoni
2013-01-30 20:48                         ` Bjorn Helgaas
2013-01-30 20:48                           ` Bjorn Helgaas
2013-01-30 21:06                           ` Jason Gunthorpe
2013-01-30 21:06                             ` Jason Gunthorpe
2013-01-30  4:56           ` Jason Gunthorpe
2013-01-30  4:56             ` Jason Gunthorpe
2013-01-30  8:19             ` Thomas Petazzoni
2013-01-30  8:19               ` Thomas Petazzoni
2013-01-30  9:46             ` Arnd Bergmann
2013-01-30  9:46               ` Arnd Bergmann
2013-01-30  9:54               ` Thomas Petazzoni
2013-01-30  9:54                 ` Thomas Petazzoni
2013-01-30 10:03                 ` Arnd Bergmann
2013-01-30 10:03                   ` Arnd Bergmann
2013-01-30 11:42                   ` Thomas Petazzoni
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   ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 07/27] PCI: Add software-emulated host bridge Thomas Petazzoni
2013-01-28 18:56   ` Thomas Petazzoni
2013-01-28 20:18   ` Arnd Bergmann
2013-01-28 20:18     ` Arnd Bergmann
2013-01-28 22:03     ` Stephen Warren
2013-01-28 22:03       ` Stephen Warren
2013-01-28 22:09       ` Jason Gunthorpe
2013-01-28 22:09         ` Jason Gunthorpe
2013-01-28 22:18         ` Thomas Petazzoni
2013-01-28 22:18           ` Thomas Petazzoni
2013-01-28 22:23           ` Jason Gunthorpe
2013-01-28 22:23             ` Jason Gunthorpe
2013-01-28 22:30             ` Thomas Petazzoni
2013-01-28 22:30               ` Thomas Petazzoni
2013-01-28 22:51               ` Jason Gunthorpe
2013-01-28 22:51                 ` Jason Gunthorpe
2013-01-29 10:01                 ` Thomas Petazzoni
2013-01-29 10:01                   ` Thomas Petazzoni
2013-01-29 17:42                   ` Jason Gunthorpe
2013-01-29 17:42                     ` Jason Gunthorpe
2013-01-29 17:43                     ` Thomas Petazzoni
2013-01-29 17:43                       ` Thomas Petazzoni
2013-01-29  2:40         ` Bjorn Helgaas
2013-01-29  2:40           ` Bjorn Helgaas
2013-01-29  6:16           ` Jason Gunthorpe
2013-01-29  6:16             ` Jason Gunthorpe
2013-01-28 22:09     ` Thomas Petazzoni
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 18:56   ` Thomas Petazzoni
2013-01-28 19:35   ` Jason Gunthorpe
2013-01-28 19:35     ` Jason Gunthorpe
2013-01-28 19:39     ` Thomas Petazzoni
2013-01-28 19:39       ` Thomas Petazzoni
2013-01-28 19:55       ` Jason Gunthorpe
2013-01-28 19:55         ` Jason Gunthorpe
2013-01-28 22:06         ` Stephen Warren
2013-01-28 22:06           ` Stephen Warren
2013-01-28 22:16           ` Jason Gunthorpe
2013-01-28 22:16             ` Jason Gunthorpe
2013-01-29 22:35   ` Bjorn Helgaas
2013-01-29 22:35     ` Bjorn Helgaas
2013-01-29 23:06     ` Arnd Bergmann
2013-01-29 23:06       ` Arnd Bergmann
2013-01-30  4:12       ` Jason Gunthorpe
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   ` 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   ` 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 18:56   ` Thomas Petazzoni
2013-01-28 22:08   ` Stephen Warren
2013-01-28 22:08     ` Stephen Warren
2013-01-28 22:21     ` Thomas Petazzoni
2013-01-28 22:21       ` Thomas Petazzoni
2013-01-28 22:27       ` Stephen Warren
2013-01-28 22:27         ` Stephen Warren
2013-01-28 22:44         ` Thomas Petazzoni
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   ` 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   ` 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   ` 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 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   ` 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   ` 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 18:56   ` Thomas Petazzoni
2013-01-28 19:51   ` Jason Gunthorpe
2013-01-28 19:51     ` Jason Gunthorpe
2013-01-29  8:40     ` Thomas Petazzoni
2013-01-29  8:40       ` Thomas Petazzoni
2013-01-29 17:40       ` Jason Gunthorpe
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 18:56   ` Thomas Petazzoni
2013-01-28 22:21   ` Stephen Warren
2013-01-28 22:21     ` Stephen Warren
2013-01-29  8:41     ` Thomas Petazzoni
2013-01-29  8:41       ` Thomas Petazzoni
2013-01-29  9:20       ` Thierry Reding
2013-01-29  9:20         ` Thierry Reding
2013-01-29  9:21         ` Thomas Petazzoni
2013-01-29  9:21           ` Thomas Petazzoni
2013-02-07 10:24         ` Thomas Petazzoni
2013-02-07 10:24           ` Thomas Petazzoni
2013-02-07 15:46           ` Bjorn Helgaas
2013-02-07 15:46             ` Bjorn Helgaas
2013-02-07 16:00             ` Thomas Petazzoni
2013-02-07 16:00               ` Thomas Petazzoni
2013-02-07 18:08               ` Bjorn Helgaas
2013-02-07 18:08                 ` Bjorn Helgaas
2013-02-07 18:15                 ` Jason Gunthorpe
2013-02-07 18:15                   ` Jason Gunthorpe
2013-02-07 18:30                   ` Bjorn Helgaas
2013-02-07 18:30                     ` Bjorn Helgaas
2013-02-07 18:43                 ` Thierry Reding
2013-02-07 18:43                   ` Thierry Reding
2013-01-29 19:47       ` Stephen Warren
2013-01-29 19:47         ` Stephen Warren
2013-01-29  3:29   ` Bjorn Helgaas
2013-01-29  3:29     ` Bjorn Helgaas
2013-01-29  5:55     ` Jason Gunthorpe
2013-01-29  5:55       ` Jason Gunthorpe
2013-01-29  8:00       ` Thomas Petazzoni
2013-01-29  8:00         ` Thomas Petazzoni
2013-01-29 17:47       ` Bjorn Helgaas
2013-01-29 17:47         ` Bjorn Helgaas
2013-01-29 18:14         ` Thomas Petazzoni
2013-01-29 18:14           ` Thomas Petazzoni
2013-01-29 18:41         ` Jason Gunthorpe
2013-01-29 18:41           ` Jason Gunthorpe
2013-01-29 19:07           ` Bjorn Helgaas
2013-01-29 19:07             ` Bjorn Helgaas
2013-01-29 19:18             ` Jason Gunthorpe
2013-01-29 19:18               ` Jason Gunthorpe
2013-01-29 19:38               ` Bjorn Helgaas
2013-01-29 19:38                 ` Bjorn Helgaas
2013-01-29 22:27                 ` Bjorn Helgaas
2013-01-29 22:27                   ` Bjorn Helgaas
2013-01-30  4:24                   ` Jason Gunthorpe
2013-01-30  4:24                     ` Jason Gunthorpe
2013-01-30  9:35                   ` Thomas Petazzoni
2013-01-30  9:35                     ` Thomas Petazzoni
2013-01-30 18:52                     ` Bjorn Helgaas
2013-01-30 18:52                       ` Bjorn Helgaas
2013-01-30 22:28                       ` Thomas Petazzoni
2013-01-30 22:28                         ` Thomas Petazzoni
2013-01-30 23:10                         ` Jason Gunthorpe
2013-01-30 23:10                           ` Jason Gunthorpe
2013-01-30 23:48                         ` Bjorn Helgaas
2013-01-30 23:48                           ` Bjorn Helgaas
2013-01-31 16:04                       ` Thomas Petazzoni
2013-01-31 16:04                         ` Thomas Petazzoni
2013-01-31 16:30                         ` Bjorn Helgaas
2013-01-31 16:30                           ` Bjorn Helgaas
2013-01-31 16:33                           ` Thomas Petazzoni
2013-01-31 16:33                             ` Thomas Petazzoni
2013-01-31 17:03                             ` Bjorn Helgaas
2013-01-31 17:03                               ` Bjorn Helgaas
2013-01-31 16:42                           ` Russell King - ARM Linux
2013-01-31 16:42                             ` Russell King - ARM Linux
2013-01-29 13:22   ` Andrew Murray
2013-01-29 13:22     ` Andrew Murray
2013-01-29 13:45     ` Thomas Petazzoni
2013-01-29 13:45       ` Thomas Petazzoni
2013-01-29 14:05       ` Andrew Murray
2013-01-29 14:05         ` Andrew Murray
2013-01-29 14:20         ` Thierry Reding
2013-01-29 14:20           ` Thierry Reding
2013-01-29 14:29           ` Thomas Petazzoni
2013-01-29 14:29             ` Thomas Petazzoni
2013-01-29 15:02             ` Thierry Reding
2013-01-29 15:02               ` Thierry Reding
2013-01-29 15:08               ` Andrew Murray
2013-01-29 15:08                 ` Andrew Murray
2013-01-29 15:10               ` Thomas Petazzoni
2013-01-29 15:10                 ` Thomas Petazzoni
2013-02-07 14:37     ` Thomas Petazzoni [this message]
2013-02-07 14:37       ` Thomas Petazzoni
2013-02-07 15:51       ` Andrew Murray
2013-02-07 15:51         ` Andrew Murray
2013-02-07 16:19         ` Thomas Petazzoni
2013-02-07 16:19           ` Thomas Petazzoni
2013-02-07 16:40           ` Thomas Petazzoni
2013-02-07 16:40             ` Thomas Petazzoni
2013-02-07 16:53             ` Andrew Murray
2013-02-07 16:53               ` Andrew Murray
2013-02-07 17:14               ` Thomas Petazzoni
2013-02-07 17:14                 ` Thomas Petazzoni
2013-02-07 17:29                 ` Andrew Murray
2013-02-07 17:29                   ` Andrew Murray
2013-02-07 17:37                   ` Thomas Petazzoni
2013-02-07 17:37                     ` Thomas Petazzoni
2013-02-07 18:21                     ` Jason Gunthorpe
2013-02-07 18:21                       ` Jason Gunthorpe
2013-02-07 23:25                       ` Arnd Bergmann
2013-02-07 23:25                         ` Arnd Bergmann
2013-02-08  0:44                         ` Jason Gunthorpe
2013-02-08  0:44                           ` Jason Gunthorpe
2013-02-09 22:23                           ` Arnd Bergmann
2013-02-09 22:23                             ` Arnd Bergmann
2013-02-12 19:26                             ` Jason Gunthorpe
2013-02-12 19:26                               ` Jason Gunthorpe
2013-02-07 18:30                     ` Andrew Murray
2013-02-07 18:30                       ` Andrew Murray
2013-02-07 23:27                       ` Arnd Bergmann
2013-02-07 23:27                         ` Arnd Bergmann
2013-01-30 11:32   ` Russell King - ARM Linux
2013-01-30 11:32     ` Russell King - ARM Linux
2013-01-30 11:37     ` Thomas Petazzoni
2013-01-30 11:37       ` Thomas Petazzoni
2013-01-30 12:03     ` Thierry Reding
2013-01-30 12:03       ` Thierry Reding
2013-01-30 13:07       ` Thomas Petazzoni
2013-01-30 13:07         ` Thomas Petazzoni
2013-01-30 15:08       ` Russell King - ARM Linux
2013-01-30 15:08         ` Russell King - ARM Linux
2013-01-30 15:19         ` Russell King - ARM Linux
2013-01-30 15:19           ` Russell King - ARM Linux
2013-01-30 15:36           ` Thomas Petazzoni
2013-01-30 15:36             ` Thomas Petazzoni
2013-01-30 15:46             ` Russell King - ARM Linux
2013-01-30 15:46               ` Russell King - ARM Linux
2013-01-31 14:30               ` Thomas Petazzoni
2013-01-31 14:30                 ` Thomas Petazzoni
2013-01-31 14:50                 ` Russell King - ARM Linux
2013-01-31 14:50                   ` Russell King - ARM Linux
2013-01-31 14:57                   ` Thomas Petazzoni
2013-01-31 14:57                     ` Thomas Petazzoni
2013-01-31 15:08                     ` Russell King - ARM Linux
2013-01-31 15:08                       ` Russell King - ARM Linux
2013-01-31 15:22                       ` Thomas Petazzoni
2013-01-31 15:22                         ` Thomas Petazzoni
2013-01-31 15:36                         ` Russell King - ARM Linux
2013-01-31 15:36                           ` Russell King - ARM Linux
2013-01-31 15:47                           ` Thomas Petazzoni
2013-01-31 15:47                             ` Thomas Petazzoni
2013-01-31 15:48                             ` Russell King - ARM Linux
2013-01-31 15:48                               ` Russell King - ARM Linux
2013-01-31 16:18                           ` Arnd Bergmann
2013-01-31 16:18                             ` Arnd Bergmann
2013-01-31 18:02                             ` Jason Gunthorpe
2013-01-31 18:02                               ` Jason Gunthorpe
2013-01-31 20:46                               ` Arnd Bergmann
2013-01-31 20:46                                 ` Arnd Bergmann
2013-01-31 22:44                                 ` Jason Gunthorpe
2013-01-31 22:44                                   ` Jason Gunthorpe
2013-02-01 11:30                                   ` Arnd Bergmann
2013-02-01 11:30                                     ` Arnd Bergmann
2013-02-01 19:52                                     ` Jason Gunthorpe
2013-02-01 19:52                                       ` Jason Gunthorpe
2013-02-06 16:51                                   ` Thomas Petazzoni
2013-02-06 16:51                                     ` Thomas Petazzoni
2013-02-06 17:09                                     ` Jason Gunthorpe
2013-02-06 17:09                                       ` Jason Gunthorpe
2013-02-06 17:18                                       ` Thomas Petazzoni
2013-02-06 17:18                                         ` Thomas Petazzoni
2013-02-06 17:50                                         ` Jason Gunthorpe
2013-02-06 17:50                                           ` Jason Gunthorpe
2013-02-06 18:02                                           ` Thomas Petazzoni
2013-02-06 18:02                                             ` Thomas Petazzoni
2013-02-06 18:22                                           ` Stephen Warren
2013-02-06 18:22                                             ` Stephen Warren
2013-02-06 18:39                                             ` Jason Gunthorpe
2013-02-06 18:39                                               ` Jason Gunthorpe
2013-02-06 18:42                                             ` Thomas Petazzoni
2013-02-06 18:42                                               ` Thomas Petazzoni
2013-02-06 22:04                                               ` Arnd Bergmann
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-07 23:33                                               ` Arnd Bergmann
2013-02-08  4:21                                             ` Bjorn Helgaas
2013-02-08  4:21                                               ` Bjorn Helgaas
2013-02-08  8:14                                               ` Thomas Petazzoni
2013-02-08  8:14                                                 ` Thomas Petazzoni
2013-02-12 16:00                                                 ` Arnd Bergmann
2013-02-12 16:00                                                   ` Arnd Bergmann
2013-02-12 18:41                                                   ` Jason Gunthorpe
2013-02-12 18:41                                                     ` Jason Gunthorpe
2013-02-12 19:02                                                     ` Arnd Bergmann
2013-02-12 19:02                                                       ` Arnd Bergmann
2013-02-12 19:38                                                       ` Jason Gunthorpe
2013-02-12 19:38                                                         ` Jason Gunthorpe
2013-02-12 23:05                                                         ` Arnd Bergmann
2013-02-12 23:05                                                           ` Arnd Bergmann
2013-02-13  0:32                                                           ` Jason Gunthorpe
2013-02-13  0:32                                                             ` Jason Gunthorpe
2013-02-13 18:53                                                             ` Arnd Bergmann
2013-02-13 18:53                                                               ` Arnd Bergmann
2013-02-13 19:12                                                               ` Jason Gunthorpe
2013-02-13 19:12                                                                 ` Jason Gunthorpe
2013-02-13 19:51                                                                 ` Thomas Petazzoni
2013-02-13 19:51                                                                   ` Thomas Petazzoni
2013-02-13 21:10                                                                 ` Arnd Bergmann
2013-02-13 21:10                                                                   ` Arnd Bergmann
2013-02-13 21:20                                                                   ` Yinghai Lu
2013-02-13 21:20                                                                     ` Yinghai Lu
2013-02-13 22:24                                                                     ` Arnd Bergmann
2013-02-13 22:24                                                                       ` Arnd Bergmann
2013-02-13 21:02                                                             ` Yinghai Lu
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-01-31  7:10             ` Thierry Reding
2013-02-01  0:34   ` Stephen Warren
2013-02-01  0:34     ` Stephen Warren
2013-02-01  1:41     ` Jason Gunthorpe
2013-02-01  1:41       ` Jason Gunthorpe
2013-02-01  2:21       ` Stephen Warren
2013-02-01  2:21         ` Stephen Warren
2013-02-01  3:51         ` Jason Gunthorpe
2013-02-01  3:51           ` Jason Gunthorpe
2013-02-01  9:03           ` Thomas Petazzoni
2013-02-01  9:03             ` Thomas Petazzoni
2013-02-01 16:07             ` Arnd Bergmann
2013-02-01 16:07               ` Arnd Bergmann
2013-02-01 16:26               ` Russell King - ARM Linux
2013-02-01 16:26                 ` Russell King - ARM Linux
2013-02-01 17:45                 ` Arnd Bergmann
2013-02-01 17:45                   ` Arnd Bergmann
2013-02-01 19:58                   ` Jason Gunthorpe
2013-02-01 19:58                     ` Jason Gunthorpe
2013-02-01  8:46         ` Thomas Petazzoni
2013-02-01  8:46           ` Thomas Petazzoni
2013-02-01 16:02           ` Arnd Bergmann
2013-02-01 16:02             ` Arnd Bergmann
2013-02-01 17:57           ` Stephen Warren
2013-02-01 17:57             ` Stephen Warren
2013-02-01 19:39             ` Jason Gunthorpe
2013-02-01 19:39               ` Jason Gunthorpe
2013-02-01 20:30               ` Stephen Warren
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   ` 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   ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 22/27] arm: mvebu: add PCIe Device Tree informations for Armada XP Thomas Petazzoni
2013-01-28 18:56   ` Thomas Petazzoni
2013-02-06 22:41   ` Arnd Bergmann
2013-02-06 22:41     ` Arnd Bergmann
2013-02-06 23:07     ` Thomas Petazzoni
2013-02-06 23:07       ` Thomas Petazzoni
2013-02-07  8:04       ` Arnd Bergmann
2013-02-07  8:04         ` Arnd Bergmann
2013-02-07  8:45         ` Thomas Petazzoni
2013-02-07  8:45           ` Thomas Petazzoni
2013-02-07  9:09           ` Arnd Bergmann
2013-02-07  9:09             ` Arnd Bergmann
2013-02-07  1:05     ` Jason Gunthorpe
2013-02-07  1:05       ` Jason Gunthorpe
2013-02-07  7:28       ` Thierry Reding
2013-02-07  7:28         ` Thierry Reding
2013-02-07 17:49         ` Jason Gunthorpe
2013-02-07 17:49           ` Jason Gunthorpe
2013-02-07  8:24       ` Arnd Bergmann
2013-02-07  8:24         ` Arnd Bergmann
2013-02-07 17:00         ` Jason Gunthorpe
2013-02-07 17:00           ` Jason Gunthorpe
2013-02-07 23:44           ` Arnd Bergmann
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   ` 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   ` 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   ` 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   ` Thomas Petazzoni
2013-01-28 18:56 ` [PATCH v2 27/27] arm: mvebu: update defconfig with PCI and USB support Thomas Petazzoni
2013-01-28 18:56   ` 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=20130207153750.0fef1192@skate \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=alior@marvell.com \
    --cc=andrew.murray@arm.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=jgunthorpe@obsidianresearch.com \
    --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 \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.