Message ID | 20250116115826.192047-2-thuth@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | pc-bios/s390-ccw: Fix problems related to network booting | expand |
Reviewed-by: Jared Rossi <jrossi@linux.ibm.com> On 1/16/25 6:58 AM, Thomas Huth wrote: > To be able to properly silence a virtio device after using it, > we need a global function to reset the device. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > pc-bios/s390-ccw/virtio.h | 1 + > pc-bios/s390-ccw/virtio.c | 7 ++++++- > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h > index 9faf3986b1..f13fa6f5fe 100644 > --- a/pc-bios/s390-ccw/virtio.h > +++ b/pc-bios/s390-ccw/virtio.h > @@ -274,6 +274,7 @@ void vring_send_buf(VRing *vr, void *p, int len, int flags); > int vr_poll(VRing *vr); > int vring_wait_reply(void); > int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd); > +int virtio_reset(VDev *vdev); > int virtio_setup_ccw(VDev *vdev); > > int virtio_net_init(void *mac_addr); > diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c > index 8b5a370bb3..cd6c99c7e3 100644 > --- a/pc-bios/s390-ccw/virtio.c > +++ b/pc-bios/s390-ccw/virtio.c > @@ -217,6 +217,11 @@ int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd) > return 0; > } > > +int virtio_reset(VDev *vdev) > +{ > + return run_ccw(vdev, CCW_CMD_VDEV_RESET, NULL, 0, false); > +} > + > int virtio_setup_ccw(VDev *vdev) > { > int i, cfg_size = 0; > @@ -235,7 +240,7 @@ int virtio_setup_ccw(VDev *vdev) > vdev->config.blk.blk_size = 0; /* mark "illegal" - setup started... */ > vdev->guessed_disk_nature = VIRTIO_GDN_NONE; > > - run_ccw(vdev, CCW_CMD_VDEV_RESET, NULL, 0, false); > + virtio_reset(vdev); > > status = VIRTIO_CONFIG_S_ACKNOWLEDGE; > if (run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false)) {
diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h index 9faf3986b1..f13fa6f5fe 100644 --- a/pc-bios/s390-ccw/virtio.h +++ b/pc-bios/s390-ccw/virtio.h @@ -274,6 +274,7 @@ void vring_send_buf(VRing *vr, void *p, int len, int flags); int vr_poll(VRing *vr); int vring_wait_reply(void); int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd); +int virtio_reset(VDev *vdev); int virtio_setup_ccw(VDev *vdev); int virtio_net_init(void *mac_addr); diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c index 8b5a370bb3..cd6c99c7e3 100644 --- a/pc-bios/s390-ccw/virtio.c +++ b/pc-bios/s390-ccw/virtio.c @@ -217,6 +217,11 @@ int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd) return 0; } +int virtio_reset(VDev *vdev) +{ + return run_ccw(vdev, CCW_CMD_VDEV_RESET, NULL, 0, false); +} + int virtio_setup_ccw(VDev *vdev) { int i, cfg_size = 0; @@ -235,7 +240,7 @@ int virtio_setup_ccw(VDev *vdev) vdev->config.blk.blk_size = 0; /* mark "illegal" - setup started... */ vdev->guessed_disk_nature = VIRTIO_GDN_NONE; - run_ccw(vdev, CCW_CMD_VDEV_RESET, NULL, 0, false); + virtio_reset(vdev); status = VIRTIO_CONFIG_S_ACKNOWLEDGE; if (run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false)) {
To be able to properly silence a virtio device after using it, we need a global function to reset the device. Signed-off-by: Thomas Huth <thuth@redhat.com> --- pc-bios/s390-ccw/virtio.h | 1 + pc-bios/s390-ccw/virtio.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-)