aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/relocate_kernel.S
diff options
context:
space:
mode:
authorPhilipp Rudo <prudo@linux.ibm.com>2019-03-07 15:56:34 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2019-04-29 10:44:00 +0200
commit653beba24d4cd281b078eab48c9bce956939061c (patch)
tree666e391e3156330ba0f82d216408aae68bd9e2e6 /arch/s390/kernel/relocate_kernel.S
parents390/kexec_file: Unify loader code (diff)
downloadlinux-dev-653beba24d4cd281b078eab48c9bce956939061c.tar.xz
linux-dev-653beba24d4cd281b078eab48c9bce956939061c.zip
s390/kexec_file: Load new kernel to absolute 0
The leading 64 kB of a kernel image doesn't contain any data needed to boot the new kernel when it was loaded via kexec_file. Thus kexec_file currently strips them off before loading the image. Keep the leading 64 kB in order to be able to pass a ipl_report to the next kernel. Signed-off-by: Philipp Rudo <prudo@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to '')
-rw-r--r--arch/s390/kernel/relocate_kernel.S3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/s390/kernel/relocate_kernel.S b/arch/s390/kernel/relocate_kernel.S
index c97c2d40fe15..1b56f087ce2c 100644
--- a/arch/s390/kernel/relocate_kernel.S
+++ b/arch/s390/kernel/relocate_kernel.S
@@ -58,10 +58,13 @@ ENTRY(relocate_kernel)
j .base
.done:
sgr %r0,%r0 # clear register r0
+ cghi %r3,0
+ je .diag
la %r4,load_psw-.base(%r13) # load psw-address into the register
o %r3,4(%r4) # or load address into psw
st %r3,4(%r4)
mvc 0(8,%r0),0(%r4) # copy psw to absolute address 0
+ .diag:
diag %r0,%r0,0x308
.align 8