@@ -109,6 +109,7 @@ int ipl_report_add_component(struct ipl_report *report, struct kexec_buf *kbuf,
unsigned char flags, unsigned short cert);
int ipl_report_add_certificate(struct ipl_report *report, void *key,
unsigned long addr, unsigned long len);
+bool ipl_get_secureboot(void);
/*
* DIAG 308 support
@@ -1851,3 +1851,8 @@ int ipl_report_free(struct ipl_report *report)
}
#endif
+
+bool ipl_get_secureboot(void)
+{
+ return !!ipl_secure_flag;
+}
@@ -15,6 +15,9 @@
#include <linux/efi.h>
#include <linux/sysrq.h>
#include <asm/setup.h>
+#ifdef CONFIG_S390
+#include <asm/ipl.h>
+#endif
#ifdef CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ
static __read_mostly bool kernel_locked_down;
@@ -55,6 +58,10 @@ void __init init_lockdown(void)
if (efi_enabled(EFI_SECURE_BOOT))
lock_kernel_down("EFI secure boot");
#endif
+#ifdef CONFIG_S390
+ if (ipl_get_secureboot())
+ lock_kernel_down("Secure IPL");
+#endif
}
/**