diff mbox series

[1/3] pc-bios/s390-ccw/virtio: Add a function to reset a virtio device

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

Commit Message

Thomas Huth Jan. 16, 2025, 11:58 a.m. UTC
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(-)

Comments

Jared Rossi Jan. 16, 2025, 2:14 p.m. UTC | #1
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 mbox series

Patch

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)) {