Skip to content

Commit

Permalink
xtensa: don't pass high memory to bootmem allocator
Browse files Browse the repository at this point in the history
This fixes panic when booting on machine with more than 128M memory
passed from the bootloader.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  • Loading branch information
Max Filippov committed Feb 21, 2014
1 parent 6d0abec commit e9d6dca
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions arch/xtensa/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -142,9 +142,14 @@ void __init bootmem_init(void)

/* Add all remaining memory pieces into the bootmem map */

for (i=0; i<sysmem.nr_banks; i++)
free_bootmem(sysmem.bank[i].start,
sysmem.bank[i].end - sysmem.bank[i].start);
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,
end - sysmem.bank[i].start);
}
}

}

Expand Down

0 comments on commit e9d6dca

Please sign in to comment.