pci node question

Yoder Stuart-B08248 B08248 at freescale.com
Tue Apr 24 01:48:37 EST 2012



> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh at kernel.crashing.org]
> Sent: Friday, April 20, 2012 4:11 PM
> To: Kumar Gala
> Cc: Yoder Stuart-B08248; linuxppc-dev at lists.ozlabs.org
> Subject: Re: pci node question
> 
> On Fri, 2012-04-20 at 13:53 -0500, Kumar Gala wrote:
> > On Apr 20, 2012, at 1:37 PM, Yoder Stuart-B08248 wrote:
> >
> > > There was refactoring change a while back that moved
> > > the interrupt map down into the virtual pci bridge.
> > >
> > > example:
> > > 42 /* controller at 0x200000 */
> > > 43 &pci0 {
> > > 44         compatible = "fsl,p2041-pcie", "fsl,qoriq-pcie-v2.2";
> > > 45         device_type = "pci";
> > > 46         #size-cells = <2>;
> > > 47         #address-cells = <3>;
> > > 48         bus-range = <0x0 0xff>;
> > > 49         clock-frequency = <33333333>;
> > > 50         interrupts = <16 2 1 15>;
> > > 51         pcie at 0 {
> > > 52                 reg = <0 0 0 0 0>;
> > > 53                 #interrupt-cells = <1>;
> > > 54                 #size-cells = <2>;
> > > 55                 #address-cells = <3>;
> > > 56                 device_type = "pci";
> > > 57                 interrupts = <16 2 1 15>;
> > > 58                 interrupt-map-mask = <0xf800 0 0 7>;
> > > 59                 interrupt-map = <
> > > 60                         /* IDSEL 0x0 */
> > > 61                         0000 0 0 1 &mpic 40 1 0 0
> > > 62                         0000 0 0 2 &mpic 1 1 0 0
> > > 63                         0000 0 0 3 &mpic 2 1 0 0
> > > 64                         0000 0 0 4 &mpic 3 1 0 0
> > > 65                         >;
> > > 66         };
> > > 67 };
> > >
> > > Why was the interrupt-map moved here?
> >
> > Its been a while, but I think i moved it down because of which node is used for interrupt handling in
> linux.
> 
> Yeah, it would swizzle if going accross the virtual P2P bridge. On the
> other hand, if it's PCIe, the children of the vP2P should always be at
> device 0 and thus the swizzling should be a NOP no ? So we -could- leave
> it in the PHB unless I'm mistaken...
> 
> On the other hand, we probably want to fix the mapping code to handle
> things like SR-IOV PFs with different device numbers... do those get
> swizzled ? In that case we might want to keep things down the virtual
> bridge.
> 
> > > Do we really need the error interrupt specified twice?
> >
> > I put it twice because it has multiple purposes, one has to do with interrupts defined by the PCI spec
> vs ones defined via FSL controller.
> >
> > > Why is there a zeroed out reg property: reg = <0 0 0 0 0> ??
> >
> > scratching my head, what happens if you remove it?
> 
> If you remove it, the kernel will fail to match the vP2P with the
> corresponding struct pci_dev.... It's not "zeroed out". It contains a
> valid bus/dev/fn ... of 0,0,0 :-)

Hmmm... I vaguely understand what you are saying.   But why is the
length zero, that is what doesn't make sense on the surface?

We really should put a comment on that reg property-- can you suggest
a short comment that would capture what the reg with all zeros 
is for?  ...I'll submit a patch.

Thanks,
Stuart


More information about the Linuxppc-dev mailing list