Commit 7fea82ab1a74030f79a2adfac1af3d93b8638fc3
Committed by
Paul Mackerras
1 parent
6f9aa72743
Exists in
master
and in
4 other branches
[PATCH] PPC64: Don't try to claim memory from OF at 1GB mark
Some RS64-based machines (p620, F80, others) have problems with firmware returning 0xdeadbeef instead of failure to allocations that end at the 1GB mark. We have two options: 1. Detect the undocumented 0xdeadbeef return value and interpret it as a failure. 2. Avoid allocating that high. (2) is really the cleaner solution here. 768MB is plenty of room so use that as the max alloc_top instead of 1GB. Signed-off-by: Olof Johansson <olof@lixom.net> Signed-off-by: Paul Mackerras <paulus@samba.org>
Showing 1 changed file with 4 additions and 1 deletions Side-by-side Diff
arch/ppc64/kernel/prom_init.c
| ... | ... | @@ -892,7 +892,10 @@ |
| 892 | 892 | if ( RELOC(of_platform) == PLATFORM_PSERIES_LPAR ) |
| 893 | 893 | RELOC(alloc_top) = RELOC(rmo_top); |
| 894 | 894 | else |
| 895 | - RELOC(alloc_top) = RELOC(rmo_top) = min(0x40000000ul, RELOC(ram_top)); | |
| 895 | + /* Some RS64 machines have buggy firmware where claims up at 1GB | |
| 896 | + * fails. Cap at 768MB as a workaround. Still plenty of room. | |
| 897 | + */ | |
| 898 | + RELOC(alloc_top) = RELOC(rmo_top) = min(0x30000000ul, RELOC(ram_top)); | |
| 896 | 899 | |
| 897 | 900 | prom_printf("memory layout at init:\n"); |
| 898 | 901 | prom_printf(" memory_limit : %x (16 MB aligned)\n", RELOC(prom_memory_limit)); |