diff options
Diffstat (limited to 'arch/x86/mm/init_64.c')
-rw-r--r-- | arch/x86/mm/init_64.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index a95272644591..cc50a13ce8d9 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -358,6 +358,13 @@ static void __init find_early_table_space(unsigned long end) | |||
358 | if (table_start == -1UL) | 358 | if (table_start == -1UL) |
359 | panic("Cannot find space for the kernel page tables"); | 359 | panic("Cannot find space for the kernel page tables"); |
360 | 360 | ||
361 | /* | ||
362 | * When you have a lot of RAM like 256GB, early_table will not fit | ||
363 | * into 0x8000 range, find_e820_area() will find area after kernel | ||
364 | * bss but the table_start is not page aligned, so need to round it | ||
365 | * up to avoid overlap with bss: | ||
366 | */ | ||
367 | table_start = round_up(table_start, PAGE_SIZE); | ||
361 | table_start >>= PAGE_SHIFT; | 368 | table_start >>= PAGE_SHIFT; |
362 | table_end = table_start; | 369 | table_end = table_start; |
363 | 370 | ||