Commit d57de5a3 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

[S390] Use diag260 for memory size detection.

Avoid the tprot loop if diag260 works and reports that there are no
holes in memory. The tprot instruction can lead to a significant delay
in the ipl process if the virtual guest has a lot of memory and the
host is under memory pressure.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 29b08d2b
...@@ -70,7 +70,22 @@ startup_continue: ...@@ -70,7 +70,22 @@ startup_continue:
sgr %r5,%r5 # set src,length and pad to zero sgr %r5,%r5 # set src,length and pad to zero
mvcle %r2,%r4,0 # clear mem mvcle %r2,%r4,0 # clear mem
jo .-4 # branch back, if not finish jo .-4 # branch back, if not finish
# set program check new psw mask
mvc __LC_PGM_NEW_PSW(8),.Lpcmsk-.LPG1(%r13)
larl %r1,.Lslowmemdetect # set program check address
stg %r1,__LC_PGM_NEW_PSW+8
lghi %r1,0xc
diag %r0,%r1,0x260 # get memory size of virtual machine
cgr %r0,%r1 # different? -> old detection routine
jne .Lslowmemdetect
aghi %r1,1 # size is one more than end
larl %r2,memory_chunk
stg %r1,8(%r2) # store size of chunk
larl %r2,memory_size
stg %r1,0(%r2) # set memory size
j .Ldonemem
.Lslowmemdetect:
l %r2,.Lrcp-.LPG1(%r13) # Read SCP forced command word l %r2,.Lrcp-.LPG1(%r13) # Read SCP forced command word
.Lservicecall: .Lservicecall:
stosm .Lpmask-.LPG1(%r13),0x01 # authorize ext interrupts stosm .Lpmask-.LPG1(%r13),0x01 # authorize ext interrupts
...@@ -139,8 +154,6 @@ startup_continue: ...@@ -139,8 +154,6 @@ startup_continue:
.int 0x100000 .int 0x100000
.Lfchunk: .Lfchunk:
# set program check new psw mask
mvc __LC_PGM_NEW_PSW(8),.Lpcmsk-.LPG1(%r13)
# #
# find memory chunks. # find memory chunks.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment