On Tue, Sep 09, 2014 at 10:16:04AM +0100, Arnd Bergmann wrote: > On Tuesday 09 September 2014 09:46:21 Liviu Dudau wrote: > > On Tue, Sep 09, 2014 at 06:54:21AM +0100, Yijing Wang wrote: > > > >>> on new requests. This function gets called quite a lot and I'm trying not to > > > >>> make it too heavy weight. > > > >> > > > >> Generally, nothing should be accessing the same DT value frequently. > > > >> It should get cached somewhere. > > > >> > > > > > > > > The problem appears for DTs that don't have the pci-domain info. Then the cached > > > > value is left at the default non-valid value and attempts to rescan the DT will > > > > be made every time the function is called. > > > > > > > >> I don't really understand how domains are used so it's hard to provide > > > >> a recommendation here. Do domains even belong in the DT? > > > > > > > > ACPI calls them segments and the way Bjorn explained it to me at some moment was > > > > that it was an attempt to split up a bus in different groups (or alternatively, > > > > merge a few busses together). To be honest I haven't seen systems where the domain > > > > is anything other than zero, but JasonG (or maybe Benjamin) were floating an > > > > idea of using the domain number to identify physical slots. > > > > > > PCI domain(or named segment) is provided by firmware, in ACPI system, we evaluated it > > > by method "_SEG". in IA64 with ACPI, PCI hostbridge driver retrieves the domain from ACPI, > > > if it's absent, the default domain is zero. So I wonder why in DTS, if it's absent, we get > > > a auto increment domain value. > > > > Because you can have more than one hostbridge (rare, but not impossible) and unless you > > want to join the two segments, you might want to give it a different domain. > > I think you misunderstood the question. The difference is that in ACPI you > are required to specify the domain, while in DT it is optional with your > implementation. > > I think in general it would be nice if we could mandate that in DT you also > have to always provide a domain number, however the problem is that we can't > change the existing DTB files that people are using that do not specify a > domain. > > We could possibly make this an architecture specific setting though and > mandate that all ARM64 platforms have to set it, while ARM32 does not need > it. We can assume that if a domain is not specified and there is a single top level PCIe node, the domain defaults to 0. Are there any arm32 platforms that require multiple domains (and do not specify a number in the DT)? -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html