x86/PCI: MMCONFIG: add pci_mmconfig_remove() to remove MMCONFIG region
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Sat, 14 Nov 2009 00:34:54 +0000 (17:34 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Tue, 24 Nov 2009 23:30:24 +0000 (15:30 -0800)
This is only used internally now, but eventually will be used in the
hot-remove path to remove the MMCONFIG region associated with a host bridge.

Reviewed-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
arch/x86/pci/mmconfig-shared.c

index 2709aa8..392f8fe 100644 (file)
@@ -27,17 +27,21 @@ static int __initdata pci_mmcfg_resources_inserted;
 
 LIST_HEAD(pci_mmcfg_list);
 
+static __init void pci_mmconfig_remove(struct pci_mmcfg_region *cfg)
+{
+       if (cfg->res.parent)
+               release_resource(&cfg->res);
+       list_del(&cfg->list);
+       kfree(cfg);
+}
+
 static __init void free_all_mmcfg(void)
 {
        struct pci_mmcfg_region *cfg, *tmp;
 
        pci_mmcfg_arch_free();
-       list_for_each_entry_safe(cfg, tmp, &pci_mmcfg_list, list) {
-               if (cfg->res.parent)
-                       release_resource(&cfg->res);
-               list_del(&cfg->list);
-               kfree(cfg);
-       }
+       list_for_each_entry_safe(cfg, tmp, &pci_mmcfg_list, list)
+               pci_mmconfig_remove(cfg);
 }
 
 static __init void list_add_sorted(struct pci_mmcfg_region *new)