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