From: Cindy Lu <lulu@redhat.com>
To: mst@redhat.com, armbru@redhat.com, eblake@redhat.com,
cohuck@redhat.com, jasowang@redhat.com
Cc: mhabets@solarflare.com, qemu-devel@nongnu.org,
rob.miller@broadcom.com, saugatm@xilinx.com, lulu@redhat.com,
hanand@xilinx.com, hch@infradead.org, eperezma@redhat.com,
jgg@mellanox.com, shahafs@mellanox.com, kevin.tian@intel.com,
parav@mellanox.com, vmireyno@marvell.com,
cunming.liang@intel.com, gdawar@xilinx.com, jiri@mellanox.com,
xiao.w.wang@intel.com, stefanha@redhat.com,
zhihong.wang@intel.com, aadam@redhat.com, rdunlap@infradead.org,
maxime.coquelin@redhat.com, lingshan.zhu@intel.com
Subject: [RFC v3 6/8] vhost-backend: export the vhost backend helper
Date: Fri, 29 May 2020 22:06:18 +0800 [thread overview]
Message-ID: <20200529140620.28759-7-lulu@redhat.com> (raw)
In-Reply-To: <20200529140620.28759-1-lulu@redhat.com>
export the helper then we can reuse some of them in vhost-vdpa
Signed-off-by: Cindy Lu <lulu@redhat.com>
---
hw/virtio/vhost-backend.c | 34 ++++++++++++++++++-------------
include/hw/virtio/vhost-backend.h | 28 +++++++++++++++++++++++++
2 files changed, 48 insertions(+), 14 deletions(-)
diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c
index 48905383f8..42efb4967b 100644
--- a/hw/virtio/vhost-backend.c
+++ b/hw/virtio/vhost-backend.c
@@ -14,7 +14,7 @@
#include "qemu/error-report.h"
#include "qemu/main-loop.h"
#include "standard-headers/linux/vhost_types.h"
-
+#include "hw/virtio/vhost-vdpa.h"
#ifdef CONFIG_VHOST_KERNEL
#include <linux/vhost.h>
#include <sys/ioctl.h>
@@ -22,10 +22,16 @@
static int vhost_kernel_call(struct vhost_dev *dev, unsigned long int request,
void *arg)
{
- int fd = (uintptr_t) dev->opaque;
-
- assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_KERNEL);
-
+ int fd = -1;
+ struct vhost_vdpa *v = NULL;
+ if (dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_KERNEL) {
+ fd = (uintptr_t) dev->opaque;
+ }
+ if (dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_VDPA) {
+ v = dev->opaque;
+ fd = v->device_fd;
+ }
+ assert(fd != -1);
return ioctl(fd, request, arg);
}
@@ -89,7 +95,7 @@ static int vhost_kernel_scsi_get_abi_version(struct vhost_dev *dev, int *version
return vhost_kernel_call(dev, VHOST_SCSI_GET_ABI_VERSION, version);
}
-static int vhost_kernel_set_log_base(struct vhost_dev *dev, uint64_t base,
+int vhost_kernel_set_log_base(struct vhost_dev *dev, uint64_t base,
struct vhost_log *log)
{
return vhost_kernel_call(dev, VHOST_SET_LOG_BASE, &base);
@@ -101,7 +107,7 @@ 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_addr(struct vhost_dev *dev,
+int vhost_kernel_set_vring_addr(struct vhost_dev *dev,
struct vhost_vring_addr *addr)
{
return vhost_kernel_call(dev, VHOST_SET_VRING_ADDR, addr);
@@ -113,31 +119,31 @@ static int vhost_kernel_set_vring_endian(struct vhost_dev *dev,
return vhost_kernel_call(dev, VHOST_SET_VRING_ENDIAN, ring);
}
-static int vhost_kernel_set_vring_num(struct vhost_dev *dev,
+int vhost_kernel_set_vring_num(struct vhost_dev *dev,
struct vhost_vring_state *ring)
{
return vhost_kernel_call(dev, VHOST_SET_VRING_NUM, ring);
}
-static int vhost_kernel_set_vring_base(struct vhost_dev *dev,
+int vhost_kernel_set_vring_base(struct vhost_dev *dev,
struct vhost_vring_state *ring)
{
return vhost_kernel_call(dev, VHOST_SET_VRING_BASE, ring);
}
-static int vhost_kernel_get_vring_base(struct vhost_dev *dev,
+int vhost_kernel_get_vring_base(struct vhost_dev *dev,
struct vhost_vring_state *ring)
{
return vhost_kernel_call(dev, VHOST_GET_VRING_BASE, ring);
}
-static int vhost_kernel_set_vring_kick(struct vhost_dev *dev,
+int vhost_kernel_set_vring_kick(struct vhost_dev *dev,
struct vhost_vring_file *file)
{
return vhost_kernel_call(dev, VHOST_SET_VRING_KICK, file);
}
-static int vhost_kernel_set_vring_call(struct vhost_dev *dev,
+int vhost_kernel_set_vring_call(struct vhost_dev *dev,
struct vhost_vring_file *file)
{
return vhost_kernel_call(dev, VHOST_SET_VRING_CALL, file);
@@ -155,13 +161,13 @@ static int vhost_kernel_set_features(struct vhost_dev *dev,
return vhost_kernel_call(dev, VHOST_SET_FEATURES, &features);
}
-static int vhost_kernel_get_features(struct vhost_dev *dev,
+int vhost_kernel_get_features(struct vhost_dev *dev,
uint64_t *features)
{
return vhost_kernel_call(dev, VHOST_GET_FEATURES, features);
}
-static int vhost_kernel_set_owner(struct vhost_dev *dev)
+int vhost_kernel_set_owner(struct vhost_dev *dev)
{
return vhost_kernel_call(dev, VHOST_SET_OWNER, NULL);
}
diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-backend.h
index 6f6670783f..300b59c172 100644
--- a/include/hw/virtio/vhost-backend.h
+++ b/include/hw/virtio/vhost-backend.h
@@ -172,4 +172,32 @@ int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev,
int vhost_user_gpu_set_socket(struct vhost_dev *dev, int fd);
+
+int vhost_kernel_set_log_base(struct vhost_dev *dev, uint64_t base,
+ struct vhost_log *log);
+
+int vhost_kernel_set_vring_addr(struct vhost_dev *dev,
+ struct vhost_vring_addr *addr);
+
+int vhost_kernel_set_vring_num(struct vhost_dev *dev,
+ struct vhost_vring_state *ring);
+
+int vhost_kernel_set_vring_base(struct vhost_dev *dev,
+ struct vhost_vring_state *ring);
+
+int vhost_kernel_get_vring_base(struct vhost_dev *dev,
+ struct vhost_vring_state *ring);
+
+int vhost_kernel_set_vring_kick(struct vhost_dev *dev,
+ struct vhost_vring_file *file);
+
+int vhost_kernel_set_vring_call(struct vhost_dev *dev,
+ struct vhost_vring_file *file);
+
+int vhost_kernel_set_owner(struct vhost_dev *dev);
+
+int vhost_kernel_get_features(struct vhost_dev *dev,
+ uint64_t *features);
+
+
#endif /* VHOST_BACKEND_H */
--
2.21.1
next prev parent reply other threads:[~2020-05-29 14:20 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-29 14:06 [RFC v3 0/8] vDPA support in qemu Cindy Lu
2020-05-29 14:06 ` [RFC v3 1/8] net: introduce qemu_get_peer Cindy Lu
2020-06-11 9:07 ` Laurent Vivier
2020-06-11 13:12 ` Cindy Lu
2020-05-29 14:06 ` [RFC v3 2/8] vhost_net: use the function qemu_get_peer Cindy Lu
2020-06-16 7:47 ` Laurent Vivier
2020-05-29 14:06 ` [RFC v3 3/8] virtio-bus: introduce queue_enabled method Cindy Lu
2020-06-16 7:49 ` Laurent Vivier
2020-06-16 12:22 ` Cindy Lu
2020-05-29 14:06 ` [RFC v3 4/8] virtio-pci: implement " Cindy Lu
2020-06-16 7:56 ` Laurent Vivier
2020-05-29 14:06 ` [RFC v3 5/8] vhost: introduce vhost_set_vring_ready method Cindy Lu
2020-06-16 8:04 ` Laurent Vivier
2020-06-16 12:21 ` Cindy Lu
2020-05-29 14:06 ` Cindy Lu [this message]
2020-06-16 8:16 ` [RFC v3 6/8] vhost-backend: export the vhost backend helper Laurent Vivier
2020-06-17 3:03 ` Cindy Lu
2020-05-29 14:06 ` [RFC v3 7/8] vhost-vdpa: introduce vhost-vdpa backend Cindy Lu
2020-06-03 2:52 ` Jason Wang
2020-06-03 5:23 ` Cindy Lu
2020-06-03 2:53 ` Jason Wang
2020-06-03 5:23 ` Cindy Lu
2020-06-03 6:43 ` Jason Wang
2020-06-03 8:20 ` Cindy Lu
2020-06-04 10:39 ` Eugenio Perez Martin
2020-06-04 11:33 ` Michael S. Tsirkin
2020-06-08 14:46 ` Cindy Lu
2020-06-08 20:14 ` Eric Blake
2020-06-09 3:42 ` Cindy Lu
2020-06-15 14:44 ` Laurent Vivier
2020-06-16 8:52 ` Cindy Lu
2020-05-29 14:06 ` [RFC v3 8/8] vhost-vdpa: introduce vhost-vdpa net client Cindy Lu
2020-05-29 14:22 ` Eric Blake
2020-06-01 1:41 ` Cindy Lu
2020-06-03 6:39 ` Jason Wang
2020-06-03 8:19 ` Cindy Lu
2020-06-03 8:43 ` Jason Wang
2020-06-03 8:49 ` Cindy Lu
2020-05-29 20:29 ` [RFC v3 0/8] vDPA support in qemu no-reply
2020-05-29 20:33 ` no-reply
2020-05-29 20:37 ` no-reply
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=20200529140620.28759-7-lulu@redhat.com \
--to=lulu@redhat.com \
--cc=aadam@redhat.com \
--cc=armbru@redhat.com \
--cc=cohuck@redhat.com \
--cc=cunming.liang@intel.com \
--cc=eblake@redhat.com \
--cc=eperezma@redhat.com \
--cc=gdawar@xilinx.com \
--cc=hanand@xilinx.com \
--cc=hch@infradead.org \
--cc=jasowang@redhat.com \
--cc=jgg@mellanox.com \
--cc=jiri@mellanox.com \
--cc=kevin.tian@intel.com \
--cc=lingshan.zhu@intel.com \
--cc=maxime.coquelin@redhat.com \
--cc=mhabets@solarflare.com \
--cc=mst@redhat.com \
--cc=parav@mellanox.com \
--cc=qemu-devel@nongnu.org \
--cc=rdunlap@infradead.org \
--cc=rob.miller@broadcom.com \
--cc=saugatm@xilinx.com \
--cc=shahafs@mellanox.com \
--cc=stefanha@redhat.com \
--cc=vmireyno@marvell.com \
--cc=xiao.w.wang@intel.com \
--cc=zhihong.wang@intel.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).