* Trent Piepho <xyzzy@xxxxxxxxxxxxx>: > On Thu, 19 Mar 2009, Alex Chiang wrote: > > * Kenji Kaneshige <kaneshige.kenji@xxxxxxxxxxxxxx>: > > >> + pci_remove_bus_device(pdev); > > >> + if (bridge && list_empty(&pdev->bus->devices)) > > >> + pci_remove_bus(pdev->bus); > > > > > > I cannot understand the above two lines. Could you explain > > > what it intend? > > > > If the user says: > > > > echo 1 > /sys/bus/pci/devices/.../remove > > > > And that device is a bridge, then we need to specifically call > > pci_remove_bus as well, to actually remove the bus itself. > > Without it, pci_bus_remove_device() will remove all of its > > children (and subordinate buses) in a depth-first manner, but we > > will never actually remove the bus that the user specified. > > Did this end up being the source of the pci resource assignment warnings > that were produced when re-adding a bridge that was removed? I think that was one reason. I found that it was necessary during multiple remove/rescan cycles; after the 2nd rescan, we had a stale pci_bus hanging around that was manifesting itself as a sysfs issue. The other thing that Kenji found was in pci_setup_bridge(), where we don't want to initialize the BARs if the bridge has already been added. Thanks. /ac -- 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