From b09e392aa24581550d943770a4efb003e9b223f5 Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Sat, 15 Dec 2012 20:59:07 -0800 Subject: [PATCH v7 06/29] x86, mm: increase BRK area for early page table kernel ident page table will come from BRK too, so need to increase the reservation. Also add checking about if early_alloc buf is allocated, so could avoid #ifdef in different path like xen or non-xen. Signed-off-by: Yinghai Lu --- arch/x86/mm/init.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index c4293cf..3dd77fd 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -75,14 +75,18 @@ __ref void *alloc_low_pages(unsigned int num) return __va(pfn << PAGE_SHIFT); } -/* need 4 4k for initial PMD_SIZE, 4k for 0-ISA_END_ADDRESS */ -#define INIT_PGT_BUF_SIZE (5 * PAGE_SIZE) +/* need 4 4k for initial PMD_SIZE, 4k for 0-ISA_END_ADDRESS, 4 4k for kernel */ +#define INIT_PGT_BUF_SIZE (9 * PAGE_SIZE) RESERVE_BRK(early_pgt_alloc, INIT_PGT_BUF_SIZE); void __init early_alloc_pgt_buf(void) { unsigned long tables = INIT_PGT_BUF_SIZE; phys_addr_t base; + /* already set ? */ + if (pgt_buf_end) + return; + base = __pa(extend_brk(tables, PAGE_SIZE)); pgt_buf_start = base >> PAGE_SHIFT; -- 1.7.10.4