Commit e9d6dca5 authored by Max Filippov's avatar Max Filippov

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: default avatarMax Filippov <jcmvbkbc@gmail.com>
parent 6d0abeca
...@@ -90,7 +90,7 @@ int __init mem_reserve(unsigned long start, unsigned long end, int must_exist) ...@@ -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) void __init bootmem_init(void)
...@@ -142,9 +142,14 @@ void __init bootmem_init(void) ...@@ -142,9 +142,14 @@ void __init bootmem_init(void)
/* Add all remaining memory pieces into the bootmem map */ /* Add all remaining memory pieces into the bootmem map */
for (i=0; i<sysmem.nr_banks; i++) for (i = 0; i < sysmem.nr_banks; i++) {
if (sysmem.bank[i].start >> PAGE_SHIFT < max_low_pfn) {
unsigned long end = min(max_low_pfn << PAGE_SHIFT,
sysmem.bank[i].end);
free_bootmem(sysmem.bank[i].start, free_bootmem(sysmem.bank[i].start,
sysmem.bank[i].end - sysmem.bank[i].start); end - sysmem.bank[i].start);
}
}
} }
......
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