Commit bd2753b2 authored by Yinghai Lu's avatar Yinghai Lu Committed by Ingo Molnar

x86/mm: Only add extra pages count for the first memory range during...

x86/mm: Only add extra pages count for the first memory range during pre-allocation early page table space

Robin found this regression:

| I just tried to boot an 8TB system.  It fails very early in boot with:
| Kernel panic - not syncing: Cannot find space for the kernel page tables

git bisect commit 722bc6b1.

A git revert of that commit does boot past that point on the 8TB
configuration.

That commit will add up extra pages for all memory range even
above 4g.

Try to limit that extra page count adding to first entry only.
Bisected-by: default avatarRobin Holt <holt@sgi.com>
Tested-by: default avatarRobin Holt <holt@sgi.com>
Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
Cc: WANG Cong <xiyou.wangcong@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/CAE9FiQUj3wyzQxtq9yzBNc9u220p8JZ1FYHG7t%3DMOzJ%3D9BZMYA@mail.gmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 743628e8
...@@ -62,7 +62,8 @@ static void __init find_early_table_space(struct map_range *mr, unsigned long en ...@@ -62,7 +62,8 @@ static void __init find_early_table_space(struct map_range *mr, unsigned long en
extra += PMD_SIZE; extra += PMD_SIZE;
#endif #endif
/* The first 2/4M doesn't use large pages. */ /* The first 2/4M doesn't use large pages. */
extra += mr->end - mr->start; if (mr->start < PMD_SIZE)
extra += mr->end - mr->start;
ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT;
} else } else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment