All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Garzarella <sgarzare@redhat.com>
To: "Eugenio Pérez" <eperezma@redhat.com>
Cc: qemu-devel@nongnu.org, Liuxiangdong <liuxiangdong5@huawei.com>,
	 Gautam Dawar <gdawar@xilinx.com>,
	Jason Wang <jasowang@redhat.com>,
	alvaro.karsz@solid-run.com,
	 "Gonglei (Arei)" <arei.gonglei@huawei.com>,
	Lei Yang <leiyang@redhat.com>,
	si-wei.liu@oracle.com,  Eli Cohen <eli@mellanox.com>,
	Shannon Nelson <snelson@pensando.io>,
	 Laurent Vivier <lvivier@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	 Parav Pandit <parav@mellanox.com>,
	Zhu Lingshan <lingshan.zhu@intel.com>,
	 Cindy Lu <lulu@redhat.com>,
	longpeng2@huawei.com, Harpreet Singh Anand <hanand@xilinx.com>
Subject: Re: [PATCH for 8.1 v2 2/6] vdpa: add vhost_vdpa_reset_status_fd
Date: Mon, 27 Mar 2023 11:34:12 +0200	[thread overview]
Message-ID: <byupzvbxliqm2h7sy7p3lykf3i277uz3lbny72vpdfwh4i5n3f@onjenbiqgfbj> (raw)
In-Reply-To: <20230323195404.1247326-3-eperezma@redhat.com>

On Thu, Mar 23, 2023 at 08:54:00PM +0100, Eugenio Pérez wrote:
>This allows to reset a vhost-vdpa device from external subsystems like
>vhost-net, since it does not have any struct vhost_dev by the time we
>need to use it.
>
>It is used in subsequent patches to negotiate features
>and probe for CVQ ASID isolation.
>
>Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
>---
> include/hw/virtio/vhost-vdpa.h |  1 +
> hw/virtio/vhost-vdpa.c         | 58 +++++++++++++++++++++++-----------
> 2 files changed, 41 insertions(+), 18 deletions(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

>
>diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h
>index c278a2a8de..28de7da91e 100644
>--- a/include/hw/virtio/vhost-vdpa.h
>+++ b/include/hw/virtio/vhost-vdpa.h
>@@ -54,6 +54,7 @@ typedef struct vhost_vdpa {
>     VhostVDPAHostNotifier notifier[VIRTIO_QUEUE_MAX];
> } VhostVDPA;
>
>+void vhost_vdpa_reset_status_fd(int fd);
> int vhost_vdpa_get_iova_range(int fd, struct vhost_vdpa_iova_range *iova_range);
>
> int vhost_vdpa_dma_map(struct vhost_vdpa *v, uint32_t asid, hwaddr iova,
>diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
>index bbabea18f3..7a2053b8d9 100644
>--- a/hw/virtio/vhost-vdpa.c
>+++ b/hw/virtio/vhost-vdpa.c
>@@ -335,38 +335,45 @@ static const MemoryListener vhost_vdpa_memory_listener = {
>     .region_del = vhost_vdpa_listener_region_del,
> };
>
>-static int vhost_vdpa_call(struct vhost_dev *dev, unsigned long int request,
>-                             void *arg)
>+static int vhost_vdpa_dev_fd(const struct vhost_dev *dev)
> {
>     struct vhost_vdpa *v = dev->opaque;
>-    int fd = v->device_fd;
>-    int ret;
>
>     assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_VDPA);
>+    return v->device_fd;
>+}
>+
>+static int vhost_vdpa_call_fd(int fd, unsigned long int request, void *arg)
>+{
>+    int ret = ioctl(fd, request, arg);
>
>-    ret = ioctl(fd, request, arg);
>     return ret < 0 ? -errno : ret;
> }
>
>-static int vhost_vdpa_add_status(struct vhost_dev *dev, uint8_t status)
>+static int vhost_vdpa_call(struct vhost_dev *dev, unsigned long int request,
>+                           void *arg)
>+{
>+    return vhost_vdpa_call_fd(vhost_vdpa_dev_fd(dev), request, arg);
>+}
>+
>+static int vhost_vdpa_add_status_fd(int fd, uint8_t status)
> {
>     uint8_t s;
>     int ret;
>
>-    trace_vhost_vdpa_add_status(dev, status);
>-    ret = vhost_vdpa_call(dev, VHOST_VDPA_GET_STATUS, &s);
>+    ret = vhost_vdpa_call_fd(fd, VHOST_VDPA_GET_STATUS, &s);
>     if (ret < 0) {
>         return ret;
>     }
>
>     s |= status;
>
>-    ret = vhost_vdpa_call(dev, VHOST_VDPA_SET_STATUS, &s);
>+    ret = vhost_vdpa_call_fd(fd, VHOST_VDPA_SET_STATUS, &s);
>     if (ret < 0) {
>         return ret;
>     }
>
>-    ret = vhost_vdpa_call(dev, VHOST_VDPA_GET_STATUS, &s);
>+    ret = vhost_vdpa_call_fd(fd, VHOST_VDPA_GET_STATUS, &s);
>     if (ret < 0) {
>         return ret;
>     }
>@@ -378,6 +385,12 @@ static int vhost_vdpa_add_status(struct vhost_dev *dev, uint8_t status)
>     return 0;
> }
>
>+static int vhost_vdpa_add_status(struct vhost_dev *dev, uint8_t status)
>+{
>+    trace_vhost_vdpa_add_status(dev, status);
>+    return vhost_vdpa_add_status_fd(vhost_vdpa_dev_fd(dev), status);
>+}
>+
> int vhost_vdpa_get_iova_range(int fd, struct vhost_vdpa_iova_range *iova_range)
> {
>     int ret = ioctl(fd, VHOST_VDPA_GET_IOVA_RANGE, iova_range);
>@@ -709,16 +722,20 @@ static int vhost_vdpa_get_device_id(struct vhost_dev *dev,
>     return ret;
> }
>
>+static int vhost_vdpa_reset_device_fd(int fd)
>+{
>+    uint8_t status = 0;
>+
>+    return vhost_vdpa_call_fd(fd, VHOST_VDPA_SET_STATUS, &status);
>+}
>+
> static int vhost_vdpa_reset_device(struct vhost_dev *dev)
> {
>     struct vhost_vdpa *v = dev->opaque;
>-    int ret;
>-    uint8_t status = 0;
>
>-    ret = vhost_vdpa_call(dev, VHOST_VDPA_SET_STATUS, &status);
>-    trace_vhost_vdpa_reset_device(dev);
>     v->suspended = false;
>-    return ret;
>+    trace_vhost_vdpa_reset_device(dev);
>+    return vhost_vdpa_reset_device_fd(vhost_vdpa_dev_fd(dev));
> }
>
> static int vhost_vdpa_get_vq_index(struct vhost_dev *dev, int idx)
>@@ -1170,6 +1187,13 @@ static int vhost_vdpa_dev_start(struct vhost_dev *dev, bool started)
>     return 0;
> }
>
>+void vhost_vdpa_reset_status_fd(int fd)
>+{
>+    vhost_vdpa_reset_device_fd(fd);
>+    vhost_vdpa_add_status_fd(fd, VIRTIO_CONFIG_S_ACKNOWLEDGE |
>+                                 VIRTIO_CONFIG_S_DRIVER);
>+}
>+
> static void vhost_vdpa_reset_status(struct vhost_dev *dev)
> {
>     struct vhost_vdpa *v = dev->opaque;
>@@ -1178,9 +1202,7 @@ static void vhost_vdpa_reset_status(struct vhost_dev *dev)
>         return;
>     }
>
>-    vhost_vdpa_reset_device(dev);
>-    vhost_vdpa_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE |
>-                               VIRTIO_CONFIG_S_DRIVER);
>+    vhost_vdpa_reset_status_fd(vhost_vdpa_dev_fd(dev));
>     memory_listener_unregister(&v->listener);
> }
>
>-- 
>2.31.1
>



  reply	other threads:[~2023-03-27  9:34 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-23 19:53 [PATCH for 8.1 v2 0/6] Move ASID test to vhost-vdpa net initialization Eugenio Pérez
2023-03-23 19:53 ` [PATCH for 8.1 v2 1/6] vdpa: Remove status in reset tracing Eugenio Pérez
2023-03-27  9:33   ` Stefano Garzarella
2023-03-28  6:45   ` Jason Wang
2023-03-23 19:54 ` [PATCH for 8.1 v2 2/6] vdpa: add vhost_vdpa_reset_status_fd Eugenio Pérez
2023-03-27  9:34   ` Stefano Garzarella [this message]
2023-03-28  6:53   ` Jason Wang
2023-03-28  7:37     ` Eugenio Perez Martin
2023-04-21  7:45       ` Michael S. Tsirkin
2023-03-23 19:54 ` [PATCH for 8.1 v2 3/6] vdpa: add vhost_vdpa_set_dev_features_fd Eugenio Pérez
2023-03-30  6:15   ` Jason Wang
2023-03-23 19:54 ` [PATCH for 8.1 v2 4/6] vdpa: return errno in vhost_vdpa_get_vring_group error Eugenio Pérez
2023-03-27  9:34   ` Stefano Garzarella
2023-03-30  6:15   ` Jason Wang
2023-03-23 19:54 ` [PATCH for 8.1 v2 5/6] vdpa: move CVQ isolation check to net_init_vhost_vdpa Eugenio Pérez
2023-03-27  9:36   ` Stefano Garzarella
2023-03-30  6:20   ` Jason Wang
2023-03-30  6:23     ` Jason Wang
2023-03-30 10:42       ` Eugenio Perez Martin
2023-03-31  8:00         ` Jason Wang
2023-03-31 10:11           ` Eugenio Perez Martin
2023-04-03  5:32             ` Jason Wang
2023-04-03 17:21               ` Eugenio Perez Martin
2023-03-23 19:54 ` [PATCH for 8.1 v2 6/6] vdpa: Cache cvq group in VhostVDPAState Eugenio Pérez

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=byupzvbxliqm2h7sy7p3lykf3i277uz3lbny72vpdfwh4i5n3f@onjenbiqgfbj \
    --to=sgarzare@redhat.com \
    --cc=alvaro.karsz@solid-run.com \
    --cc=arei.gonglei@huawei.com \
    --cc=eli@mellanox.com \
    --cc=eperezma@redhat.com \
    --cc=gdawar@xilinx.com \
    --cc=hanand@xilinx.com \
    --cc=jasowang@redhat.com \
    --cc=leiyang@redhat.com \
    --cc=lingshan.zhu@intel.com \
    --cc=liuxiangdong5@huawei.com \
    --cc=longpeng2@huawei.com \
    --cc=lulu@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mst@redhat.com \
    --cc=parav@mellanox.com \
    --cc=qemu-devel@nongnu.org \
    --cc=si-wei.liu@oracle.com \
    --cc=snelson@pensando.io \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.