From: Heiko Carstens Date: Tue, 27 Dec 2016 14:36:34 +0000 (+0100) Subject: s390/mem_detect: fix memory type of first block X-Git-Tag: v5.15~11848^2~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=00de54c803d5526a791112e653614656365c5578;p=platform%2Fkernel%2Flinux-starfive.git s390/mem_detect: fix memory type of first block Fix a long-standing but currently irrelevant bug: the memory detection code performs a tprot instruction on address zero to figure out if the first memory chunk is readable or writable. Due to low address protection the result is "read-only". If the memory detection code would actually care, it would have to ignore the first memory increment, but it adds the memory increment to writable memory anyway. If memblock debugging is enabled this leads to an extra rather surprising call which registers memory. To avoid this get rid of the first misleading tprot call and simply assume that the first memory increment is writable. Otherwise we wouldn't have reached the memory detection code anyway. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- diff --git a/arch/s390/mm/mem_detect.c b/arch/s390/mm/mem_detect.c index 0389d8d..185e70d 100644 --- a/arch/s390/mm/mem_detect.c +++ b/arch/s390/mm/mem_detect.c @@ -41,7 +41,8 @@ void __init detect_memory_memblock(void) memblock_set_bottom_up(true); do { size = 0; - type = tprot(addr); + /* assume lowcore is writable */ + type = addr ? tprot(addr) : CHUNK_READ_WRITE; do { size += rzm; if (max_physmem_end && addr + size >= max_physmem_end)