diff options
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 559336de9687..bf1dd8819097 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1936,6 +1936,7 @@ static void __init free_area_init_core(struct pglist_data *pgdat, | |||
1936 | static void __init alloc_node_mem_map(struct pglist_data *pgdat) | 1936 | static void __init alloc_node_mem_map(struct pglist_data *pgdat) |
1937 | { | 1937 | { |
1938 | unsigned long size; | 1938 | unsigned long size; |
1939 | struct page *map; | ||
1939 | 1940 | ||
1940 | /* Skip empty nodes */ | 1941 | /* Skip empty nodes */ |
1941 | if (!pgdat->node_spanned_pages) | 1942 | if (!pgdat->node_spanned_pages) |
@@ -1944,7 +1945,10 @@ static void __init alloc_node_mem_map(struct pglist_data *pgdat) | |||
1944 | /* ia64 gets its own node_mem_map, before this, without bootmem */ | 1945 | /* ia64 gets its own node_mem_map, before this, without bootmem */ |
1945 | if (!pgdat->node_mem_map) { | 1946 | if (!pgdat->node_mem_map) { |
1946 | size = (pgdat->node_spanned_pages + 1) * sizeof(struct page); | 1947 | size = (pgdat->node_spanned_pages + 1) * sizeof(struct page); |
1947 | pgdat->node_mem_map = alloc_bootmem_node(pgdat, size); | 1948 | map = alloc_remap(pgdat->node_id, size); |
1949 | if (!map) | ||
1950 | map = alloc_bootmem_node(pgdat, size); | ||
1951 | pgdat->node_mem_map = map; | ||
1948 | } | 1952 | } |
1949 | #ifndef CONFIG_DISCONTIGMEM | 1953 | #ifndef CONFIG_DISCONTIGMEM |
1950 | /* | 1954 | /* |