Skip to content

Commit

Permalink
s390/boot: replace magic string check with a bootdata flag
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alexander Egorenkov authored and Vasily Gorbik committed Jul 5, 2021
1 parent 549abb7 commit 9f744ab
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 1 deletion.
1 change: 1 addition & 0 deletions arch/s390/boot/startup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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]);
Expand Down
2 changes: 2 additions & 0 deletions arch/s390/include/asm/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 3 additions & 1 deletion arch/s390/kernel/early.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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");
Expand Down

0 comments on commit 9f744ab

Please sign in to comment.