aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/bootmem.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/mm/bootmem.c b/mm/bootmem.c
index 484849bfc8c4..9da7d4097810 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -23,7 +23,6 @@ unsigned long max_low_pfn;
23unsigned long min_low_pfn; 23unsigned long min_low_pfn;
24unsigned long max_pfn; 24unsigned long max_pfn;
25 25
26static LIST_HEAD(bdata_list);
27#ifdef CONFIG_CRASH_DUMP 26#ifdef CONFIG_CRASH_DUMP
28/* 27/*
29 * If we have booted due to a crash, max_pfn will be a very low value. We need 28 * If we have booted due to a crash, max_pfn will be a very low value. We need
@@ -34,6 +33,8 @@ unsigned long saved_max_pfn;
34 33
35bootmem_data_t bootmem_node_data[MAX_NUMNODES] __initdata; 34bootmem_data_t bootmem_node_data[MAX_NUMNODES] __initdata;
36 35
36static struct list_head bdata_list __initdata = LIST_HEAD_INIT(bdata_list);
37
37static int bootmem_debug; 38static int bootmem_debug;
38 39
39static int __init bootmem_debug_setup(char *buf) 40static int __init bootmem_debug_setup(char *buf)
@@ -73,20 +74,16 @@ unsigned long __init bootmem_bootmap_pages(unsigned long pages)
73 */ 74 */
74static void __init link_bootmem(bootmem_data_t *bdata) 75static void __init link_bootmem(bootmem_data_t *bdata)
75{ 76{
76 bootmem_data_t *ent; 77 struct list_head *iter;
77 78
78 if (list_empty(&bdata_list)) { 79 list_for_each(iter, &bdata_list) {
79 list_add(&bdata->list, &bdata_list); 80 bootmem_data_t *ent;
80 return; 81
81 } 82 ent = list_entry(iter, bootmem_data_t, list);
82 /* insert in order */ 83 if (bdata->node_boot_start < ent->node_boot_start)
83 list_for_each_entry(ent, &bdata_list, list) { 84 break;
84 if (bdata->node_boot_start < ent->node_boot_start) {
85 list_add_tail(&bdata->list, &ent->list);
86 return;
87 }
88 } 85 }
89 list_add_tail(&bdata->list, &bdata_list); 86 list_add_tail(&bdata->list, iter);
90} 87}
91 88
92/* 89/*