From: Max Filippov Date: Fri, 3 Oct 2014 23:46:34 +0000 (+0400) Subject: xtensa: nommu: reserve memory below PLATFORM_DEFAULT_MEM_START X-Git-Tag: v3.19-rc1~60^2~4^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=566fb58ed422537715023d1f19b705247a640b11;p=~emulex%2Finfiniband.git xtensa: nommu: reserve memory below PLATFORM_DEFAULT_MEM_START Memory accounting code can't handle pages below PLATFORM_DEFAULT_MEM_START. Reserve those pages if they exist. When PLATFORM_DEFAULT_MEM_START is zero reserve one page at address 0 to make sure that successfull memory allocations don't return NULL. Signed-off-by: Max Filippov --- diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c index 77ed20209ca..5a084fa5b60 100644 --- a/arch/xtensa/mm/init.c +++ b/arch/xtensa/mm/init.c @@ -239,6 +239,17 @@ void __init bootmem_init(void) unsigned long bootmap_start, bootmap_size; int i; + /* Reserve all memory below PLATFORM_DEFAULT_MEM_START, as memory + * accounting doesn't work for pages below that address. + * + * If PLATFORM_DEFAULT_MEM_START is zero reserve page at address 0: + * successfull allocations should never return NULL. + */ + if (PLATFORM_DEFAULT_MEM_START) + mem_reserve(0, PLATFORM_DEFAULT_MEM_START, 0); + else + mem_reserve(0, 1, 0); + sysmem_dump(); max_low_pfn = max_pfn = 0; min_low_pfn = ~0;