From: Andrew Murray <andrew.murray@arm.com>
To: Thomas Petazzoni <thomas.petazzoni@free-electrons.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: Tue, 29 Jan 2013 14:05:22 +0000 [thread overview]
Message-ID: <20130129140522.GA24310@arm.com> (raw)
In-Reply-To: <20130129144522.44ed7373@skate>
On Tue, Jan 29, 2013 at 01:45:22PM +0000, Thomas Petazzoni wrote:
> Dear Andrew Murray,
>
> On Tue, 29 Jan 2013 13:22:04 +0000, Andrew Murray wrote:
>
> > > +static int __init mvebu_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
> > > +{
> >
> > [snip]
> >
> > > +
> > > + /*
> > > + * 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 did try using the of_irq_map_pci() function, but unfortunately, it
> didn't work. IIRC, it didn't work because none of the pci_dev in my PCI
> tree had any 'struct device_node' associated to them, or at least not
> the one that had the right pdev->bus->number and pdev->devfn.
>
> But, I guess that your patch that implements pcibios_get_phb_of_node()
> should fix this problem. I'll try this. Thanks!
My bios32 patch departs slightly from your v2 04/27 patch in that it updates
hw_pci to contain a device node rather than opaque private data and my
pcibios_get_phb_of_node implementation relies on this. If you wanted to stick
with the implementation you and Thierry share then you'd have to find another
way to get to the device node from the void **private_data.
> > > +static int mvebu_pcie_init(void)
> > > +{
> > > + return platform_driver_probe(&mvebu_pcie_driver,
> > > + mvebu_pcie_probe);
> > > +}
> >
> > If you have multiple 'mvebu-pcie' in your DT then you will end up
> > with multiple calls to
> > mvebu_pcie_probe/mvebu_pcie_enable/pci_common_init.
>
> Right. In practice, there will only ever be a single DT node, since all
> PCIe interfaces are sub-nodes of the PCI controller node. But I
> understand the theoretical problem.
>
> > However pci_common_init/pcibios_init_hw assumes it will only ever be called
> > once, and will thus result in trying to create multiple busses with the same
> > bus number. (The first root bus it creates is always zero provided you haven't
> > implemented hw->scan).
> >
> > I noticed this in Thierry's patch set and posted an RFC patch which overcomes
> > this issue (patchwork.kernel.org/patch/2001171) and others. Perhaps you would
> > want to include this in your patchset?
>
> Sure, I'll give it a test, and report if it works for me.
>
> Thanks a lot!
>
> Thomas
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
>
next prev parent reply other threads:[~2013-01-29 14:05 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 [this message]
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
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=20130129140522.GA24310@arm.com \
--to=andrew.murray@arm.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=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 \
--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).