summaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel
diff options
context:
space:
mode:
authorVasily Gorbik <gor@linux.ibm.com>2018-04-10 14:14:02 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2018-10-09 11:21:06 +0200
commitd1b52a4388ffdcff47fb53de7fffe052fe766a9f (patch)
tree365847541f8313f4771223357ce68c2c945ea8fd /arch/s390/kernel
parent7516fc11e44e73f1fcf8a3808dd88f82142e6585 (diff)
downloadtalos-obmc-linux-d1b52a4388ffdcff47fb53de7fffe052fe766a9f.tar.gz
talos-obmc-linux-d1b52a4388ffdcff47fb53de7fffe052fe766a9f.zip
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/kernel')
-rw-r--r--arch/s390/kernel/vmlinux.lds.S13
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 4c5358ff9e05..cc3cbdc93d35 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -16,6 +16,7 @@
#define RO_AFTER_INIT_DATA
#include <asm-generic/vmlinux.lds.h>
+#include <asm/vmlinux.lds.h>
OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
OUTPUT_ARCH(s390:64-bit)
@@ -134,6 +135,8 @@ SECTIONS
__nospec_return_end = . ;
}
+ BOOT_DATA
+
/* early.c uses stsi, which requires page aligned data. */
. = ALIGN(PAGE_SIZE);
INIT_DATA_SECTION(0x100)
@@ -151,10 +154,12 @@ SECTIONS
* it should match struct vmlinux_info
*/
.vmlinux.info 0 : {
- QUAD(_stext) /* default_lma */
- QUAD(startup_continue) /* entry */
- QUAD(__bss_start - _stext) /* image_size */
- QUAD(__bss_stop - __bss_start) /* bss_size */
+ QUAD(_stext) /* default_lma */
+ QUAD(startup_continue) /* entry */
+ QUAD(__bss_start - _stext) /* image_size */
+ QUAD(__bss_stop - __bss_start) /* bss_size */
+ QUAD(__boot_data_start) /* bootdata_off */
+ QUAD(__boot_data_end - __boot_data_start) /* bootdata_size */
}
/* Debugging sections. */
OpenPOWER on IntegriCloud