[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v4 09/20] vdpa: Save call_fd in vhost-vdpa
From: |
Eugenio Pérez |
Subject: |
[RFC PATCH v4 09/20] vdpa: Save call_fd in vhost-vdpa |
Date: |
Fri, 1 Oct 2021 09:05:52 +0200 |
We need to know it to switch to Shadow VirtQueue.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
include/hw/virtio/vhost-vdpa.h | 2 ++
hw/virtio/vhost-vdpa.c | 5 +++++
2 files changed, 7 insertions(+)
diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h
index 48aae59d8e..fddac248b3 100644
--- a/include/hw/virtio/vhost-vdpa.h
+++ b/include/hw/virtio/vhost-vdpa.h
@@ -30,6 +30,8 @@ typedef struct vhost_vdpa {
GPtrArray *shadow_vqs;
struct vhost_dev *dev;
QLIST_ENTRY(vhost_vdpa) entry;
+ /* File descriptor the device uses to call VM/SVQ */
+ int call_fd[VIRTIO_QUEUE_MAX];
VhostVDPAHostNotifier notifier[VIRTIO_QUEUE_MAX];
} VhostVDPA;
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index 36c954a779..57a857444a 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -652,7 +652,12 @@ static int vhost_vdpa_set_vring_kick(struct vhost_dev *dev,
static int vhost_vdpa_set_vring_call(struct vhost_dev *dev,
struct vhost_vring_file *file)
{
+ struct vhost_vdpa *v = dev->opaque;
+ int vdpa_idx = vhost_vdpa_get_vq_index(dev, file->index);
+
trace_vhost_vdpa_set_vring_call(dev, file->index, file->fd);
+
+ v->call_fd[vdpa_idx] = file->fd;
return vhost_vdpa_call(dev, VHOST_SET_VRING_CALL, file);
}
--
2.27.0
- [RFC PATCH v4 06/20] vhost: Add VhostShadowVirtqueue, (continued)
[RFC PATCH v4 09/20] vdpa: Save call_fd in vhost-vdpa,
Eugenio Pérez <=
[RFC PATCH v4 10/20] vhost-vdpa: Take into account SVQ in vhost_vdpa_set_vring_call, Eugenio Pérez, 2021/10/01
[RFC PATCH v4 11/20] vhost: Route host->guest notification through shadow virtqueue, Eugenio Pérez, 2021/10/01