summaryrefslogtreecommitdiff
path: root/arch/s390/boot
diff options
context:
space:
mode:
authorAlexander Egorenkov <egorenar@linux.ibm.com>2021-07-05 20:37:25 +0300
committerHeiko Carstens <hca@linux.ibm.com>2021-07-27 10:39:14 +0300
commit42c89439b9fa0368fabd4e1564bdb4a05aeed7eb (patch)
treeeccfb629ce29efff77b396d3ed708c6ead1fedbb /arch/s390/boot
parentc5cf505446db70247a0beb5e70693a5f4754894d (diff)
downloadlinux-42c89439b9fa0368fabd4e1564bdb4a05aeed7eb.tar.xz
s390/boot: disable Secure Execution in dump mode
A dump kernel is neither required nor able to support Secure Execution. Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com> Reviewed-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/boot')
-rw-r--r--arch/s390/boot/startup.c1
-rw-r--r--arch/s390/boot/uv.c8
-rw-r--r--arch/s390/boot/uv.h2
3 files changed, 11 insertions, 0 deletions
diff --git a/arch/s390/boot/startup.c b/arch/s390/boot/startup.c
index e4ebebfd1bbb..8b07a704f2f5 100644
--- a/arch/s390/boot/startup.c
+++ b/arch/s390/boot/startup.c
@@ -292,6 +292,7 @@ void startup_kernel(void)
sclp_early_read_info();
setup_boot_command_line();
parse_boot_command_line();
+ sanitize_prot_virt_host();
setup_ident_map_size(detect_memory());
setup_vmalloc_size();
setup_kernel_memory_layout();
diff --git a/arch/s390/boot/uv.c b/arch/s390/boot/uv.c
index 3156f78b136a..5aea68d6d75d 100644
--- a/arch/s390/boot/uv.c
+++ b/arch/s390/boot/uv.c
@@ -1,8 +1,10 @@
// SPDX-License-Identifier: GPL-2.0
#include <asm/uv.h>
+#include <asm/boot_data.h>
#include <asm/facility.h>
#include <asm/sections.h>
+#include "boot.h"
#include "uv.h"
/* will be used in arch/s390/kernel/uv.c */
@@ -71,4 +73,10 @@ void adjust_to_uv_max(unsigned long *vmax)
if (has_uv_sec_stor_limit())
*vmax = min_t(unsigned long, *vmax, uv_info.max_sec_stor_addr);
}
+
+void sanitize_prot_virt_host(void)
+{
+ if (OLDMEM_BASE || (ipl_block_valid && is_ipl_block_dump()))
+ prot_virt_host = 0;
+}
#endif
diff --git a/arch/s390/boot/uv.h b/arch/s390/boot/uv.h
index 2992f960fd57..690ce019af5a 100644
--- a/arch/s390/boot/uv.h
+++ b/arch/s390/boot/uv.h
@@ -4,8 +4,10 @@
#if IS_ENABLED(CONFIG_KVM)
void adjust_to_uv_max(unsigned long *vmax);
+void sanitize_prot_virt_host(void);
#else
static inline void adjust_to_uv_max(unsigned long *vmax) {}
+static inline void sanitize_prot_virt_host(void) {}
#endif
#if defined(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) || IS_ENABLED(CONFIG_KVM)