s390/boot: replace magic string check with a bootdata flag
authorAlexander Egorenkov <egorenar@linux.ibm.com>
Thu, 25 Mar 2021 11:10:56 +0000 (12:10 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 5 Jul 2021 10:44:23 +0000 (12:44 +0200)
The magic string "S390EP" at offset 0x10008 indicated to the decompressed
kernel that it was booted by the decompressor. Introduce a new bootdata
flag instead which conveys the same information in an explicit and
a cleaner way. But keep the magic string because it is a kernel ABI.

Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/boot/startup.c
arch/s390/include/asm/setup.h
arch/s390/kernel/early.c

index bbe4df6..d0cf216 100644 (file)
@@ -23,6 +23,7 @@ unsigned long __bootdata_preserved(vmemmap_size);
 unsigned long __bootdata_preserved(MODULES_VADDR);
 unsigned long __bootdata_preserved(MODULES_END);
 unsigned long __bootdata(ident_map_size);
+int __bootdata(is_full_image) = 1;
 
 u64 __bootdata_preserved(stfle_fac_list[16]);
 u64 __bootdata_preserved(alt_stfle_fac_list[16]);
index a8b75da..3a77aa9 100644 (file)
@@ -159,6 +159,8 @@ static inline unsigned long kaslr_offset(void)
        return __kaslr_offset;
 }
 
+extern int is_full_image;
+
 static inline u32 gen_lpswe(unsigned long addr)
 {
        BUILD_BUG_ON(addr > 0xfff);
index c2cf79d..fb84e3f 100644 (file)
@@ -33,6 +33,8 @@
 #include <asm/switch_to.h>
 #include "entry.h"
 
+int __bootdata(is_full_image);
+
 static void __init reset_tod_clock(void)
 {
        union tod_clock clk;
@@ -279,7 +281,7 @@ static void __init setup_boot_command_line(void)
 
 static void __init check_image_bootable(void)
 {
-       if (!memcmp(EP_STRING, (void *)EP_OFFSET, strlen(EP_STRING)))
+       if (is_full_image)
                return;
 
        sclp_early_printk("Linux kernel boot failure: An attempt to boot a vmlinux ELF image failed.\n");