[PATCH v10 07/10] OF: Introduce helper function for getting PCI domain_nr
From: arnd@arndb.de (Arnd Bergmann)
Date: 2014-09-09 09:16:33
Also in:
linux-arch, linux-devicetree, linux-pci, lkml
On Tuesday 09 September 2014 09:46:21 Liviu Dudau wrote:
On Tue, Sep 09, 2014 at 06:54:21AM +0100, Yijing Wang wrote:quoted
quoted
quoted
quoted
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.quoted
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. Arnd