diff options
author | Philipp Rudo <prudo@linux.ibm.com> | 2020-11-26 18:31:08 +0100 |
---|---|---|
committer | Heiko Carstens <hca@linux.ibm.com> | 2020-12-09 21:02:07 +0100 |
commit | 613775d62ec60202f98d2c5f520e6e9ba6dd4ac4 (patch) | |
tree | 80bb5b533634e7a68f353146116d49863e0e26e6 /arch/s390/purgatory | |
parent | 14d4c4fa46eeaa3922e8e1c4aa727eb0a1412804 (diff) | |
download | linux-613775d62ec60202f98d2c5f520e6e9ba6dd4ac4.tar.gz |
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: ee337f5469fd ("s390/kexec_file: Add crash support to image loader")
Cc: <stable@vger.kernel.org> # 4.17
Signed-off-by: Philipp Rudo <prudo@linux.ibm.com>
Reported-by: Xiaoying Yan <yiyan@redhat.com>
Tested-by: Lianbo Jiang <lijiang@redhat.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/purgatory')
-rw-r--r-- | arch/s390/purgatory/head.S | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/s390/purgatory/head.S b/arch/s390/purgatory/head.S index 5a10ce34b95d..3d1c31e0cf3d 100644 --- a/arch/s390/purgatory/head.S +++ b/arch/s390/purgatory/head.S @@ -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: |