From: Greg Kroah-Hartman Date: Fri, 22 Mar 2019 11:11:03 +0000 (+0100) Subject: 4.14-stable patches X-Git-Tag: v3.18.137~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=05369eca82d97e23636bf9eb43dcda35259b7dba;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: s390-setup-fix-boot-crash-for-machine-without-edat-1.patch --- diff --git a/queue-4.14/s390-setup-fix-boot-crash-for-machine-without-edat-1.patch b/queue-4.14/s390-setup-fix-boot-crash-for-machine-without-edat-1.patch new file mode 100644 index 00000000000..b35c25587fa --- /dev/null +++ b/queue-4.14/s390-setup-fix-boot-crash-for-machine-without-edat-1.patch @@ -0,0 +1,50 @@ +From 86a86804e4f18fc3880541b3d5a07f4df0fe29cb Mon Sep 17 00:00:00 2001 +From: Martin Schwidefsky +Date: Mon, 18 Feb 2019 18:10:08 +0100 +Subject: s390/setup: fix boot crash for machine without EDAT-1 + +From: Martin Schwidefsky + +commit 86a86804e4f18fc3880541b3d5a07f4df0fe29cb upstream. + +The fix to make WARN work in the early boot code created a problem +on older machines without EDAT-1. The setup_lowcore_dat_on function +uses the pointer from lowcore_ptr[0] to set the DAT bit in the new +PSWs. That does not work if the kernel page table is set up with +4K pages as the prefix address maps to absolute zero. + +To make this work the PSWs need to be changed with via address 0 in +form of the S390_lowcore definition. + +Reported-by: Guenter Roeck +Tested-by: Cornelia Huck +Fixes: 94f85ed3e2f8 ("s390/setup: fix early warning messages") +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + arch/s390/kernel/setup.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +--- a/arch/s390/kernel/setup.c ++++ b/arch/s390/kernel/setup.c +@@ -390,13 +390,12 @@ static void __init setup_lowcore_dat_off + + static void __init setup_lowcore_dat_on(void) + { +- struct lowcore *lc; +- +- lc = lowcore_ptr[0]; +- lc->external_new_psw.mask |= PSW_MASK_DAT; +- lc->svc_new_psw.mask |= PSW_MASK_DAT; +- lc->program_new_psw.mask |= PSW_MASK_DAT; +- lc->io_new_psw.mask |= PSW_MASK_DAT; ++ __ctl_clear_bit(0, 28); ++ S390_lowcore.external_new_psw.mask |= PSW_MASK_DAT; ++ S390_lowcore.svc_new_psw.mask |= PSW_MASK_DAT; ++ S390_lowcore.program_new_psw.mask |= PSW_MASK_DAT; ++ S390_lowcore.io_new_psw.mask |= PSW_MASK_DAT; ++ __ctl_set_bit(0, 28); + } + + static struct resource code_resource = { diff --git a/queue-4.14/series b/queue-4.14/series index ae220d6ddcc..63d59b68f9b 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -180,3 +180,4 @@ kvm-x86-mmu-do-not-cache-mmio-accesses-while-memslots-are-in-flux.patch kvm-nvmx-sign-extend-displacements-of-vmx-instr-s-mem-operands.patch kvm-nvmx-apply-addr-size-mask-to-effective-address-for-vmx-instructions.patch kvm-nvmx-ignore-limit-checks-on-vmx-instructions-using-flat-segments.patch +s390-setup-fix-boot-crash-for-machine-without-edat-1.patch