Messages in this thread | | | Date | Tue, 9 Feb 2016 10:26:28 -0600 | From | Bjorn Helgaas <> | Subject | Re: [PATCH v5 3/3] pci, pci-thunder-ecam: Add driver for ThunderX-pass1 on-chip devices |
| |
On Tue, Feb 09, 2016 at 10:25:33AM +0100, Arnd Bergmann wrote: > On Monday 08 February 2016 17:24:30 Bjorn Helgaas wrote: > > > > > > > >I assume your system conforms to expectations like these; I'm just > > > >pointing them out because you mentioned buses with multiple devices on > > > >them, which is definitely something one doesn't expect in PCIe. > > > > > > The topology we have is currently working with the kernel's core PCI > > > code. I don't really want to get into discussing what the > > > definition of PCIe is. We have multiple devices (more than 32) on a > > > single bus, and they have PCI Express and ARI Capabilities. Is that > > > PCIe? I don't know. > > > > I don't need to know the details of your topology. As long as it > > conforms to the PCIe spec, it should be fine. If it *doesn't* conform > > to the spec, but things currently seem to work, that's less fine, > > because a future Linux change is liable to break something for you. > > > > I was a little concerned about your statement that "there are multiple > > devices residing on each bus, so from that point of view it cannot be > > PCIe." That made it sound like you're doing something outside the > > spec. If you're just using regular multi-function devices or ARI, > > then I don't see any issue (or any reason to say it can't be PCIe). > > It doesn't conform to the PCIe port spec, because there are no external > ports but just integrated devices in the host bridge.
Is there a spec section you have in mind? Based on sec 1.3.1, I don't think there's a requirement to have PCI Express Ports (is that what you mean by "external ports"?)
Root Complex Integrated Endpoints (sec 1.3.2.3) are clearly supported and they would not be behind a Root Port. If you're using those, I hope they're correctly identified via the PCIe capability Device/Port Type (sec 7.8.2) because we rely on that type to figure out whether the link-related registers are implemented.
The spec does include rules related to peer-to-peer transactions, MPS, ASPM, error reporting, etc., and Linux relies on those, so I think it would be important to get those right.
> For this special > case, I don't think it matters at all from the point of view of the DT > binding whether we call the node name "pci" or "pcie".
And the PCI core doesn't even know the node name, it doesn't matter there either.
Bjorn
| |