On Mon, Aug 20, 2012 at 10:39 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > On Mon, Aug 20, 2012 at 8:27 AM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >> On Fri, Aug 17, 2012 at 7:21 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: >>> On Fri, Aug 17, 2012 at 4:36 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >>>> Previously, when we removed a PCI device, we made two passes over the >>>> hierarchy rooted at the device. In the first pass, we stopped all >>>> the devices, and in the second, we removed them. >>>> >>>> This patch combines the two passes into one so that we remove a device as >>>> soon as it and all its children have been stopped. >>>> >>>> Note that we previously stopped devices in reverse order and removed them >>>> in forward order. Now we stop and remove them in reverse order. >>>> >>>> Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> >>>> --- >>>> drivers/pci/remove.c | 42 +++++++----------------------------------- >>>> 1 files changed, 7 insertions(+), 35 deletions(-) >>> >>> looks like your cleanup will have some conflict with my pci root bus >>> hot plug branch. >> >> Yes, indeed, they have serious conflicts. >> >>> http://git.kernel.org/?p=linux/kernel/git/yinghai/linux-yinghai.git;a=blob;f=drivers/pci/remove.c;h=f672731922f8db619fb36db05dbd9c27f3253c19;hb=refs/heads/for-pci-root-bus-hotplug >>> >>> it add pci_stop_and_remove_bus and it depends on some functions that >>> you kill in this patch set. >> >> Do you have any suggestions on how to proceed? In my opinion, >> remove.c is a bit of a rat's nest right now. It took me quite a long >> time to sort out what's going on, but when you finally get down to the >> bottom, it's actually very simple. So I'd really like to clean it up >> and expose that simple structure before we throw more stuff into it. >> >> After my cleanup, pci_stop_and_remove_bus_device() and >> pci_remove_bus() are the only exported interfaces left. How hard >> would it be to implement host bridge remove on top of that? >> >> I think it's OK (and even preferable) if the host bridge-related code >> can be segregated by itself rather than being sprinkled around through >> lots of PCI code. So maybe the pci_is_root_bus() and >> pci_stop_host_bridge() stuff below could be in some sort of host >> bridge interface that just calls the code in remove.c. > > Yes, your change is quite clean. > Please go ahead to push your changes for 3.7 and my Acked-by. > > I would try to rebase pci-root-bus hot plug branch according to the > output of discussion of pci mini-summit. I fixed the pcmcia bridge check you noted, added your acks and Yijing's tested-by, and pushed the updated branch to http://git.kernel.org/?p=linux/kernel/git/helgaas/pci.git;a=shortlog;h=refs/heads/pci/bjorn-cleanup-remove I plan to put it in my next branch tomorrow or Friday. Bjorn -- 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