Currently, virtio-scsi doesn't support any control or event message, this patch
adds the basic initialization.

Some backends need this feature, like dpdk/spdk vhost-user backend.

Reproduce:
1. Start spdk vhost-user-scsi backend;
2. Create a vm with a SCSI vhost-user-scsi disk and start the vm;
3. Mount an iso to the vm without an OS;
3. Stop the vhost-user-scsi backend;
5. Vhost-user-scsi backend will crash before exiting when cleaning the 
resources.

The reason is that the seabios virtio-scsi only initializes the req vq,
then the spdk/dpdk treats it a not good session, it's hard to handle this tricky
issue from dpdk architecture.

Signed-off-by: Li Feng <fen...@smartx.com>
---
 src/hw/virtio-scsi.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/hw/virtio-scsi.c b/src/hw/virtio-scsi.c
index 369c981..e16d4b0 100644
--- a/src/hw/virtio-scsi.c
+++ b/src/hw/virtio-scsi.c
@@ -203,8 +203,18 @@ init_virtio_scsi(void *data)
         }
     }
 
+    if (vp_find_vq(vp, 0, &vq) < 0 ) {
+        dprintf(1, "fail to find ctrl vq for virtio-scsi %pP\n", pci);
+        goto fail;
+    }
+
+    if (vp_find_vq(vp, 1, &vq) < 0 ) {
+        dprintf(1, "fail to find event vq for virtio-scsi %pP\n", pci);
+        goto fail;
+    }
+
     if (vp_find_vq(vp, 2, &vq) < 0 ) {
-        dprintf(1, "fail to find vq for virtio-scsi %pP\n", pci);
+        dprintf(1, "fail to find req vq for virtio-scsi %pP\n", pci);
         goto fail;
     }
 
-- 
2.31.1

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to