s390/mem_detect: move tprot loop to early boot phase
Move memory detection to early boot phase. To store online memory regions "struct mem_detect_info" has been introduced together with for_each_mem_detect_block iterator. mem_detect_info is later converted to memblock. Also introduces sclp_early_get_meminfo function to get maximum physical memory and maximum increment number. Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com> Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:

committed by
Martin Schwidefsky

parent
17aacfbfa1
commit
6966d604e2
@@ -270,3 +270,20 @@ int __init sclp_early_get_info(struct read_info_sccb *info)
|
||||
*info = sclp_info_sccb;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __init sclp_early_get_meminfo(unsigned long *mem, unsigned long *rzm)
|
||||
{
|
||||
unsigned long rnmax;
|
||||
unsigned long rnsize;
|
||||
struct read_info_sccb *sccb = &sclp_info_sccb;
|
||||
|
||||
if (!sclp_info_sccb_valid)
|
||||
return -EIO;
|
||||
|
||||
rnmax = sccb->rnmax ? sccb->rnmax : sccb->rnmax2;
|
||||
rnsize = sccb->rnsize ? sccb->rnsize : sccb->rnsize2;
|
||||
rnsize <<= 20;
|
||||
*mem = rnsize * rnmax;
|
||||
*rzm = rnsize;
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user