diff options
author | Vasily Gorbik <gor@linux.ibm.com> | 2018-04-10 15:14:02 +0300 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2018-10-09 12:21:06 +0300 |
commit | d1b52a4388ffdcff47fb53de7fffe052fe766a9f (patch) | |
tree | 365847541f8313f4771223357ce68c2c945ea8fd /arch/s390/boot/compressed | |
parent | 7516fc11e44e73f1fcf8a3808dd88f82142e6585 (diff) | |
download | linux-d1b52a4388ffdcff47fb53de7fffe052fe766a9f.tar.xz |
s390: introduce .boot.data section
Introduce .boot.data section which is "shared" between the decompressor
code and the decompressed kernel. The decompressor will store values in
it, and copy over to the decompressed image before starting it. This
method allows to avoid using pre-defined addresses and other hacks to
pass values between those boot phases.
.boot.data section is a part of init data, and will be freed after kernel
initialization is complete.
For uncompressed kernel image, .boot.data section is basically the same
as .init.data
Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/boot/compressed')
-rw-r--r-- | arch/s390/boot/compressed/decompressor.h | 2 | ||||
-rw-r--r-- | arch/s390/boot/compressed/vmlinux.lds.S | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/arch/s390/boot/compressed/decompressor.h b/arch/s390/boot/compressed/decompressor.h index b774425dcb5f..e1c1f2ec60f4 100644 --- a/arch/s390/boot/compressed/decompressor.h +++ b/arch/s390/boot/compressed/decompressor.h @@ -15,6 +15,8 @@ struct vmlinux_info { void (*entry)(void); unsigned long image_size; /* does not include .bss */ unsigned long bss_size; /* uncompressed image .bss size */ + unsigned long bootdata_off; + unsigned long bootdata_size; }; extern char _vmlinux_info[]; diff --git a/arch/s390/boot/compressed/vmlinux.lds.S b/arch/s390/boot/compressed/vmlinux.lds.S index 3814810718ef..7efc3938f595 100644 --- a/arch/s390/boot/compressed/vmlinux.lds.S +++ b/arch/s390/boot/compressed/vmlinux.lds.S @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0 */ #include <asm-generic/vmlinux.lds.h> +#include <asm/vmlinux.lds.h> OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390") OUTPUT_ARCH(s390:64-bit) @@ -32,6 +33,8 @@ SECTIONS *(.data.*) _edata = . ; } + BOOT_DATA + /* * uncompressed image info used by the decompressor it should match * struct vmlinux_info. It comes from .vmlinux.info section of |