Commit 613775d6 authored by Philipp Rudo's avatar Philipp Rudo Committed by Heiko Carstens
Browse files

s390/kexec_file: fix diag308 subcode when loading crash kernel



diag308 subcode 0 performes a clear reset which inlcudes the reset of
all registers in the system. While this is the preferred behavior when
loading a normal kernel via kexec it prevents the crash kernel to store
the register values in the dump. To prevent this use subcode 1 when
loading a crash kernel instead.

Fixes: ee337f54 ("s390/kexec_file: Add crash support to image loader")
Cc: <stable@vger.kernel.org> # 4.17
Signed-off-by: default avatarPhilipp Rudo <prudo@linux.ibm.com>
Reported-by: default avatarXiaoying Yan <yiyan@redhat.com>
Tested-by: default avatarLianbo Jiang <lijiang@redhat.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 14d4c4fa
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -62,14 +62,15 @@
	jh	10b
.endm

.macro START_NEXT_KERNEL base
.macro START_NEXT_KERNEL base subcode
	lg	%r4,kernel_entry-\base(%r13)
	lg	%r5,load_psw_mask-\base(%r13)
	ogr	%r4,%r5
	stg	%r4,0(%r0)

	xgr	%r0,%r0
	diag	%r0,%r0,0x308
	lghi	%r1,\subcode
	diag	%r0,%r1,0x308
.endm

.text
@@ -123,7 +124,7 @@ ENTRY(purgatory_start)
	je	.start_crash_kernel

	/* start normal kernel */
	START_NEXT_KERNEL .base_crash
	START_NEXT_KERNEL .base_crash 0

.return_old_kernel:
	lmg	%r6,%r15,gprregs-.base_crash(%r13)
@@ -227,7 +228,7 @@ ENTRY(purgatory_start)
	MEMCPY	%r9,%r10,%r11

	/* start crash kernel */
	START_NEXT_KERNEL .base_dst
	START_NEXT_KERNEL .base_dst 1


load_psw_mask: