From: "Collin L. Walling" <walling@linux.vnet.ibm.com>
To: qemu-s390x@nongnu.org, qemu-devel@nongnu.org
Cc: borntraeger@de.ibm.com, frankja@linux.vnet.ibm.com,
cohuck@redhat.com, thuth@redhat.com, david@redhat.com,
alifm@linux.vnet.ibm.com, eblake@redhat.com,
mihajlov@linux.vnet.ibm.com
Subject: [Qemu-devel] [PATCH v5 09/12] s390-ccw: print zipl boot menu
Date: Mon, 5 Feb 2018 15:57:23 -0500 [thread overview]
Message-ID: <1517864246-11101-10-git-send-email-walling@linux.vnet.ibm.com> (raw)
In-Reply-To: <1517864246-11101-1-git-send-email-walling@linux.vnet.ibm.com>
When the boot menu options are present and the guest's
disk has been configured by the zipl tool, then the user
will be presented with an interactive boot menu with
labeled entries. An example of what the menu might look
like:
zIPL v1.37.1-build-20170714 interactive boot menu.
0. default (linux-4.13.0)
1. linux-4.13.0
2. performance
3. kvm
Signed-off-by: Collin L. Walling <walling@linux.vnet.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
| 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
--git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c
index 4ba2684..e9e283f 100644
--- a/pc-bios/s390-ccw/menu.c
+++ b/pc-bios/s390-ccw/menu.c
@@ -10,13 +10,60 @@
*/
#include "menu.h"
+#include "s390-ccw.h"
static uint8_t flags;
static uint64_t timeout;
+/* Offsets from zipl fields to zipl banner start */
+#define ZIPL_TIMEOUT_OFFSET 138
+#define ZIPL_FLAG_OFFSET 140
+
+static int get_boot_index(int entries)
+{
+ return 0; /* Implemented next patch */
+}
+
+static void zipl_println(const char *data, size_t len)
+{
+ char buf[len + 2];
+
+ ebcdic_to_ascii(data, buf, len);
+ buf[len] = '\n';
+ buf[len + 1] = '\0';
+
+ sclp_print(buf);
+}
+
int menu_get_zipl_boot_index(const void *stage2, int offset)
{
- return 0; /* implemented next patch */
+ const char *data = stage2 + offset;
+ uint16_t zipl_flag = *(uint16_t *)(data - ZIPL_FLAG_OFFSET);
+ uint16_t zipl_timeout = *(uint16_t *)(data - ZIPL_TIMEOUT_OFFSET);
+ size_t len;
+ int ct;
+
+ if (flags & BOOT_MENU_FLAG_ZIPL_OPTS) {
+ if (!zipl_flag) {
+ return 0; /* Boot default */
+ }
+ timeout = zipl_timeout;
+ }
+
+ /* Print and count all menu items, including the banner */
+ for (ct = 0; *data; ct++) {
+ len = strlen(data);
+ zipl_println(data, len);
+ data += len + 1;
+
+ if (ct < 2) {
+ sclp_print("\n");
+ }
+ }
+
+ sclp_print("\n");
+
+ return get_boot_index(ct - 1);
}
void menu_set_parms(uint8_t boot_menu_flag, uint16_t boot_menu_timeout)
--
2.7.4
next prev parent reply other threads:[~2018-02-05 21:01 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-05 20:57 [Qemu-devel] [PATCH v5 00/12]Interactive Boot Menu for DASD and SCSI Guests on s390x Collin L. Walling
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 01/12] s390-ccw: refactor boot map table code Collin L. Walling
2018-02-06 5:52 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-02-06 17:05 ` Collin L. Walling
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 02/12] s390-ccw: refactor eckd_block_num to use CHS Collin L. Walling
2018-02-06 6:00 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 03/12] s390-ccw: refactor IPL structs Collin L. Walling
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 04/12] s390-ccw: update libc Collin L. Walling
2018-02-06 6:14 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-02-06 17:07 ` Collin L. Walling
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 05/12] s390-ccw: move auxiliary IPL data to separate location Collin L. Walling
2018-02-06 9:23 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-02-06 10:13 ` Viktor Mihajlovski
2018-02-06 17:10 ` Collin L. Walling
2018-02-14 14:51 ` Collin L. Walling
2018-02-14 15:07 ` Christian Borntraeger
2018-02-06 9:45 ` [Qemu-devel] " Christian Borntraeger
2018-02-06 9:57 ` Viktor Mihajlovski
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 06/12] s390-ccw: parse and set boot menu options Collin L. Walling
2018-02-06 10:00 ` Viktor Mihajlovski
2018-02-14 17:46 ` [Qemu-devel] [qemu-s390x] " Collin L. Walling
2018-02-15 6:38 ` Thomas Huth
2018-02-15 7:57 ` Viktor Mihajlovski
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 07/12] s390-ccw: set up interactive boot menu parameters Collin L. Walling
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 08/12] s390-ccw: read stage2 boot loader data to find menu Collin L. Walling
2018-02-05 20:57 ` Collin L. Walling [this message]
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 10/12] s390-ccw: read user input for boot index via the SCLP console Collin L. Walling
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 11/12] s390-ccw: clear pending irqs Collin L. Walling
2018-02-06 10:07 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-02-06 16:37 ` Collin L. Walling
2018-02-14 10:57 ` David Hildenbrand
2018-02-14 15:33 ` Collin L. Walling
2018-02-15 7:04 ` Thomas Huth
2018-02-15 15:47 ` Collin L. Walling
2018-02-15 16:12 ` David Hildenbrand
2018-02-05 20:57 ` [Qemu-devel] [PATCH v5 12/12] s390-ccw: interactive boot menu for scsi Collin L. Walling
2018-02-05 21:20 ` [Qemu-devel] [PATCH v5 00/12]Interactive Boot Menu for DASD and SCSI Guests on s390x no-reply
2018-02-05 21:37 ` [Qemu-devel] [qemu-s390x] " Collin L. Walling
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=1517864246-11101-10-git-send-email-walling@linux.vnet.ibm.com \
--to=walling@linux.vnet.ibm.com \
--cc=alifm@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=eblake@redhat.com \
--cc=frankja@linux.vnet.ibm.com \
--cc=mihajlov@linux.vnet.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).