qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: peter.maydell@linaro.org
Cc: borntraeger@de.ibm.com, agraf@suse.de, qemu-devel@nongnu.org,
	Farhan Ali <alifm@linux.vnet.ibm.com>,
	Eugene Dvurechenski <jno@linux.vnet.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>
Subject: [Qemu-devel] [PULL 09/12] pc-bios/s390-ccw: add boot entry selection for ECKD DASD
Date: Tue,  2 May 2017 15:36:01 +0200	[thread overview]
Message-ID: <20170502133604.17735-10-cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <20170502133604.17735-1-cornelia.huck@de.ibm.com>

From: Farhan Ali <alifm@linux.vnet.ibm.com>

1. change a bit definition of ScsiMbr to allow an array of pointers
2. add loadparm fetch to boot script processing
3. apply loadparm index to boot entry selection, if any

Initial patch from Eugene (jno) Dvurechenski.

Signed-off-by: Eugene (jno) Dvurechenski <jno@linux.vnet.ibm.com>
Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
---
 pc-bios/s390-ccw/bootmap.c | 16 +++++++++++-----
 pc-bios/s390-ccw/bootmap.h |  2 +-
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
index e39e67e07b..e974350b6f 100644
--- a/pc-bios/s390-ccw/bootmap.c
+++ b/pc-bios/s390-ccw/bootmap.c
@@ -183,15 +183,21 @@ static block_number_t load_eckd_segments(block_number_t blk, uint64_t *address)
 static void run_eckd_boot_script(block_number_t mbr_block_nr)
 {
     int i;
+    unsigned int loadparm = get_loadparm_index();
     block_number_t block_nr;
     uint64_t address;
-    ScsiMbr *scsi_mbr = (void *)sec;
+    ScsiMbr *bte = (void *)sec; /* Eckd bootmap table entry */
     BootMapScript *bms = (void *)sec;
 
+    debug_print_int("loadparm", loadparm);
+    IPL_assert(loadparm < 31, "loadparm value greater than"
+               " maximum number of boot entries allowed");
+
     memset(sec, FREE_SPACE_FILLER, sizeof(sec));
     read_block(mbr_block_nr, sec, "Cannot read MBR");
 
-    block_nr = eckd_block_num((void *)&(scsi_mbr->blockptr));
+    block_nr = eckd_block_num((void *)&(bte->blockptr[loadparm]));
+    IPL_assert(block_nr != -1, "No Boot Map");
 
     memset(sec, FREE_SPACE_FILLER, sizeof(sec));
     read_block(block_nr, sec, "Cannot read Boot Map Script");
@@ -459,11 +465,11 @@ static void ipl_scsi(void)
     debug_print_int("MBR Version", mbr->version_id);
     IPL_check(mbr->version_id == 1,
               "Unknown MBR layout version, assuming version 1");
-    debug_print_int("program table", mbr->blockptr.blockno);
-    IPL_assert(mbr->blockptr.blockno, "No Program Table");
+    debug_print_int("program table", mbr->blockptr[0].blockno);
+    IPL_assert(mbr->blockptr[0].blockno, "No Program Table");
 
     /* Parse the program table */
-    read_block(mbr->blockptr.blockno, sec,
+    read_block(mbr->blockptr[0].blockno, sec,
                "Error reading Program Table");
 
     IPL_assert(magic_match(sec, ZIPL_MAGIC), "No zIPL magic in PT");
diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h
index 9073de2238..7f367820f3 100644
--- a/pc-bios/s390-ccw/bootmap.h
+++ b/pc-bios/s390-ccw/bootmap.h
@@ -70,7 +70,7 @@ typedef struct ScsiMbr {
     uint8_t magic[4];
     uint32_t version_id;
     uint8_t reserved[8];
-    ScsiBlockPtr blockptr;
+    ScsiBlockPtr blockptr[];
 } __attribute__ ((packed)) ScsiMbr;
 
 #define ZIPL_MAGIC              "zIPL"
-- 
2.11.0

  parent reply	other threads:[~2017-05-02 13:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-02 13:35 [Qemu-devel] [PULL 00/12] next batch of s390x patches Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 01/12] hw/s390x: provide loadparm property for the machine Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 02/12] hw/s390x/ipl: enable LOADPARM in IPIB for a boot device Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 03/12] hw/s390x/sclp: update LOADPARM in SCP Info Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 04/12] util/qemu-config: Add loadparm to qemu machine_opts Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 05/12] pc-bios/s390-ccw: Make ebcdic/ascii conversion public Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 06/12] pc-bios/s390-ccw: get LOADPARM stored in SCP Read Info Cornelia Huck
2017-05-02 13:35 ` [Qemu-devel] [PULL 07/12] pc-bios/s390-ccw: provide a function to interpret LOADPARM value Cornelia Huck
2017-05-02 13:36 ` [Qemu-devel] [PULL 08/12] pc-bios/s390-ccw: provide entry selection on LOADPARM for SCSI disk Cornelia Huck
2017-05-02 13:36 ` Cornelia Huck [this message]
2017-05-02 13:36 ` [Qemu-devel] [PULL 10/12] pc-bios/s390-ccw: add boot entry selection to El Torito routine Cornelia Huck
2017-05-02 13:36 ` [Qemu-devel] [PULL 11/12] pc-bios/s390-ccw.img: update image Cornelia Huck
2017-05-02 13:36 ` [Qemu-devel] [PULL 12/12] hw/s390x/ipl: Fix crash with virtio-scsi-pci device Cornelia Huck
2017-05-05 14:58 ` [Qemu-devel] [PULL 00/12] next batch of s390x patches Stefan Hajnoczi

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=20170502133604.17735-10-cornelia.huck@de.ibm.com \
    --to=cornelia.huck@de.ibm.com \
    --cc=agraf@suse.de \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=jno@linux.vnet.ibm.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@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 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).