On Fri, Jul 11, 2014 at 04:08:23PM +0100, Liviu Dudau wrote:
On Fri, Jul 11, 2014 at 03:11:16PM +0100, Catalin Marinas wrote:
On Thu, Jul 10, 2014 at 11:36:10PM +0100, Bjorn Helgaas wrote:
Most of the rest of the v7 discussion was about "Introduce a domain number for pci_host_bridge." I think we should add arm64 using the existing pci_scan_root_bus() and keep the domain number in the arm64 sysdata structure like every other arch does. Isn't that feasible? We can worry about domain unification later.
I think that's what we were trying to avoid, adding an arm64-specific pci_sys_data structure (and arm64-specific API). IIUC, avoiding this would allow the host controller drivers to use the sysdata pointer for their own private data structures.
Also since you can specify the domain number via DT (and in Liviu's v8 patches read by of_create_pci_host_bridge), I think it would make sense to have it stored in some generic data structures (e.g. pci_host_bridge) rather than in an arm64 private sysdata.
(Liviu is thinking of an alternative API but maybe he could briefly describe it here before posting a new series)
My plan is to keep the domain number in the pci_host_bridge and split the creation of the pci_host_bridge out of the pci_create_root_bus().
Wouldn't it make more sense to add domain_nr to the pci_bus structure (well, only needed for the root bus)? It would simplify pci_domain_nr() as well which only takes a pci_bus parameter.
The new function (tentatively called pci_create_new_root_bus()) will no longer call pci_alloc_host_bridge() but will accept it as a parameter, allowing one to be able to set the domain_nr ahead of the root bus creation.
If we place domain_nr in pci_bus, this split wouldn't help but we still need your original pci_create_root_bus_in_domain(). Are there other uses of your proposal above?
Yet another alternative is to ignore PCI domains altogether (domain 0 always).