All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>,
	qemu-s390x@nongnu.org, Cornelia Huck <cohuck@redhat.com>,
	Marc Hartmayer <mhartmay@linux.ibm.com>,
	Janosch Frank <frankja@linux.ibm.com>
Subject: [PULL 11/16] pc-bios: s390x: Fix bootmap.c zipl component entry data handling
Date: Tue,  6 Oct 2020 20:31:17 +0200	[thread overview]
Message-ID: <20201006183122.155609-12-thuth@redhat.com> (raw)
In-Reply-To: <20201006183122.155609-1-thuth@redhat.com>

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



  parent reply	other threads:[~2020-10-06 18:43 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-06 18:31 [PULL 00/16] s390-ccw bios update Thomas Huth
2020-10-06 18:31 ` [PULL 01/16] pc-bios/s390-ccw/Makefile: Compile with -std=gnu99, -fwrapv and -fno-common Thomas Huth
2020-10-06 18:31 ` [PULL 02/16] pc-bios/s390-ccw: Move ipl-related code from main() into a separate function Thomas Huth
2020-10-06 18:31 ` [PULL 03/16] pc-bios/s390-ccw: Introduce ENODEV define and remove guards of others Thomas Huth
2020-10-06 18:31 ` [PULL 04/16] pc-bios/s390-ccw: Move the inner logic of find_subch() to a separate function Thomas Huth
2020-10-06 18:31 ` [PULL 05/16] pc-bios/s390-ccw: Do not bail out early if not finding a SCSI disk Thomas Huth
2020-10-06 18:31 ` [PULL 06/16] pc-bios/s390-ccw: Scan through all devices if no boot device specified Thomas Huth
2020-10-06 18:31 ` [PULL 07/16] pc-bios/s390-ccw: Allow booting in case the first virtio-blk disk is bad Thomas Huth
2020-10-06 18:31 ` [PULL 08/16] pc-bios/s390-ccw/main: Remove superfluous call to enable_subchannel() Thomas Huth
2020-10-06 18:31 ` [PULL 09/16] pc-bios/s390-ccw: fix off-by-one error Thomas Huth
2020-10-06 18:31 ` [PULL 10/16] pc-bios/s390-ccw: break loop if a null block number is reached Thomas Huth
2020-10-06 18:31 ` Thomas Huth [this message]
2020-10-06 18:31 ` [PULL 12/16] pc-bios: s390x: Save PSW rework Thomas Huth
2020-10-06 18:31 ` [PULL 13/16] pc-bios: s390x: Use reset PSW if avaliable Thomas Huth
2020-10-06 18:31 ` [PULL 14/16] pc-bios: s390x: Go into disabled wait when encountering a PGM exception Thomas Huth
2020-10-06 18:31 ` [PULL 15/16] pc-bios/s390: Update the s390-ccw bios binaries Thomas Huth
2020-10-06 18:31 ` [PULL 16/16] tests/qtest/cdrom: Add more s390x-related boot tests Thomas Huth
2020-10-07  5:59 ` [PULL 00/16] s390-ccw bios update Christian Borntraeger
2020-10-08 10:32 ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201006183122.155609-12-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=mhartmay@linux.ibm.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.