From: Max Filippov Date: Fri, 31 Jan 2014 01:38:21 +0000 (+0400) Subject: xtensa: don't pass high memory to bootmem allocator X-Git-Tag: v3.15-rc5~21^2~3^2~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e9d6dca51823b94e1ca28cb5e9180701d4375d61;p=platform%2Fkernel%2Flinux-exynos.git xtensa: don't pass high memory to bootmem allocator This fixes panic when booting on machine with more than 128M memory passed from the bootloader. Signed-off-by: Max Filippov --- diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c index 479d753..aff108d 100644 --- a/arch/xtensa/mm/init.c +++ b/arch/xtensa/mm/init.c @@ -90,7 +90,7 @@ int __init mem_reserve(unsigned long start, unsigned long end, int must_exist) /* - * Initialize the bootmem system and give it all the memory we have available. + * Initialize the bootmem system and give it all low memory we have available. */ void __init bootmem_init(void) @@ -142,9 +142,14 @@ void __init bootmem_init(void) /* Add all remaining memory pieces into the bootmem map */ - for (i=0; i> PAGE_SHIFT < max_low_pfn) { + unsigned long end = min(max_low_pfn << PAGE_SHIFT, + sysmem.bank[i].end); + free_bootmem(sysmem.bank[i].start, + end - sysmem.bank[i].start); + } + } }