Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:FrontRunner
s390-tools.19914
s390-tools-sles15sp2-04-zipl-Fix-entry-point-fo...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File s390-tools-sles15sp2-04-zipl-Fix-entry-point-for-stand-alone-kdump.patch of Package s390-tools.19914
Subject: [PATCH] [FEAT VS1804] zipl: Fix entry point for stand-alone kdump From: Marc Hartmayer <mhartmay@linux.ibm.com> Summary: genprotimg: Introduce new tool for the creation of PV images Description: genprotimg takes a kernel, host-key documents, optionally an initrd, optionally a file with the kernel command line, and it generates a single, loadable image file. The image consists of a concatenation of a plain text boot loader, the encrypted components for kernel, initrd, and cmdline, and the integrity-protected PV header, containing metadata necessary for running the guest in PV mode. It's possible to use this image file as a kernel for zIPL or for a direct kernel boot using QEMU. Upstream-ID: abe0ba7412f4398973235497754b05a199aec818 Problem-ID: VS1804 Upstream-Description: zipl: Fix entry point for stand-alone kdump Currently zipl doesn't differentiate between the load address and the entry point of an image, causing stage3 to strip away the entry point at 0x10000 for stand-alone kdump. This breaks the kdump kernel as it jumps to 0x10000 after the special handling needed for kdump has been performed. Fix this by differentiating between the load address and the entry point of an image. Fixes: d142fbd5 ("zipl: Do not strip kernel image IPL header") Signed-off-by: Philipp Rudo <prudo@linux.ibm.com> Reviewed-by: Stefan Haberland <sth@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com> Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> --- zipl/include/boot.h | 4 ++-- zipl/src/boot.c | 10 +++++----- zipl/src/bootmap.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) --- a/zipl/include/boot.h +++ b/zipl/include/boot.h @@ -310,8 +310,8 @@ int boot_init_fba_stage1b(struct boot_fb int boot_get_eckd_stage2(void** data, size_t* size, struct job_data* job); int boot_get_stage3_parms(void **buffer, size_t *bytecount, address_t parm_addr, address_t initrd_addr, size_t initrd_len, - address_t load_addr, int extra_parm, uint16_t flags, - size_t image_len); + address_t entry, int extra_parm, uint16_t flags, + address_t image_addr, size_t image_len); int boot_get_tape_ipl(void** data, size_t* size, address_t parm_addr, address_t initrd_addr, address_t image_addr); int boot_get_tape_dump(void** data, size_t* size, uint64_t mem); --- a/zipl/src/boot.c +++ b/zipl/src/boot.c @@ -79,14 +79,14 @@ boot_check_data(void) int boot_get_stage3_parms(void **buffer, size_t *bytecount, address_t parm_addr, address_t initrd_addr, size_t initrd_len, - address_t image_addr, int extra_parm, uint16_t flags, - size_t image_len) + address_t entry, int extra_parm, uint16_t flags, + address_t image_addr, size_t image_len) { struct boot_stage3_params params; void* data; - if (image_addr != (image_addr & PSW_ADDRESS_MASK)) { - error_reason("Kernel image load address to high (31 bit " + if (entry != (entry & PSW_ADDRESS_MASK)) { + error_reason("Kernel image entry point to high (31 bit " "addressing mode)"); return -1; } @@ -99,7 +99,7 @@ boot_get_stage3_parms(void **buffer, siz params.parm_addr = (uint64_t) parm_addr; params.initrd_addr = (uint64_t) initrd_addr; params.initrd_len = (uint64_t) initrd_len; - params.load_psw = (uint64_t)(image_addr | PSW_LOAD); + params.load_psw = (uint64_t)(entry | PSW_LOAD); params.extra_parm = (uint64_t) extra_parm; params.flags = flags; params.image_len = (uint64_t) image_len; --- a/zipl/src/bootmap.c +++ b/zipl/src/bootmap.c @@ -646,7 +646,7 @@ add_ipl_program(int fd, struct job_ipl_d ipl->is_kdump ? ipl->image_addr + 0x10 : ipl->image_addr, (info->type == disk_type_scsi) ? 0 : 1, - flags, image_size); + flags, ipl->image_addr, image_size); if (rc) { free(table); return rc;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor