|
|
4841a6 |
From a60940fb7ef026f3aa968e77389efa51ea648ddf 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 34/37] pc-bios/s390-ccw/virtio: Read device config after
|
|
|
4841a6 |
feature negotiation
|
|
|
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: [6/9] 99ed8765d614207db19ded75d62c65171674d982
|
|
|
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 aa5c69ce99411c4886bcd051f288afc02b6d968d
|
|
|
4841a6 |
Author: Thomas Huth <thuth@redhat.com>
|
|
|
4841a6 |
Date: Mon Jul 4 13:18:58 2022 +0200
|
|
|
4841a6 |
|
|
|
4841a6 |
pc-bios/s390-ccw/virtio: Read device config after feature negotiation
|
|
|
4841a6 |
|
|
|
4841a6 |
Feature negotiation should be done first, since some fields in the
|
|
|
4841a6 |
config area can depend on the negotiated features and thus should
|
|
|
4841a6 |
rather be read afterwards.
|
|
|
4841a6 |
|
|
|
4841a6 |
While we're at it, also adjust the error message here a little bit
|
|
|
4841a6 |
(the code is nowadays used for non-block virtio devices, too).
|
|
|
4841a6 |
|
|
|
4841a6 |
Message-Id: <20220704111903.62400-8-thuth@redhat.com>
|
|
|
4841a6 |
Reviewed-by: Eric Farman <farman@linux.ibm.com>
|
|
|
4841a6 |
Reviewed-by: Cornelia Huck <cohuck@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.c | 7 +++----
|
|
|
4841a6 |
1 file changed, 3 insertions(+), 4 deletions(-)
|
|
|
4841a6 |
|
|
|
4841a6 |
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
|
|
|
4841a6 |
index 4e85a2eb82..d8c2b52710 100644
|
|
|
4841a6 |
--- a/pc-bios/s390-ccw/virtio.c
|
|
|
4841a6 |
+++ b/pc-bios/s390-ccw/virtio.c
|
|
|
4841a6 |
@@ -262,10 +262,6 @@ void virtio_setup_ccw(VDev *vdev)
|
|
|
4841a6 |
rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false);
|
|
|
4841a6 |
IPL_assert(rc == 0, "Could not write DRIVER status to host");
|
|
|
4841a6 |
|
|
|
4841a6 |
- IPL_assert(
|
|
|
4841a6 |
- run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false) == 0,
|
|
|
4841a6 |
- "Could not get block device configuration");
|
|
|
4841a6 |
-
|
|
|
4841a6 |
/* Feature negotiation */
|
|
|
4841a6 |
for (i = 0; i < ARRAY_SIZE(vdev->guest_features); i++) {
|
|
|
4841a6 |
feats.features = 0;
|
|
|
4841a6 |
@@ -278,6 +274,9 @@ void virtio_setup_ccw(VDev *vdev)
|
|
|
4841a6 |
IPL_assert(rc == 0, "Could not set features bits");
|
|
|
4841a6 |
}
|
|
|
4841a6 |
|
|
|
4841a6 |
+ rc = run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false);
|
|
|
4841a6 |
+ IPL_assert(rc == 0, "Could not get virtio device configuration");
|
|
|
4841a6 |
+
|
|
|
4841a6 |
for (i = 0; i < vdev->nr_vqs; i++) {
|
|
|
4841a6 |
VqInfo info = {
|
|
|
4841a6 |
.queue = (unsigned long long) ring_area + (i * VIRTIO_RING_SIZE),
|
|
|
4841a6 |
--
|
|
|
4841a6 |
2.35.3
|
|
|
4841a6 |
|