diff --git a/arch/s390/boot/mem_detect.c b/arch/s390/boot/mem_detect.c index 42b0cd23f04a..3becf6bbe4c7 100644 --- a/arch/s390/boot/mem_detect.c +++ b/arch/s390/boot/mem_detect.c @@ -184,8 +184,13 @@ void detect_memory(void) return; } + if (max_physmem_end) { + add_mem_detect_block(0, max_physmem_end); + mem_detect.info_source = MEM_DETECT_SCLP_READ_INFO; + return; + } + scan_memory(rzm); mem_detect.info_source = MEM_DETECT_TPROT_LOOP; - if (!max_physmem_end) - max_physmem_end = get_mem_detect_end(); + max_physmem_end = get_mem_detect_end(); } diff --git a/arch/s390/include/asm/mem_detect.h b/arch/s390/include/asm/mem_detect.h index 6047a28656f5..153c3542fa8a 100644 --- a/arch/s390/include/asm/mem_detect.h +++ b/arch/s390/include/asm/mem_detect.h @@ -8,6 +8,7 @@ enum mem_info_source { MEM_DETECT_NONE = 0, MEM_DETECT_SCLP_STOR_INFO, MEM_DETECT_DIAG260, + MEM_DETECT_SCLP_READ_INFO, MEM_DETECT_TPROT_LOOP };