Message ID | 20220628131032.213986-8-thuth@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390-ccw bios fixes and clean-ups | expand |
On Tue, Jun 28 2022, Thomas Huth <thuth@redhat.com> wrote: > Feature negotiation should be done first, since some fields in the > config area can depend on the negotiated features and thus should > rather be read afterwards. > > While we're at it, also adjust the error message here a little bit > (the code is nowadays used for non-block virtio devices, too). > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > pc-bios/s390-ccw/virtio.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) Reviewed-by: Cornelia Huck <cohuck@redhat.com>
On Tue, 2022-06-28 at 15:10 +0200, Thomas Huth wrote: > Feature negotiation should be done first, since some fields in the > config area can depend on the negotiated features and thus should > rather be read afterwards. > > While we're at it, also adjust the error message here a little bit > (the code is nowadays used for non-block virtio devices, too). > > Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Eric Farman <farman@linux.ibm.com> > --- > pc-bios/s390-ccw/virtio.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c > index 4e85a2eb82..d8c2b52710 100644 > --- a/pc-bios/s390-ccw/virtio.c > +++ b/pc-bios/s390-ccw/virtio.c > @@ -262,10 +262,6 @@ void virtio_setup_ccw(VDev *vdev) > rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, > sizeof(status), false); > IPL_assert(rc == 0, "Could not write DRIVER status to host"); > > - IPL_assert( > - run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, > false) == 0, > - "Could not get block device configuration"); > - > /* Feature negotiation */ > for (i = 0; i < ARRAY_SIZE(vdev->guest_features); i++) { > feats.features = 0; > @@ -278,6 +274,9 @@ void virtio_setup_ccw(VDev *vdev) > IPL_assert(rc == 0, "Could not set features bits"); > } > > + rc = run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, > false); > + IPL_assert(rc == 0, "Could not get virtio device > configuration"); > + > for (i = 0; i < vdev->nr_vqs; i++) { > VqInfo info = { > .queue = (unsigned long long) ring_area + (i * > VIRTIO_RING_SIZE),
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c index 4e85a2eb82..d8c2b52710 100644 --- a/pc-bios/s390-ccw/virtio.c +++ b/pc-bios/s390-ccw/virtio.c @@ -262,10 +262,6 @@ void virtio_setup_ccw(VDev *vdev) rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false); IPL_assert(rc == 0, "Could not write DRIVER status to host"); - IPL_assert( - run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false) == 0, - "Could not get block device configuration"); - /* Feature negotiation */ for (i = 0; i < ARRAY_SIZE(vdev->guest_features); i++) { feats.features = 0; @@ -278,6 +274,9 @@ void virtio_setup_ccw(VDev *vdev) IPL_assert(rc == 0, "Could not set features bits"); } + rc = run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false); + IPL_assert(rc == 0, "Could not get virtio device configuration"); + for (i = 0; i < vdev->nr_vqs; i++) { VqInfo info = { .queue = (unsigned long long) ring_area + (i * VIRTIO_RING_SIZE),
Feature negotiation should be done first, since some fields in the config area can depend on the negotiated features and thus should rather be read afterwards. While we're at it, also adjust the error message here a little bit (the code is nowadays used for non-block virtio devices, too). Signed-off-by: Thomas Huth <thuth@redhat.com> --- pc-bios/s390-ccw/virtio.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)