[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/16] pc-bios: s390x: Fix bootmap.c zipl component entry data han
From: |
Thomas Huth |
Subject: |
[PULL 11/16] pc-bios: s390x: Fix bootmap.c zipl component entry data handling |
Date: |
Tue, 6 Oct 2020 20:31:17 +0200 |
From: Janosch Frank <frankja@linux.ibm.com>
The two main types of zipl component entries are execute and
load/data. The last member of the component entry struct therefore
denotes either a PSW or an address. Let's make this a bit more clear
by introducing a union and cleaning up the code that uses that struct
member.
The execute type component entries written by zipl contain short PSWs,
not addresses. Let's mask them and only pass the address part to
jump_to_IPL_code(uint64_t address) because it expects an address as
visible by the name of the argument.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20201006094249.50640-2-frankja@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/bootmap.c | 5 +++--
pc-bios/s390-ccw/bootmap.h | 7 ++++++-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
index 942fba3fa7..73471801de 100644
--- a/pc-bios/s390-ccw/bootmap.c
+++ b/pc-bios/s390-ccw/bootmap.c
@@ -10,6 +10,7 @@
#include "libc.h"
#include "s390-ccw.h"
+#include "s390-arch.h"
#include "bootmap.h"
#include "virtio.h"
#include "bswap.h"
@@ -448,7 +449,7 @@ static void zipl_load_segment(ComponentEntry *entry)
char *blk_no = &err_msg[30]; /* where to print blockno in (those ZZs) */
blockno = entry->data.blockno;
- address = entry->load_address;
+ address = entry->compdat.load_addr;
debug_print_int("loading segment at block", blockno);
debug_print_int("addr", address);
@@ -526,7 +527,7 @@ static void zipl_run(ScsiBlockPtr *pte)
IPL_assert(entry->component_type == ZIPL_COMP_ENTRY_EXEC, "No EXEC entry");
/* should not return */
- jump_to_IPL_code(entry->load_address);
+ jump_to_IPL_code(entry->compdat.load_psw & PSW_MASK_SHORT_ADDR);
}
static void ipl_scsi(void)
diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h
index 12a0166aae..3946aa3f8d 100644
--- a/pc-bios/s390-ccw/bootmap.h
+++ b/pc-bios/s390-ccw/bootmap.h
@@ -64,11 +64,16 @@ typedef struct BootMapTable {
BootMapPointer entry[];
} __attribute__ ((packed)) BootMapTable;
+typedef union ComponentEntryData {
+ uint64_t load_psw;
+ uint64_t load_addr;
+} ComponentEntryData;
+
typedef struct ComponentEntry {
ScsiBlockPtr data;
uint8_t pad[7];
uint8_t component_type;
- uint64_t load_address;
+ ComponentEntryData compdat;
} __attribute((packed)) ComponentEntry;
typedef struct ComponentHeader {
--
2.18.2
- [PULL 00/16] s390-ccw bios update, Thomas Huth, 2020/10/06
- [PULL 01/16] pc-bios/s390-ccw/Makefile: Compile with -std=gnu99, -fwrapv and -fno-common, Thomas Huth, 2020/10/06
- [PULL 02/16] pc-bios/s390-ccw: Move ipl-related code from main() into a separate function, Thomas Huth, 2020/10/06
- [PULL 04/16] pc-bios/s390-ccw: Move the inner logic of find_subch() to a separate function, Thomas Huth, 2020/10/06
- [PULL 03/16] pc-bios/s390-ccw: Introduce ENODEV define and remove guards of others, Thomas Huth, 2020/10/06
- [PULL 07/16] pc-bios/s390-ccw: Allow booting in case the first virtio-blk disk is bad, Thomas Huth, 2020/10/06
- [PULL 05/16] pc-bios/s390-ccw: Do not bail out early if not finding a SCSI disk, Thomas Huth, 2020/10/06
- [PULL 10/16] pc-bios/s390-ccw: break loop if a null block number is reached, Thomas Huth, 2020/10/06
- [PULL 06/16] pc-bios/s390-ccw: Scan through all devices if no boot device specified, Thomas Huth, 2020/10/06
- [PULL 09/16] pc-bios/s390-ccw: fix off-by-one error, Thomas Huth, 2020/10/06
- [PULL 11/16] pc-bios: s390x: Fix bootmap.c zipl component entry data handling,
Thomas Huth <=
- [PULL 14/16] pc-bios: s390x: Go into disabled wait when encountering a PGM exception, Thomas Huth, 2020/10/06
- [PULL 08/16] pc-bios/s390-ccw/main: Remove superfluous call to enable_subchannel(), Thomas Huth, 2020/10/06
- [PULL 12/16] pc-bios: s390x: Save PSW rework, Thomas Huth, 2020/10/06
- [PULL 13/16] pc-bios: s390x: Use reset PSW if avaliable, Thomas Huth, 2020/10/06
- [PULL 16/16] tests/qtest/cdrom: Add more s390x-related boot tests, Thomas Huth, 2020/10/06
- [PULL 15/16] pc-bios/s390: Update the s390-ccw bios binaries, Thomas Huth, 2020/10/06
- Re: [PULL 00/16] s390-ccw bios update, Christian Borntraeger, 2020/10/07
- Re: [PULL 00/16] s390-ccw bios update, Peter Maydell, 2020/10/08