On Thursday 28 April 2016 10:12:12 Bjorn Helgaas wrote: > On Wed, Apr 27, 2016 at 06:31:29PM +0100, Lorenzo Pieralisi wrote: > > On Wed, Apr 27, 2016 at 11:44:53AM -0500, Bjorn Helgaas wrote: > > > On Wed, Apr 27, 2016 at 12:17:58PM +0100, Lorenzo Pieralisi wrote: > > > > On Tue, Apr 26, 2016 at 09:26:49PM -0500, Bjorn Helgaas wrote: > > > > > On Fri, Apr 15, 2016 at 07:06:37PM +0200, Tomasz Nowicki wrote: > > > > > Today we call pci_bus_assign_domain_nr() from the PCI core (from > > > pci_create_root_bus()). This is only implemented for > > > PCI_DOMAINS_GENERIC, but even so, it fiddles around to figure out > > > whether to get the domain from DT or to assign a new one. > > > > > > That seems backwards to me. The host bridge drivers already know > > > where the domain should come from (ACPI _SEG, DT, etc.) and in the > > > long term, I think they should be responsible for looking up or > > > assigning a domain number *before* they call pci_create_root_bus(). > > > > Yes, the question still is how pci_create_root_bus() can get that > > value (I am pretty certain this was heavily debated in the past, which > > does not mean we can't give it another try). > > Right, we don't have a good mechanism for passing more info into > pci_create_root_bus(). Maybe the caller could fill in a struct so we > have a chance to extend it without having to change all the existing > callers. > > I wonder if there's a design pattern we can copy, e.g., would > something like the scsi_host_alloc(), scsi_add_host(), > scsi_scan_host() model work here? Yes, I think that is a good idea in general. Especially now that we have separate the ARM code from pci_common_init_dev and pci_sys_data, that can help with cleanups in the other drivers as well. I see two common variations in other subsystems: some use a special alloc() function that you pass the size of the private data into, while others just expect you to embed a structure inside of the driver specific one allocate that separately to have the generic registration function fill out the common fields. I have a slight preference for the second, but they are really the same thing basically. Arnd -- 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