From: jrossi@linux.ibm.com
To: qemu-devel@nongnu.org, qemu-s390x@nongnu.org, thuth@redhat.com
Cc: frankja@linux.ibm.com, jrossi@linux.ibm.com
Subject: [PATCH V2 0/18] s390x: Add Full Boot Order Support
Date: Thu, 26 Sep 2024 20:50:59 -0400 [thread overview]
Message-ID: <20240927005117.1679506-1-jrossi@linux.ibm.com> (raw)
From: Jared Rossi <jrossi@linux.ibm.com>
Loosely a v2, this updated patch set is a significant rework to most aspects of
the initially proposed multi-device boot order. Of particular note, the
original patch set used code jumps to restart the IPL while this version
does not. In order to remove the code jumps, two significant prerequisite
changes are required for the pc-bios. Firstly, the netboot code is linked into
the main s390-ccw.img, which allows for return after a failed netboot, based on
the patch set from Thomas Huth <thuth@redhat.com>
(https://lists.gnu.org/archive/html/qemu-devel/2024-06/msg03956.html).
Secondly, IPL errors that result in an immediate termination are converted
to instead provide a return value back to the main IPL calling function.
The routines for building and loading fallback device IPLBs are largely
unchanged: An IPLB is built for each device with a boot index
specified (up to 8 devices). The IPLBs location in memory is passed to the guest
using the global QIPL structure, which is stored at a fixed address. If the
first device in the boot order successfully IPLs, then the additional IPLBs are
never used; however, if the first device fails, subsequent IPLBs are retrieved
from memory and the IPL process restarts using the specifications contained in
the new IPLB.
This continues until IPL is successful or there are no IPLBs left to try.
The per-device loadparm attribute is still uniformly added to CCW devices
although it may only be assigned a value if the device has a boot index.
This will need further rework if a more targeted approach is desired.
Two automated test cases are planned for v3: a minimal test where a guest has
two boot devices defined and the first fails, and also a limit test where the
guest has 8 boot devices defined but only the last one can actually IPL.
Changes v1 -> v2:
- Use the libc from SLOF and replace sclp_print calls with put/printf
- Merge netboot into the main s390-ccw.img
- Rework pc-bios to return on error instead of panic
- Handle non-archetected IPLB types (QEMU SCSI) from DIAG308
- Remove code jumps and instead restart the IPL using a traditional loop
Jared Rossi (18):
hw/s390x/ipl: Provide more memory to the s390-ccw.img firmware
pc-bios/s390-ccw: Use the libc from SLOF and remove sclp prints
pc-bios/s390-ccw: Link the netboot code into the main s390-ccw.img
binary
hw/s390x: Remove the possibility to load the s390-netboot.img binary
pc-bios/s390-ccw: Merge netboot.mak into the main Makefile
docs/system/s390x/bootdevices: Update the documentation about network
booting
pc-bios/s390-ccw: Remove panics from ISO IPL path
pc-bios/s390-ccw: Remove panics from SCSI IPL path
pc-bios/s390-ccw: Remove panics from ECKD IPL path
pc-bios/s390-ccw: Remove panics from DASD IPL path
pc-bios/s390-ccw: Remove panics from netboot IPL path
pc-bios/s390-ccw: Enable failed IPL to return after error
include/hw/s390x: Add include files for common IPL structs
s390x: Add individual loadparm assignment to CCW device
s390x: Build an IPLB for each boot device
s390x: Rebuild IPLB for SCSI device directly from DIAG308
pc-bios/s390x: Enable multi-device boot loop
docs/system: Update documentation for s390x IPL
docs/system/bootindex.rst | 7 +-
docs/system/s390x/bootdevices.rst | 29 +-
pc-bios/s390-ccw/netboot.mak | 62 -----
hw/s390x/ccw-device.h | 2 +
hw/s390x/ipl.h | 123 +--------
include/hw/s390x/ipl/qipl.h | 126 +++++++++
pc-bios/s390-ccw/bootmap.h | 21 +-
pc-bios/s390-ccw/cio.h | 2 +
pc-bios/s390-ccw/dasd-ipl.h | 2 +-
pc-bios/s390-ccw/iplb.h | 107 ++------
pc-bios/s390-ccw/libc.h | 89 -------
pc-bios/s390-ccw/s390-ccw.h | 36 +--
pc-bios/s390-ccw/virtio.h | 3 +-
hw/s390x/ccw-device.c | 46 ++++
hw/s390x/ipl.c | 314 +++++++++++-----------
hw/s390x/s390-virtio-ccw.c | 28 +-
hw/s390x/sclp.c | 3 +-
pc-bios/s390-ccw/bootmap.c | 428 ++++++++++++++++++++----------
pc-bios/s390-ccw/cio.c | 81 +++---
pc-bios/s390-ccw/dasd-ipl.c | 71 ++---
pc-bios/s390-ccw/jump2ipl.c | 22 +-
pc-bios/s390-ccw/libc.c | 88 ------
pc-bios/s390-ccw/main.c | 125 ++++-----
pc-bios/s390-ccw/menu.c | 51 ++--
pc-bios/s390-ccw/netmain.c | 44 ++-
pc-bios/s390-ccw/sclp.c | 7 +-
pc-bios/s390-ccw/virtio-blkdev.c | 14 +-
pc-bios/s390-ccw/virtio-net.c | 7 +-
pc-bios/s390-ccw/virtio-scsi.c | 164 ++++++++----
pc-bios/s390-ccw/virtio.c | 67 +++--
target/s390x/diag.c | 9 +-
pc-bios/meson.build | 1 -
pc-bios/s390-ccw/Makefile | 69 ++++-
pc-bios/s390-netboot.img | Bin 67232 -> 0 bytes
34 files changed, 1143 insertions(+), 1105 deletions(-)
delete mode 100644 pc-bios/s390-ccw/netboot.mak
create mode 100644 include/hw/s390x/ipl/qipl.h
delete mode 100644 pc-bios/s390-ccw/libc.h
delete mode 100644 pc-bios/s390-ccw/libc.c
delete mode 100644 pc-bios/s390-netboot.img
--
2.45.1
next reply other threads:[~2024-09-27 0:52 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-27 0:50 jrossi [this message]
2024-09-27 0:51 ` [PATCH 01/18] hw/s390x/ipl: Provide more memory to the s390-ccw.img firmware jrossi
2024-09-27 0:51 ` [PATCH 02/18] pc-bios/s390-ccw: Use the libc from SLOF and remove sclp prints jrossi
2024-09-27 0:51 ` [PATCH 03/18] pc-bios/s390-ccw: Link the netboot code into the main s390-ccw.img binary jrossi
2024-09-27 0:51 ` [PATCH 04/18] hw/s390x: Remove the possibility to load the s390-netboot.img binary jrossi
2024-09-27 0:51 ` [PATCH 05/18] pc-bios/s390-ccw: Merge netboot.mak into the main Makefile jrossi
2024-09-27 0:51 ` [PATCH 06/18] docs/system/s390x/bootdevices: Update the documentation about network booting jrossi
2024-09-27 0:51 ` [PATCH 07/18] pc-bios/s390-ccw: Remove panics from ISO IPL path jrossi
2024-09-27 15:02 ` Thomas Huth
2024-09-27 17:15 ` Jared Rossi
2024-09-30 6:11 ` Thomas Huth
2024-09-30 13:10 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 08/18] pc-bios/s390-ccw: Remove panics from ECKD " jrossi
2024-09-27 15:29 ` Thomas Huth
2024-09-27 17:25 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 09/18] pc-bios/s390-ccw: Remove panics from SCSI " jrossi
2024-09-30 7:48 ` Thomas Huth
2024-09-30 10:13 ` Thomas Huth
2024-09-27 0:51 ` [PATCH 10/18] pc-bios/s390-ccw: Remove panics from DASD " jrossi
2024-09-30 8:14 ` Thomas Huth
2024-09-27 0:51 ` [PATCH 11/18] pc-bios/s390-ccw: Remove panics from Netboot " jrossi
2024-09-30 9:39 ` Thomas Huth
2024-09-30 13:15 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 12/18] pc-bios/s390-ccw: Enable failed IPL to return after error jrossi
2024-09-30 10:11 ` Thomas Huth
2024-09-30 13:29 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 13/18] include/hw/s390x: Add include files for common IPL structs jrossi
2024-09-30 10:42 ` Thomas Huth
2024-09-30 13:31 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 14/18] s390x: Add individual loadparm assignment to CCW device jrossi
2024-09-30 11:25 ` Thomas Huth
2024-09-27 0:51 ` [PATCH 15/18] hw/s390x: Build an IPLB for each boot device jrossi
2024-09-30 11:59 ` Thomas Huth
2024-09-30 13:39 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 16/18] s390x: Rebuild IPLB for SCSI device directly from DIAG308 jrossi
2024-09-30 12:15 ` Thomas Huth
2024-09-30 13:46 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 17/18] pc-bios/s390x: Enable multi-device boot loop jrossi
2024-09-30 12:32 ` Thomas Huth
2024-09-30 13:48 ` Jared Rossi
2024-09-30 13:08 ` Thomas Huth
2024-09-30 13:52 ` Jared Rossi
2024-09-27 0:51 ` [PATCH 18/18] docs/system: Update documentation for s390x IPL jrossi
2024-09-30 12:34 ` Thomas Huth
2024-09-30 13:14 ` [PATCH V2 0/18] s390x: Add Full Boot Order Support Thomas Huth
2024-09-30 14:20 ` Jared Rossi
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=20240927005117.1679506-1-jrossi@linux.ibm.com \
--to=jrossi@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=thuth@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).