Blame SOURCES/kvm-pc-bios-s390-ccw-virtio-blkdev-Request-the-right-fea.patch

586cba
From db58915fcaf3d24b64fe2c34cc15b5596b9a81bb Mon Sep 17 00:00:00 2001
586cba
From: Thomas Huth <thuth@redhat.com>
586cba
Date: Fri, 8 Jul 2022 20:49:01 +0200
586cba
Subject: [PATCH 14/17] pc-bios/s390-ccw/virtio-blkdev: Request the right
586cba
 feature bits
586cba
586cba
RH-Author: Thomas Huth <thuth@redhat.com>
586cba
RH-MergeRequest: 106: pc-bios/s390-ccw: Fix boot from disks with 4k sectors that do not have the typical DASD geometry
586cba
RH-Commit: [9/10] 9dcd8c2f659f366f9487ab6473d1f0d7778b40a7 (thuth/qemu-kvm-cs9)
586cba
RH-Bugzilla: 2098077
586cba
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
586cba
RH-Acked-by: David Hildenbrand <david@redhat.com>
586cba
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
586cba
586cba
Bugzilla: http://bugzilla.redhat.com/2098077
586cba
586cba
commit 9125a314cca4a1838b09305a87d8efb98f80ab67
586cba
Author: Thomas Huth <thuth@redhat.com>
586cba
Date:   Mon Jul 4 13:19:01 2022 +0200
586cba
586cba
    pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits
586cba
586cba
    The virtio-blk code uses the block size and geometry fields in the
586cba
    config area. According to the virtio-spec, these have to be negotiated
586cba
    with the right feature bits during initialization, otherwise they
586cba
    might not be available. QEMU is so far very forgiving and always
586cba
    provides them, but we should not rely on this behavior, so let's
586cba
    better request them properly via the VIRTIO_BLK_F_GEOMETRY and
586cba
    VIRTIO_BLK_F_BLK_SIZE feature bits.
586cba
586cba
    Message-Id: <20220704111903.62400-11-thuth@redhat.com>
586cba
    Signed-off-by: Thomas Huth <thuth@redhat.com>
586cba
586cba
Signed-off-by: Thomas Huth <thuth@redhat.com>
586cba
---
586cba
 pc-bios/s390-ccw/virtio-blkdev.c | 4 ++++
586cba
 1 file changed, 4 insertions(+)
586cba
586cba
diff --git a/pc-bios/s390-ccw/virtio-blkdev.c b/pc-bios/s390-ccw/virtio-blkdev.c
586cba
index c175b66a47..8271c47296 100644
586cba
--- a/pc-bios/s390-ccw/virtio-blkdev.c
586cba
+++ b/pc-bios/s390-ccw/virtio-blkdev.c
586cba
@@ -13,6 +13,9 @@
586cba
 #include "virtio.h"
586cba
 #include "virtio-scsi.h"
586cba
 
586cba
+#define VIRTIO_BLK_F_GEOMETRY   (1 << 4)
586cba
+#define VIRTIO_BLK_F_BLK_SIZE   (1 << 6)
586cba
+
586cba
 static int virtio_blk_read_many(VDev *vdev, ulong sector, void *load_addr,
586cba
                                 int sec_num)
586cba
 {
586cba
@@ -223,6 +226,7 @@ int virtio_blk_setup_device(SubChannelId schid)
586cba
 {
586cba
     VDev *vdev = virtio_get_device();
586cba
 
586cba
+    vdev->guest_features[0] = VIRTIO_BLK_F_GEOMETRY | VIRTIO_BLK_F_BLK_SIZE;
586cba
     vdev->schid = schid;
586cba
     virtio_setup_ccw(vdev);
586cba
 
586cba
-- 
586cba
2.31.1
586cba