All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Cindy Lu <lulu@redhat.com>
Cc: jasowang@redhat.com, qemu-devel@nongnu.org
Subject: Re: [PATCH v1 4/4] vhost-vdpa:add callback function for configure interrupt
Date: Wed, 13 Jan 2021 11:17:19 -0500	[thread overview]
Message-ID: <20210113111659-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20210113154540.24981-5-lulu@redhat.com>

On Wed, Jan 13, 2021 at 11:45:40PM +0800, Cindy Lu wrote:
> Add call back function for configure interrupt.
> Set the notifier's fd to the kernel driver when vdpa start.
> also set -1 when vdpa stop. then the kernel will release
> the related聽resource聽

Something weird happened to the commit log here.

> 
> Signed-off-by: Cindy Lu <lulu@redhat.com>
> ---
>  hw/virtio/trace-events            |  2 ++
>  hw/virtio/vhost-vdpa.c            | 29 ++++++++++++++++++++++++++++-
>  include/hw/virtio/vhost-backend.h |  4 ++++
>  3 files changed, 34 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events
> index 2060a144a2..6710835b46 100644
> --- a/hw/virtio/trace-events
> +++ b/hw/virtio/trace-events
> @@ -52,6 +52,8 @@ vhost_vdpa_set_vring_call(void *dev, unsigned int index, int fd) "dev: %p index:
>  vhost_vdpa_get_features(void *dev, uint64_t features) "dev: %p features: 0x%"PRIx64
>  vhost_vdpa_set_owner(void *dev) "dev: %p"
>  vhost_vdpa_vq_get_addr(void *dev, void *vq, uint64_t desc_user_addr, uint64_t avail_user_addr, uint64_t used_user_addr) "dev: %p vq: %p desc_user_addr: 0x%"PRIx64" avail_user_addr: 0x%"PRIx64" used_user_addr: 0x%"PRIx64
> +vhost_vdpa_set_config_call(void *dev, int *fd)"dev: %p fd: %p"
> +
>  
>  # virtio.c
>  virtqueue_alloc_element(void *elem, size_t sz, unsigned in_num, unsigned out_num) "elem %p size %zd in_num %u out_num %u"
> diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
> index 01d2101d09..1647bff8b0 100644
> --- a/hw/virtio/vhost-vdpa.c
> +++ b/hw/virtio/vhost-vdpa.c
> @@ -467,20 +467,39 @@ static int vhost_vdpa_get_config(struct vhost_dev *dev, uint8_t *config,
>      }
>      return ret;
>   }
> +static void vhost_vdpa_config_notify_start(struct vhost_dev *dev,
> +                                struct VirtIODevice *vdev, bool start)
> +{
> +    int fd, r;
> +    if (start) {
> +        fd = event_notifier_get_fd(&vdev->config_notifier);
> +     } else {
> +        fd = -1;
> +     }
> +    r = dev->vhost_ops->vhost_set_config_call(dev, &fd);
> +    if (r) {
> +        error_report("vhost_vdpa_config_notify_start error!");
> +    }
> +    return;
>  
> +}
>  static int vhost_vdpa_dev_start(struct vhost_dev *dev, bool started)
>  {
>      struct vhost_vdpa *v = dev->opaque;
>      trace_vhost_vdpa_dev_start(dev, started);
> +    VirtIODevice *vdev = dev->vdev;
> +
>      if (started) {
>          uint8_t status = 0;
>          memory_listener_register(&v->listener, &address_space_memory);
>          vhost_vdpa_set_vring_ready(dev);
>          vhost_vdpa_add_status(dev, VIRTIO_CONFIG_S_DRIVER_OK);
>          vhost_vdpa_call(dev, VHOST_VDPA_GET_STATUS, &status);
> -
> +        /*set the configure interrupt call back*/
> +        vhost_vdpa_config_notify_start(dev, vdev, true);
>          return !(status & VIRTIO_CONFIG_S_DRIVER_OK);
>      } else {
> +        vhost_vdpa_config_notify_start(dev, vdev, false);
>          vhost_vdpa_reset_device(dev);
>          vhost_vdpa_add_status(dev, VIRTIO_CONFIG_S_ACKNOWLEDGE |
>                                     VIRTIO_CONFIG_S_DRIVER);
> @@ -546,6 +565,13 @@ static int vhost_vdpa_set_vring_call(struct vhost_dev *dev,
>      return vhost_vdpa_call(dev, VHOST_SET_VRING_CALL, file);
>  }
>  
> +static int vhost_vdpa_set_config_call(struct vhost_dev *dev,
> +                                       int *fd)
> +{
> +    trace_vhost_vdpa_set_config_call(dev, fd);
> +    return vhost_vdpa_call(dev, VHOST_VDPA_SET_CONFIG_CALL, fd);
> +}
> +
>  static int vhost_vdpa_get_features(struct vhost_dev *dev,
>                                       uint64_t *features)
>  {
> @@ -611,4 +637,5 @@ const VhostOps vdpa_ops = {
>          .vhost_get_device_id = vhost_vdpa_get_device_id,
>          .vhost_vq_get_addr = vhost_vdpa_vq_get_addr,
>          .vhost_force_iommu = vhost_vdpa_force_iommu,
> +        .vhost_set_config_call = vhost_vdpa_set_config_call,
>  };
> diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-backend.h
> index 8a6f8e2a7a..1a2fee8994 100644
> --- a/include/hw/virtio/vhost-backend.h
> +++ b/include/hw/virtio/vhost-backend.h
> @@ -125,6 +125,9 @@ typedef int (*vhost_get_device_id_op)(struct vhost_dev *dev, uint32_t *dev_id);
>  
>  typedef bool (*vhost_force_iommu_op)(struct vhost_dev *dev);
>  
> +typedef int (*vhost_set_config_call_op)(struct vhost_dev *dev,
> +                                       int *fd);
> +
>  typedef struct VhostOps {
>      VhostBackendType backend_type;
>      vhost_backend_init vhost_backend_init;
> @@ -170,6 +173,7 @@ typedef struct VhostOps {
>      vhost_vq_get_addr_op  vhost_vq_get_addr;
>      vhost_get_device_id_op vhost_get_device_id;
>      vhost_force_iommu_op vhost_force_iommu;
> +    vhost_set_config_call_op vhost_set_config_call;
>  } VhostOps;
>  
>  extern const VhostOps user_ops;
> -- 
> 2.21.3



  reply	other threads:[~2021-01-13 16:21 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-13 15:45 [PATCH v1 0/4] vhost-vdpa: add support for configure interrupt Cindy Lu
2021-01-13 15:45 ` [PATCH v1 1/4] virtio:add support in " Cindy Lu
2021-01-14  4:33   ` Jason Wang
2021-01-14  5:57     ` Cindy Lu
2021-01-13 15:45 ` [PATCH v1 2/4] virtio-pci:add support for " Cindy Lu
2021-01-14  4:43   ` Jason Wang
2021-01-14  6:08     ` Cindy Lu
2021-01-13 15:45 ` [PATCH v1 3/4] vhost_net:enable configure interrupt when vhost_net start Cindy Lu
2021-01-13 15:45 ` [PATCH v1 4/4] vhost-vdpa:add callback function for configure interrupt Cindy Lu
2021-01-13 16:17   ` Michael S. Tsirkin [this message]
2021-01-14  6:15     ` Cindy Lu
2021-01-14  4:46   ` Jason Wang
2021-01-14  6:11     ` Cindy Lu
2021-01-14  4:35 ` [PATCH v1 0/4] vhost-vdpa: add support " Jason Wang
2021-01-14  6:14   ` Cindy Lu

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=20210113111659-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=lulu@redhat.com \
    --cc=qemu-devel@nongnu.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
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.