All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qemu-s390x@nongnu.org, qemu-devel@nongnu.org
Cc: "Jason J . Herne" <jjherne@linux.ibm.com>,
	Thomas Huth <thuth@redhat.com>,
	Janosch Frank <frankja@linux.ibm.com>,
	qemu-block@nongnu.org, Cornelia Huck <cohuck@redhat.com>,
	Collin Walling <walling@linux.ibm.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>
Subject: [PATCH for-5.2 v2 0/9] Continue booting in case the first device is not bootable
Date: Thu,  6 Aug 2020 12:53:40 +0200	[thread overview]
Message-ID: <20200806105349.632-1-thuth@redhat.com> (raw)

The traditional / architected way of booting on s390x is to always
specify the device where the guest should be booted from - that means
s390x guests should be always started with a device that has the
"bootindex" property set.

For the users that are used to a firmware from a different CPU archi-
tecture (or the lazy s390x folks like myself), the s390-ccw bios also
tries to find a bootable device on its own in case the user did not
specify a "bootindex" property. Unfortunately, it always stops at the
very first device that it can find, no matter whether it's bootable or
not. That causes some weird behavior, for example while

 qemu-system-s390x -hda bootable.qcow2

boots perfectly fine, the bios refuses to work if you just specify
a virtio-scsi controller in front of it:

 qemu-system-s390x -device virtio-scsi -hda bootable.qcow2

While this is perfectly fine from the Z architecture point of view, it
still could be a little bit uncomfortable and confusing for the lazy
or ignorant users who did not specify a "bootindex". And since all major
firmwares on other architectures correctly boot in such cases, too,
let's also try to teach the s390-ccw bios how to boot in such cases.

For this, we have to get rid of the various panic()s and IPL_assert()
statements at the "low-level" function and let the main code handle
the decision instead whether a boot from a device should fail or not,
so that the main code can continue searching in case it wants to.

 Thomas

v2:
 - Add patch to remove superfluous call to enable_subchannel()
 - Add patch to test the new behavior in the tests/qtest/cdrom-test
 - Added Reviewed-bys from v1
 - Renamed check_sch_no() to is_dev_possibly_bootable()
 - Reworked the return codes to use 0/-ENODEV instead of true/false

Thomas Huth (9):
  pc-bios/s390-ccw/Makefile: Compile with -std=gnu99, -fwrapv and
    -fno-common
  pc-bios/s390-ccw: Move ipl-related code from main() into a separate
    function
  pc-bios/s390-ccw: Introduce ENODEV define and remove guards of others
  pc-bios/s390-ccw: Move the inner logic of find_subch() to a separate
    function
  pc-bios/s390-ccw: Do not bail out early if not finding a SCSI disk
  pc-bios/s390-ccw: Scan through all devices if no boot device specified
  pc-bios/s390-ccw: Allow booting in case the first virtio-blk disk is
    bad
  pc-bios/s390-ccw/main: Remove superfluous call to enable_subchannel()
  tests/qtest/cdrom: Add more s390x-related boot tests

 pc-bios/s390-ccw/Makefile        |   7 +-
 pc-bios/s390-ccw/bootmap.c       |  34 ++++--
 pc-bios/s390-ccw/main.c          | 172 +++++++++++++++++++------------
 pc-bios/s390-ccw/s390-ccw.h      |   8 +-
 pc-bios/s390-ccw/virtio-blkdev.c |   7 +-
 pc-bios/s390-ccw/virtio-scsi.c   |  28 +++--
 pc-bios/s390-ccw/virtio-scsi.h   |   2 +-
 tests/qtest/cdrom-test.c         |  12 +++
 8 files changed, 174 insertions(+), 96 deletions(-)

-- 
2.18.1



             reply	other threads:[~2020-08-06 12:04 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-06 10:53 Thomas Huth [this message]
2020-08-06 10:53 ` [PATCH for-5.2 v2 1/9] pc-bios/s390-ccw/Makefile: Compile with -std=gnu99, -fwrapv and -fno-common Thomas Huth
2020-08-06 10:53 ` [PATCH for-5.2 v2 2/9] pc-bios/s390-ccw: Move ipl-related code from main() into a separate function Thomas Huth
2020-08-06 10:53 ` [PATCH for-5.2 v2 3/9] pc-bios/s390-ccw: Introduce ENODEV define and remove guards of others Thomas Huth
2020-08-06 11:06   ` Cornelia Huck
2020-08-06 13:27   ` Janosch Frank
2020-08-27  9:10     ` Thomas Huth
2020-08-06 10:53 ` [PATCH for-5.2 v2 4/9] pc-bios/s390-ccw: Move the inner logic of find_subch() to a separate function Thomas Huth
2020-08-06 11:14   ` Cornelia Huck
2020-08-06 13:28   ` Janosch Frank
2020-08-06 10:53 ` [PATCH for-5.2 v2 5/9] pc-bios/s390-ccw: Do not bail out early if not finding a SCSI disk Thomas Huth
2020-08-06 11:20   ` Cornelia Huck
2020-08-06 10:53 ` [PATCH for-5.2 v2 6/9] pc-bios/s390-ccw: Scan through all devices if no boot device specified Thomas Huth
2020-08-06 10:53 ` [PATCH for-5.2 v2 7/9] pc-bios/s390-ccw: Allow booting in case the first virtio-blk disk is bad Thomas Huth
2020-08-06 10:53 ` [PATCH for-5.2 v2 8/9] pc-bios/s390-ccw/main: Remove superfluous call to enable_subchannel() Thomas Huth
2020-08-06 11:21   ` Cornelia Huck
2020-08-06 10:53 ` [PATCH for-5.2 v2 9/9] tests/qtest/cdrom: Add more s390x-related boot tests Thomas Huth
2020-08-06 11:23   ` Cornelia Huck
2020-08-06 11:58     ` Thomas Huth
2020-08-06 13:11       ` Cornelia Huck
2020-08-06 13:34   ` Janosch Frank

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=20200806105349.632-1-thuth@redhat.com \
    --to=thuth@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=jjherne@linux.ibm.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=walling@linux.ibm.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 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.