diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2007-11-05 10:10:11 (GMT) |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-11-05 10:10:17 (GMT) |
commit | 0b8da654b6c13b40b0e0efd916ee57ed13f9fa1f (patch) | |
tree | 31a302d2f92bc451dfa4fea433f8683495b13f4b /arch/s390/kernel/early.c | |
parent | 0d2be08893605be00de0f95ee7e4b8917ea1ebc3 (diff) | |
download | linux-fsl-qoriq-0b8da654b6c13b40b0e0efd916ee57ed13f9fa1f.tar.xz |
[S390] Fix memory detection.
Yet another patch in the countless series of memory detection fixes:
if the last area of the reported storage size is a hole the detection
loop will loop forever.
Just break chunk detection loop if its end is going to be larger than
reported storage size.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/early.c')
-rw-r--r-- | arch/s390/kernel/early.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index e6289ee..8bf4ae1 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c @@ -200,11 +200,13 @@ static noinline __init void find_memory_chunks(unsigned long memsize) cc = __tprot(addr); while (cc == old_cc) { addr += CHUNK_INCR; - cc = __tprot(addr); + if (addr >= memsize) + break; #ifndef CONFIG_64BIT if (addr == ADDR2G) break; #endif + cc = __tprot(addr); } if (old_addr != addr && |