From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Ryder Lee <ryder.lee@mediatek.com>
Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Arnd Bergmann <arnd@arndb.de>,
linux-pci@vger.kernel.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Rob Herring <robh+dt@kernel.org>,
linux-mediatek@lists.infradead.org,
Bjorn Helgaas <bhelgaas@google.com>,
Frank Rowand <frowand.list@gmail.com>,
"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 1/2] of_pci_irq: add a check to fallback to standard device tree parsing
Date: Tue, 06 Feb 2018 15:50:24 +1100 [thread overview]
Message-ID: <1517892624.2312.167.camel@kernel.crashing.org> (raw)
In-Reply-To: <1517891471.20869.6.camel@mtkswgap22>
On Tue, 2018-02-06 at 12:31 +0800, Ryder Lee wrote:
> On Tue, 2018-02-06 at 15:05 +1100, Benjamin Herrenschmidt wrote:
> > On Tue, 2018-02-06 at 10:38 +0800, Ryder Lee wrote:
> > >
> > > I think the code should look at the bridge address <0x0800 ...> we list
> > > in bindings for resolving interrupts in this case, but it seems like it
> > > use the 'pdev->defvn << 8' which is not really we want and will lead to
> > > mismatch.
> > >
> > > interrupt-map-mask = <0xf800 0 0 7>;
> > > interrupt-map = <0x0000 0 0 1 ...>,
> > > <0x0000 0 0 2 ...>,
> > > <0x0000 0 0 3 ...>,
> > > <0x0000 0 0 4 ...>,
> > >
> > > 0x0800 0 0 1 ...>,
> > > 0x0800 0 0 2 ...>,
> > > 0x0800 0 0 3 ...>,
> > > 0x0800 0 0 4 ...>;
> > > ...
> > > pcie@1,0 {
> > > reg = <0x0800 0 0 0 0>;
> > > ...
> > > };
> > >
> > >
> > > Or, alternatively, we could add a interrupt-map property in both child
> > > and root node to solve this. The below example is my original version as
> > > I don't want to change that function either.
> >
> > The code looks at devfn because it's meant to work for PCI including
> > when the devices dont have a device node in the DT.
> >
> > What I'm trying to figure out is what is it that your parent and
> > children are representing here. Which is/are the root complex ?
>
> This is a single root complex with 2 root port (children in DT).
>
> > What is the actual topology as visible on the PCIe bus (is lspci output
> > basically) and how does that map to your representation ?
>
> # lspci
> 00:00.0 Class 0604: 14c3:0801 //1st slot - pcie@0,0
> 00:01.0 Class 0604: 14c3:0801 //2nd slot - pcie@1,0
>
> 01:00.0 Class 0280: 14c3:7603 //A device which is connected to 1st slot
> 02:00.0 Class 0200: 8086:1521 //A 4 func device which is connected to
> 2nd slot
> 02:00.1 Class 0200: 8086:1521
> 02:00.2 Class 0200: 8086:1521
> 02:00.3 Class 0200: 8086:1521
Ok so that's a rather standard setup. The "devfn << 8" of your root
ports should be the exact same thing as their first reg property entry,
I'm not sure why you have a mismatch here.
However, that map only represents the INTA..D lines going to the root
ports, not how these get mapped to children of the root ports.
of_irq_parse_pci() will implement standard swizzling if you don't have
nodes for your devices at all. If you do, however, the code assumes
you have a correct and complete interrupt tree in the device-tree.
That means that you need in each "p2p bridge", including your root
ports, an interrupt-map that will map the children INTA...D of that
bridge to the parent INTA...D of that bridge.
Alternatively, you can make the maps in the root ports point directly
to the parent PIC. If you chose to do that, then the interrupt-map in
your root complex becomes only useful to represent the root ports own
interrutps (hotplug, AER,...) and could be replaced by just having
interrupt-parent & interrupts in those root port nodes.
Cheers,
Ben.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2018-02-06 4:50 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-31 7:41 [PATCH 1/2] of_pci_irq: add a check to fallback to standard device tree parsing Ryder Lee
2018-01-31 7:41 ` [PATCH 2/2] dt-bindings: PCI: MediaTek: Correct the interrupt-map properties Ryder Lee
2018-02-05 6:08 ` Rob Herring
2018-02-07 12:43 ` Ryder Lee
2018-01-31 16:02 ` [PATCH 1/2] of_pci_irq: add a check to fallback to standard device tree parsing Rob Herring
2018-02-02 9:32 ` Ryder Lee
2018-02-05 21:36 ` Benjamin Herrenschmidt
2018-02-06 2:38 ` Ryder Lee
2018-02-06 4:05 ` Benjamin Herrenschmidt
2018-02-06 4:31 ` Ryder Lee
2018-02-06 4:50 ` Benjamin Herrenschmidt [this message]
2018-02-06 5:42 ` Ryder Lee
2018-02-06 22:31 ` Benjamin Herrenschmidt
2018-02-07 1:58 ` Ryder Lee
2018-03-15 17:43 ` Lorenzo Pieralisi
2018-03-16 0:58 ` Ryder Lee
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=1517892624.2312.167.camel@kernel.crashing.org \
--to=benh@kernel.crashing.org \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=robh+dt@kernel.org \
--cc=ryder.lee@mediatek.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).