mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
Fix alloc_node_mem_map() to work on ia64 again
In commita1c34a3bf0
("mm: Don't offset memmap for flatmem") Laura fixed a problem for Srinivas relating to the bottom 2MB of RAM on an ARM IFC6410 board. One small wrinkle on ia64 is that it allocates the node_mem_map earlier in arch code, so it skips the block of code where "offset" is initialized. Move initialization of start and offset before the check for the node_mem_map so that they will always be available in the latter part of the function. Tested-by: Laura Abbott <laura@labbott.name> Fixes:a1c34a3bf0
(mm: Don't offset memmap for flatmem) Signed-off-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3934bbc044
commit
b0aeba741b
@ -5266,6 +5266,7 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat)
|
||||
|
||||
static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
|
||||
{
|
||||
unsigned long __maybe_unused start = 0;
|
||||
unsigned long __maybe_unused offset = 0;
|
||||
|
||||
/* Skip empty nodes */
|
||||
@ -5273,9 +5274,11 @@ static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
|
||||
return;
|
||||
|
||||
#ifdef CONFIG_FLAT_NODE_MEM_MAP
|
||||
start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1);
|
||||
offset = pgdat->node_start_pfn - start;
|
||||
/* ia64 gets its own node_mem_map, before this, without bootmem */
|
||||
if (!pgdat->node_mem_map) {
|
||||
unsigned long size, start, end;
|
||||
unsigned long size, end;
|
||||
struct page *map;
|
||||
|
||||
/*
|
||||
@ -5283,8 +5286,6 @@ static void __init_refok alloc_node_mem_map(struct pglist_data *pgdat)
|
||||
* aligned but the node_mem_map endpoints must be in order
|
||||
* for the buddy allocator to function correctly.
|
||||
*/
|
||||
start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1);
|
||||
offset = pgdat->node_start_pfn - start;
|
||||
end = pgdat_end_pfn(pgdat);
|
||||
end = ALIGN(end, MAX_ORDER_NR_PAGES);
|
||||
size = (end - start) * sizeof(struct page);
|
||||
|
Loading…
Reference in New Issue
Block a user