x86/PCI: split out pci_mmconfig_alloc() for code reuse
authorJiang Liu <jiang.liu@huawei.com>
Fri, 22 Jun 2012 06:55:11 +0000 (14:55 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 22 Jun 2012 21:16:14 +0000 (15:16 -0600)
Split out pci_mmconfig_alloc() for code reuse, which will be used
when supporting PCI root bridge hotplug.

Reviewed-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Jiang Liu <liuj97@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
arch/x86/pci/mmconfig-shared.c

index f799949..5e2cd2a 100644 (file)
@@ -61,8 +61,9 @@ static __init void list_add_sorted(struct pci_mmcfg_region *new)
        list_add_tail(&new->list, &pci_mmcfg_list);
 }
 
-static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
-                                                       int end, u64 addr)
+static __devinit struct pci_mmcfg_region *pci_mmconfig_alloc(int segment,
+                                                            int start,
+                                                            int end, u64 addr)
 {
        struct pci_mmcfg_region *new;
        struct resource *res;
@@ -79,8 +80,6 @@ static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
        new->start_bus = start;
        new->end_bus = end;
 
-       list_add_sorted(new);
-
        res = &new->res;
        res->start = addr + PCI_MMCFG_BUS_OFFSET(start);
        res->end = addr + PCI_MMCFG_BUS_OFFSET(end + 1) - 1;
@@ -96,6 +95,18 @@ static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
        return new;
 }
 
+static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
+                                                       int end, u64 addr)
+{
+       struct pci_mmcfg_region *new;
+
+       new = pci_mmconfig_alloc(segment, start, end, addr);
+       if (new)
+               list_add_sorted(new);
+
+       return new;
+}
+
 struct pci_mmcfg_region *pci_mmconfig_lookup(int segment, int bus)
 {
        struct pci_mmcfg_region *cfg;