? 2021/10/1 ??3:05, Eugenio P?rez ??:> We need to know it to switch to Shadow VirtQueue.
>
> Signed-off-by: Eugenio P?rez <eperezma at 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];
Any reason we don't do this for kick_fd or why
virtio_queue_get_guest_notifier() can't work here? Need a comment or
commit log.
I think we need to have a consistent way to handle both kick and call fd.
Thanks
> 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);
> }
>