<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 2, 2020 at 3:15 PM Vivek Goyal <<a href="mailto:vgoyal@redhat.com">vgoyal@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Gurchetan,<br>
<br>
Now Miklos has queued, these tree virtio patches for shared memory<br>
region in his tree as part of virtiofs dax patch series.<br>
<br>
I am hoping this will get merged in 5.10 through his tree.<br>
<br>
<a href="https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git/log/?h=dax" rel="noreferrer" target="_blank">https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse.git/log/?h=dax</a></blockquote><div><br></div><div>Terrific ... !  Maybe we can queue the version Miklos has in drm-misc-next to avoid merge conflicts ?!?</div><div><br></div><div>There's a few checkpatch --strict fixes in the blob version, but I doubt anyone cares.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
Thanks<br>
Vivek<br>
<br>
On Wed, Sep 02, 2020 at 02:08:28PM -0700, Gurchetan Singh wrote:<br>
> From: Sebastien Boeuf <<a href="mailto:sebastien.boeuf@intel.com" target="_blank">sebastien.boeuf@intel.com</a>><br>
> <br>
> Virtio defines 'shared memory regions' that provide a continuously<br>
> shared region between the host and guest.<br>
> <br>
> Provide a method to find a particular region on a device.<br>
> <br>
> Signed-off-by: Sebastien Boeuf <<a href="mailto:sebastien.boeuf@intel.com" target="_blank">sebastien.boeuf@intel.com</a>><br>
> Signed-off-by: Dr. David Alan Gilbert <<a href="mailto:dgilbert@redhat.com" target="_blank">dgilbert@redhat.com</a>><br>
> Acked-by: Michael S. Tsirkin <<a href="mailto:mst@redhat.com" target="_blank">mst@redhat.com</a>><br>
> Cc: <a href="mailto:kvm@vger.kernel.org" target="_blank">kvm@vger.kernel.org</a><br>
> Cc: <a href="mailto:virtualization@lists.linux-foundation.org" target="_blank">virtualization@lists.linux-foundation.org</a><br>
> Cc: "Michael S. Tsirkin" <<a href="mailto:mst@redhat.com" target="_blank">mst@redhat.com</a>><br>
> ---<br>
>  include/linux/virtio_config.h | 17 +++++++++++++++++<br>
>  1 file changed, 17 insertions(+)<br>
> <br>
> diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h<br>
> index 8fe857e27ef32..4b8e38c5c4d8c 100644<br>
> --- a/include/linux/virtio_config.h<br>
> +++ b/include/linux/virtio_config.h<br>
> @@ -11,6 +11,11 @@<br>
>  <br>
>  struct irq_affinity;<br>
>  <br>
> +struct virtio_shm_region {<br>
> +     u64 addr;<br>
> +     u64 len;<br>
> +};<br>
> +<br>
>  /**<br>
>   * virtio_config_ops - operations for configuring a virtio device<br>
>   * Note: Do not assume that a transport implements all of the operations<br>
> @@ -66,6 +71,7 @@ struct irq_affinity;<br>
>   *      the caller can then copy.<br>
>   * @set_vq_affinity: set the affinity for a virtqueue (optional).<br>
>   * @get_vq_affinity: get the affinity for a virtqueue (optional).<br>
> + * @get_shm_region: get a shared memory region based on the index.<br>
>   */<br>
>  typedef void vq_callback_t(struct virtqueue *);<br>
>  struct virtio_config_ops {<br>
> @@ -89,6 +95,8 @@ struct virtio_config_ops {<br>
>                              const struct cpumask *cpu_mask);<br>
>       const struct cpumask *(*get_vq_affinity)(struct virtio_device *vdev,<br>
>                       int index);<br>
> +     bool (*get_shm_region)(struct virtio_device *vdev,<br>
> +                            struct virtio_shm_region *region, u8 id);<br>
>  };<br>
>  <br>
>  /* If driver didn't advertise the feature, it will never appear. */<br>
> @@ -251,6 +259,15 @@ int virtqueue_set_affinity(struct virtqueue *vq, const struct cpumask *cpu_mask)<br>
>       return 0;<br>
>  }<br>
>  <br>
> +static inline<br>
> +bool virtio_get_shm_region(struct virtio_device *vdev,<br>
> +                        struct virtio_shm_region *region, u8 id)<br>
> +{<br>
> +     if (!vdev->config->get_shm_region)<br>
> +             return false;<br>
> +     return vdev->config->get_shm_region(vdev, region, id);<br>
> +}<br>
> +<br>
>  static inline bool virtio_is_little_endian(struct virtio_device *vdev)<br>
>  {<br>
>       return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) ||<br>
> -- <br>
> 2.26.2<br>
> <br>
<br>
</blockquote></div></div>