On Mon, 2011-10-10 at 23:49 +0000, Zhu, DengCheng wrote: > Yes, I can easily understand what you mean, because this point was ever > considered while writing this patch series. We pass the element list as > opposed to a list_head for the head of the element list because we simply > want to link the elements into pci_bus->resources in pci_create_bus(). This > can be done by a single line: > list_add_tail(&b->resources, &bus_res->list); > > In addition, if we need to do list_for_each_entry() on the list, our target > should always be pci_bus->resources rather than the pci_bus_resource list > which is passed into pci_create_bus() to be part (the meat) of > pci_bus->resources. I must admit I don't completely understand what this patch is about, other than it will most probably break the way we do resource management on powerpc :-) I don't understand the point about conflicts in scan_slot and I don't see what you win by "settling down early". Also keep in mind that the resources read from the device need to be remapped on some archs like powerpc which we do from a header quirk at the moment. We also have very different behaviour depending on the platform that we can trigger ranging from ignoring all resources read from the devices because we want the kernel to fully re-assign everything, to on the contrary only every using what the firmware set (no re-assigning possible), with variants such as re-assigning everything using a custom algorithm etc.... We do rely in various places on the concept of scan first, alloc/fixup next, then use. Merging scan & alloc/fixup of resources in one pass is a major conceptual change. It might be ok but I need to convince myself it is by understanding better what's going on and what problem you are really trying to solve here. Cheers, Ben.