All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jason J. Herne" <jjherne@linux.ibm.com>
To: qemu-devel@nongnu.org, qemu-s390x@nongnu.org, cohuck@redhat.com,
	thuth@redhat.com, pasic@linux.ibm.com, alifm@linux.ibm.com,
	borntraeger@de.ibm.com
Subject: [Qemu-devel] [PATCH v6 13/16] s390-bios: Use control unit type to determine boot method
Date: Thu,  4 Apr 2019 10:34:32 -0400	[thread overview]
Message-ID: <1554388475-18329-14-git-send-email-jjherne@linux.ibm.com> (raw)
In-Reply-To: <1554388475-18329-1-git-send-email-jjherne@linux.ibm.com>

The boot method is different depending on which device type we are
booting from. Let's examine the control unit type to determine if we're
a virtio device. We'll eventually add a case to check for a real dasd device
here as well.

Since we have to call enable_subchannel() in main now, might as well
remove that call from virtio.c : run_ccw(). This requires adding some
additional enable_subchannel calls to not break calls to
virtio_is_supported().

Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/main.c    | 16 ++++++++++++++--
 pc-bios/s390-ccw/netmain.c |  1 +
 pc-bios/s390-ccw/virtio.c  |  1 -
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index d3a161c..57a1013 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -76,6 +76,7 @@ static bool find_subch(int dev_no)
         /* Skip net devices since no IPLB is created and therefore no
          * network bootloader has been loaded
          */
+        enable_subchannel(blk_schid);
         if (virtio_is_supported(blk_schid) &&
             virtio_get_device_type() == VIRTIO_ID_NET && dev_no < 0) {
             continue;
@@ -198,13 +199,24 @@ static void virtio_setup(void)
 
 int main(void)
 {
+    uint16_t cutype;
+
     sclp_setup();
     css_setup();
     boot_setup();
     find_boot_device();
+    enable_subchannel(blk_schid);
 
-    virtio_setup();
-    zipl_load(); /* no return */
+    cutype = cu_type(blk_schid);
+    switch (cutype) {
+    case CU_TYPE_VIRTIO:
+        virtio_setup();
+        zipl_load(); /* no return */
+        break;
+    default:
+        print_int("Attempting to boot from unexpected device type", cutype);
+        panic("");
+    }
 
     panic("Failed to load OS from hard disk\n");
     return 0; /* make compiler happy */
diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c
index 5189c0f..f3542cb 100644
--- a/pc-bios/s390-ccw/netmain.c
+++ b/pc-bios/s390-ccw/netmain.c
@@ -476,6 +476,7 @@ static bool find_net_dev(Schib *schib, int dev_no)
         if (!schib->pmcw.dnv) {
             continue;
         }
+        enable_subchannel(net_schid);
         if (!virtio_is_supported(net_schid)) {
             continue;
         }
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index 35278eae..fb40ca9 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -102,7 +102,6 @@ static int run_ccw(VDev *vdev, int cmd, void *ptr, int len, bool sli)
         ccw.flags |= CCW_FLAG_SLI;
     }
 
-    enable_subchannel(vdev->schid);
     return do_cio(vdev->schid, vdev->senseid.cu_type, ptr2u32(&ccw), CCW_FMT1);
 }
 
-- 
2.7.4

  parent reply	other threads:[~2019-04-04 14:35 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-04 14:34 [Qemu-devel] [PATCH v6 00/16] s390: vfio-ccw dasd ipl support Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 01/16] s390 vfio-ccw: Add bootindex property and IPLB data Jason J. Herne
2019-04-12 10:38   ` Thomas Huth
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 02/16] s390-bios: decouple cio setup from virtio Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 03/16] s390-bios: decouple common boot logic " Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 04/16] s390-bios: Clean up cio.h Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 05/16] s390-bios: Decouple channel i/o logic from virtio Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 06/16] s390-bios: Map low core memory Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 07/16] s390-bios: ptr2u32 and u32toptr Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 08/16] s390-bios: Support for running format-0/1 channel programs Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 09/16] s390-bios: cio error handling Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 10/16] s390-bios: Extend find_dev() for non-virtio devices Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 11/16] s390-bios: Factor finding boot device out of virtio code path Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 12/16] s390-bios: Refactor virtio to run channel programs via cio Jason J. Herne
2019-04-04 14:34 ` Jason J. Herne [this message]
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 14/16] s390-bios: Add channel command codes/structs needed for dasd-ipl Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 15/16] s390-bios: Support booting from real dasd device Jason J. Herne
2019-04-04 14:34 ` [Qemu-devel] [PATCH v6 16/16] s390-bios: Use control unit type to find bootable devices Jason J. Herne
2019-04-05  5:55   ` Thomas Huth
2019-04-04 15:14 ` [Qemu-devel] [PATCH v6 00/16] s390: vfio-ccw dasd ipl support no-reply
2019-04-04 15:20 ` no-reply
2019-04-05  6:58 ` Thomas Huth
2019-04-05  7:52   ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2019-04-05 13:11     ` Jason J. Herne
2019-04-05 13:26       ` Thomas Huth
2019-04-05 13:36         ` Cornelia Huck
2019-04-05 13:36           ` Cornelia Huck
2019-04-05 13:43         ` Jason J. Herne

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=1554388475-18329-14-git-send-email-jjherne@linux.ibm.com \
    --to=jjherne@linux.ibm.com \
    --cc=alifm@linux.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=pasic@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 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.