From: Mike Christie <michael.christie@oracle.com>
To: stefanha@redhat.com, qemu-devel@nongnu.org, fam@euphon.net,
linux-scsi@vger.kernel.org, target-devel@vger.kernel.org,
mst@redhat.com, jasowang@redhat.com, pbonzini@redhat.com,
virtualization@lists.linux-foundation.org
Subject: [PATCH 1/1] qemu vhost scsi: add VHOST_SET_VRING_ENABLE support
Date: Thu, 12 Nov 2020 23:19:00 +0000
Message-ID: <1605223150-10888-2-git-send-email-michael.christie@oracle.com> (raw)
In-Reply-To: <1605223150-10888-1-git-send-email-michael.christie@oracle.com>
This patch made over the master branch allows the vhost-scsi
driver to call into the kernel and tell it to enable/disable
a virtqueue.
The kernel patches included with this set, will create
a worker per IO vq when multiple IO queues have been setup.
Signed-off-by: Mike Christie <michael.christie@oracle.com>
---
hw/scsi/vhost-scsi.c | 6 ++++++
hw/virtio/vhost-backend.c | 30 ++++++++++++++++++++++++++++++
| 1 +
3 files changed, 37 insertions(+)
diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c
index 4d70fa0..bbb2ba3 100644
--- a/hw/scsi/vhost-scsi.c
+++ b/hw/scsi/vhost-scsi.c
@@ -93,6 +93,12 @@ static int vhost_scsi_start(VHostSCSI *s)
return ret;
}
+ ret = vsc->dev.vhost_ops->vhost_set_vring_enable(&vsc->dev, 1);
+ if (ret) {
+ error_report("Error enabling vhost-scsi vqs %d", ret);
+ vhost_scsi_common_stop(vsc);
+ }
+
ret = vhost_scsi_set_endpoint(s);
if (ret < 0) {
error_report("Error setting vhost-scsi endpoint");
diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c
index 88c8ecc..e190c8e 100644
--- a/hw/virtio/vhost-backend.c
+++ b/hw/virtio/vhost-backend.c
@@ -102,6 +102,35 @@ static int vhost_kernel_set_mem_table(struct vhost_dev *dev,
return vhost_kernel_call(dev, VHOST_SET_MEM_TABLE, mem);
}
+static int vhost_kernel_set_vring_enable(struct vhost_dev *dev, int enable)
+{
+ struct vhost_vring_state s;
+ int i, ret;
+
+ s.num = 1;
+ for (i = 0; i < dev->nvqs; ++i) {
+ s.index = i;
+
+ ret = vhost_kernel_call(dev, VHOST_SET_VRING_ENABLE, &s);
+ /* Ignore kernels that do not support the cmd */
+ if (ret = -EPERM)
+ return 0;
+ if (ret)
+ goto disable_vrings;
+ }
+
+ return 0;
+
+disable_vrings:
+ s.num = 0;
+ for (i--; i < dev->nvqs; ++i) {
+ s.index = i;
+ vhost_kernel_call(dev, VHOST_SET_VRING_ENABLE, &s);
+ }
+
+ return ret;
+}
+
static int vhost_kernel_set_vring_addr(struct vhost_dev *dev,
struct vhost_vring_addr *addr)
{
@@ -302,6 +331,7 @@ static const VhostOps kernel_ops = {
.vhost_scsi_get_abi_version = vhost_kernel_scsi_get_abi_version,
.vhost_set_log_base = vhost_kernel_set_log_base,
.vhost_set_mem_table = vhost_kernel_set_mem_table,
+ .vhost_set_vring_enable = vhost_kernel_set_vring_enable,
.vhost_set_vring_addr = vhost_kernel_set_vring_addr,
.vhost_set_vring_endian = vhost_kernel_set_vring_endian,
.vhost_set_vring_num = vhost_kernel_set_vring_num,
--git a/linux-headers/linux/vhost.h b/linux-headers/linux/vhost.h
index 7523218..98dd919 100644
--- a/linux-headers/linux/vhost.h
+++ b/linux-headers/linux/vhost.h
@@ -70,6 +70,7 @@
#define VHOST_VRING_BIG_ENDIAN 1
#define VHOST_SET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x13, struct vhost_vring_state)
#define VHOST_GET_VRING_ENDIAN _IOW(VHOST_VIRTIO, 0x14, struct vhost_vring_state)
+#define VHOST_SET_VRING_ENABLE _IOW(VHOST_VIRTIO, 0x15, struct vhost_vring_state)
/* The following ioctls use eventfd file descriptors to signal and poll
* for events. */
--
1.8.3.1
next prev parent reply index
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-12 23:18 [PATCH 00/10] vhost/qemu: thread per IO SCSI vq Mike Christie
2020-11-12 23:19 ` Mike Christie [this message]
2020-11-17 11:53 ` [PATCH 1/1] qemu vhost scsi: add VHOST_SET_VRING_ENABLE support Stefan Hajnoczi
2020-12-02 9:59 ` Michael S. Tsirkin
2020-12-02 16:05 ` Michael Christie
2020-11-12 23:19 ` [PATCH 01/10] vhost: remove work arg from vhost_work_flush Mike Christie
2020-11-17 13:04 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 02/10] vhost scsi: remove extra flushes Mike Christie
2020-11-17 13:07 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 03/10] vhost poll: fix coding style Mike Christie
2020-11-17 13:07 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 04/10] vhost: support multiple worker threads Mike Christie
2020-11-12 23:19 ` [PATCH 05/10] vhost: poll support support multiple workers Mike Christie
2020-11-17 15:32 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 06/10] vhost scsi: make SCSI cmd completion per vq Mike Christie
2020-11-17 16:04 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 07/10] vhost, vhost-scsi: flush IO vqs then send TMF rsp Mike Christie
2020-11-17 16:05 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 08/10] vhost: move msg_handler to new ops struct Mike Christie
2020-11-17 16:08 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 09/10] vhost: add VHOST_SET_VRING_ENABLE support Mike Christie
2020-11-17 16:14 ` Stefan Hajnoczi
2020-11-12 23:19 ` [PATCH 10/10] vhost-scsi: create a woker per IO vq Mike Christie
2020-11-17 16:40 ` [PATCH 00/10] vhost/qemu: thread per IO SCSI vq Stefan Hajnoczi
2020-11-17 19:13 ` Mike Christie
2020-11-18 9:54 ` Michael S. Tsirkin
2020-11-19 14:00 ` Stefan Hajnoczi
2020-11-18 11:31 ` Stefan Hajnoczi
2020-11-19 14:46 ` Michael S. Tsirkin
2020-11-19 16:11 ` Mike Christie
2020-11-19 16:24 ` Stefan Hajnoczi
2020-11-19 16:43 ` Mike Christie
2020-11-19 17:08 ` Stefan Hajnoczi
2020-11-20 8:45 ` Stefan Hajnoczi
2020-11-20 12:31 ` Michael S. Tsirkin
2020-12-01 12:59 ` Stefan Hajnoczi
2020-12-01 13:45 ` Stefano Garzarella
2020-12-01 17:43 ` Stefan Hajnoczi
2020-12-02 10:35 ` Stefano Garzarella
2020-11-23 15:17 ` Stefano Garzarella
2020-11-18 5:17 ` Jason Wang
2020-11-18 6:57 ` Mike Christie
2020-11-18 7:19 ` Mike Christie
2020-11-18 7:54 ` Jason Wang
2020-11-18 20:06 ` Mike Christie
2020-11-19 4:35 ` Jason Wang
2020-11-19 15:49 ` Mike Christie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1605223150-10888-2-git-send-email-michael.christie@oracle.com \
--to=michael.christie@oracle.com \
--cc=fam@euphon.net \
--cc=jasowang@redhat.com \
--cc=linux-scsi@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=target-devel@vger.kernel.org \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Target-devel archive on lore.kernel.org
Archives are clonable:
git clone --mirror https://lore.kernel.org/target-devel/0 target-devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 target-devel target-devel/ https://lore.kernel.org/target-devel \
target-devel@vger.kernel.org
public-inbox-index target-devel
Example config snippet for mirrors
Newsgroup available over NNTP:
nntp://nntp.lore.kernel.org/org.kernel.vger.target-devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git