All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yongji Xie <xieyongji@bytedance.com>
To: Jason Wang <jasowang@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	sgarzare@redhat.com, Parav Pandit <parav@nvidia.com>,
	akpm@linux-foundation.org, Randy Dunlap <rdunlap@infradead.org>,
	Matthew Wilcox <willy@infradead.org>,
	viro@zeniv.linux.org.uk, axboe@kernel.dk, bcrl@kvack.org,
	corbet@lwn.net, virtualization@lists.linux-foundation.org,
	netdev@vger.kernel.org, kvm@vger.kernel.org, linux-aio@kvack.org,
	linux-fsdevel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: Re: [RFC v2 08/13] vdpa: Introduce process_iotlb_msg() in vdpa_config_ops
Date: Thu, 24 Dec 2020 15:24:54 +0800	[thread overview]
Message-ID: <CACycT3uPGEGsY-=Yak02B0pb77KCKH=bgvHMCQXvBdaWU=22zg@mail.gmail.com> (raw)
In-Reply-To: <4b13e574-d898-55cc-9ec6-78f28a7f2cd9@redhat.com>

On Thu, Dec 24, 2020 at 10:37 AM Jason Wang <jasowang@redhat.com> wrote:
>
>
> On 2020/12/23 下午7:06, Yongji Xie wrote:
> > On Wed, Dec 23, 2020 at 4:37 PM Jason Wang <jasowang@redhat.com> wrote:
> >>
> >> On 2020/12/22 下午10:52, Xie Yongji wrote:
> >>> This patch introduces a new method in the vdpa_config_ops to
> >>> support processing the raw vhost memory mapping message in the
> >>> vDPA device driver.
> >>>
> >>> Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
> >>> ---
> >>>    drivers/vhost/vdpa.c | 5 ++++-
> >>>    include/linux/vdpa.h | 7 +++++++
> >>>    2 files changed, 11 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
> >>> index 448be7875b6d..ccbb391e38be 100644
> >>> --- a/drivers/vhost/vdpa.c
> >>> +++ b/drivers/vhost/vdpa.c
> >>> @@ -728,6 +728,9 @@ static int vhost_vdpa_process_iotlb_msg(struct vhost_dev *dev,
> >>>        if (r)
> >>>                return r;
> >>>
> >>> +     if (ops->process_iotlb_msg)
> >>> +             return ops->process_iotlb_msg(vdpa, msg);
> >>> +
> >>>        switch (msg->type) {
> >>>        case VHOST_IOTLB_UPDATE:
> >>>                r = vhost_vdpa_process_iotlb_update(v, msg);
> >>> @@ -770,7 +773,7 @@ static int vhost_vdpa_alloc_domain(struct vhost_vdpa *v)
> >>>        int ret;
> >>>
> >>>        /* Device want to do DMA by itself */
> >>> -     if (ops->set_map || ops->dma_map)
> >>> +     if (ops->set_map || ops->dma_map || ops->process_iotlb_msg)
> >>>                return 0;
> >>>
> >>>        bus = dma_dev->bus;
> >>> diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h
> >>> index 656fe264234e..7bccedf22f4b 100644
> >>> --- a/include/linux/vdpa.h
> >>> +++ b/include/linux/vdpa.h
> >>> @@ -5,6 +5,7 @@
> >>>    #include <linux/kernel.h>
> >>>    #include <linux/device.h>
> >>>    #include <linux/interrupt.h>
> >>> +#include <linux/vhost_types.h>
> >>>    #include <linux/vhost_iotlb.h>
> >>>    #include <net/genetlink.h>
> >>>
> >>> @@ -172,6 +173,10 @@ struct vdpa_iova_range {
> >>>     *                          @vdev: vdpa device
> >>>     *                          Returns the iova range supported by
> >>>     *                          the device.
> >>> + * @process_iotlb_msg:               Process vhost memory mapping message (optional)
> >>> + *                           Only used for VDUSE device now
> >>> + *                           @vdev: vdpa device
> >>> + *                           @msg: vhost memory mapping message
> >>>     * @set_map:                        Set device memory mapping (optional)
> >>>     *                          Needed for device that using device
> >>>     *                          specific DMA translation (on-chip IOMMU)
> >>> @@ -240,6 +245,8 @@ struct vdpa_config_ops {
> >>>        struct vdpa_iova_range (*get_iova_range)(struct vdpa_device *vdev);
> >>>
> >>>        /* DMA ops */
> >>> +     int (*process_iotlb_msg)(struct vdpa_device *vdev,
> >>> +                              struct vhost_iotlb_msg *msg);
> >>>        int (*set_map)(struct vdpa_device *vdev, struct vhost_iotlb *iotlb);
> >>>        int (*dma_map)(struct vdpa_device *vdev, u64 iova, u64 size,
> >>>                       u64 pa, u32 perm);
> >>
> >> Is there any reason that it can't be done via dma_map/dma_unmap or set_map?
> >>
> > To get the shmfd, we need the vma rather than physical address. And
> > it's not necessary to pin the user pages in VDUSE case.
>
>
> Right, actually, vhost-vDPA is planning to support shared virtual
> address space.
>
> So let's try to reuse the existing config ops. How about just introduce
> an attribute to vdpa device that tells the bus tells the bus it can do
> shared virtual memory. Then when the device is probed by vhost-vDPA, use
> pages won't be pinned and we will do VA->VA mapping as IOVA->PA mapping
> in the vhost IOTLB and the config ops. vhost IOTLB needs to be extended
> to accept opaque pointer to store the file. And the file was pass via
> the config ops as well.
>

OK, I see. Will try it in v3.

Thanks,
Yongji

  reply	other threads:[~2020-12-24  7:26 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-22 14:52 [RFC v2 00/13] Introduce VDUSE - vDPA Device in Userspace Xie Yongji
2020-12-22 14:52 ` [RFC v2 01/13] mm: export zap_page_range() for driver use Xie Yongji
2020-12-22 15:44   ` Christoph Hellwig
2020-12-22 15:44     ` Christoph Hellwig
2020-12-22 14:52 ` [RFC v2 02/13] eventfd: track eventfd_signal() recursion depth separately in different cases Xie Yongji
2020-12-22 14:52 ` [RFC v2 03/13] eventfd: Increase the recursion depth of eventfd_signal() Xie Yongji
2020-12-22 14:52 ` [RFC v2 04/13] vdpa: Remove the restriction that only supports virtio-net devices Xie Yongji
2020-12-22 14:52 ` [RFC v2 05/13] vdpa: Pass the netlink attributes to ops.dev_add() Xie Yongji
2020-12-22 14:52 ` [RFC v2 06/13] vduse: Introduce VDUSE - vDPA Device in Userspace Xie Yongji
2020-12-23  8:08   ` Jason Wang
2020-12-23  8:08     ` Jason Wang
2020-12-23 14:17     ` Yongji Xie
2020-12-23 14:17       ` Yongji Xie
2020-12-24  3:01       ` Jason Wang
2020-12-24  3:01         ` Jason Wang
2020-12-24  8:34         ` Yongji Xie
2020-12-24  8:34           ` Yongji Xie
2020-12-25  6:59           ` Jason Wang
2020-12-25  6:59             ` Jason Wang
2021-01-08 13:32   ` Bob Liu
2021-01-08 13:32     ` Bob Liu
2021-01-10 10:03     ` Yongji Xie
2021-01-10 10:03       ` Yongji Xie
2020-12-22 14:52 ` [RFC v2 07/13] vduse: support get/set virtqueue state Xie Yongji
2020-12-22 14:52 ` [RFC v2 08/13] vdpa: Introduce process_iotlb_msg() in vdpa_config_ops Xie Yongji
2020-12-23  8:36   ` Jason Wang
2020-12-23  8:36     ` Jason Wang
2020-12-23 11:06     ` Yongji Xie
2020-12-23 11:06       ` Yongji Xie
2020-12-24  2:36       ` Jason Wang
2020-12-24  2:36         ` Jason Wang
2020-12-24  7:24         ` Yongji Xie [this message]
2020-12-24  7:24           ` Yongji Xie
2020-12-22 14:52 ` [RFC v2 09/13] vduse: Add support for processing vhost iotlb message Xie Yongji
2020-12-23  9:05   ` Jason Wang
2020-12-23  9:05     ` Jason Wang
2020-12-23 12:14     ` [External] " Yongji Xie
2020-12-23 12:14       ` Yongji Xie
2020-12-24  2:41       ` Jason Wang
2020-12-24  2:41         ` Jason Wang
2020-12-24  7:37         ` Yongji Xie
2020-12-24  7:37           ` Yongji Xie
2020-12-25  2:37           ` Yongji Xie
2020-12-25  2:37             ` Yongji Xie
2020-12-25  7:02             ` Jason Wang
2020-12-25  7:02               ` Jason Wang
2020-12-25 11:36               ` Yongji Xie
2020-12-25 11:36                 ` Yongji Xie
2020-12-25  6:57           ` Jason Wang
2020-12-25  6:57             ` Jason Wang
2020-12-25 10:31             ` Yongji Xie
2020-12-25 10:31               ` Yongji Xie
2020-12-28  7:43               ` Jason Wang
2020-12-28  7:43                 ` Jason Wang
2020-12-28  8:14                 ` Yongji Xie
2020-12-28  8:14                   ` Yongji Xie
2020-12-28  8:43                   ` Jason Wang
2020-12-28  8:43                     ` Jason Wang
2020-12-28  9:12                     ` Yongji Xie
2020-12-28  9:12                       ` Yongji Xie
2020-12-29  9:11                       ` Jason Wang
2020-12-29  9:11                         ` Jason Wang
2020-12-29  9:11                         ` Jason Wang
2020-12-29 10:26                         ` Yongji Xie
2020-12-29 10:26                           ` Yongji Xie
2020-12-30  6:10                           ` Jason Wang
2020-12-30  6:10                             ` Jason Wang
2020-12-30  7:09                             ` Yongji Xie
2020-12-30  7:09                               ` Yongji Xie
2020-12-30  8:41                               ` Jason Wang
2020-12-30  8:41                                 ` Jason Wang
2020-12-30 10:12                                 ` Yongji Xie
2020-12-30 10:12                                   ` Yongji Xie
2020-12-31  2:49                                   ` Jason Wang
2020-12-31  2:49                                     ` Jason Wang
2020-12-31  5:15                                     ` Yongji Xie
2020-12-31  5:15                                       ` Yongji Xie
2020-12-31  5:49                                       ` Jason Wang
2020-12-31  5:49                                         ` Jason Wang
2020-12-31  6:52                                         ` Yongji Xie
2020-12-31  6:52                                           ` Yongji Xie
2020-12-31  7:11                                           ` Jason Wang
2020-12-31  7:11                                             ` Jason Wang
2020-12-31  8:00                                             ` Yongji Xie
2020-12-31  8:00                                               ` Yongji Xie
2020-12-22 14:52 ` [RFC v2 10/13] vduse: grab the module's references until there is no vduse device Xie Yongji
2020-12-22 14:52 ` [RFC v2 11/13] vduse/iova_domain: Support reclaiming bounce pages Xie Yongji
2020-12-22 14:52 ` [RFC v2 12/13] vduse: Add memory shrinker to reclaim " Xie Yongji
2020-12-22 14:52 ` [RFC v2 13/13] vduse: Introduce a workqueue for irq injection Xie Yongji
2020-12-23  6:38 ` [RFC v2 00/13] Introduce VDUSE - vDPA Device in Userspace Jason Wang
2020-12-23  6:38   ` Jason Wang
2020-12-23  8:14   ` Jason Wang
2020-12-23  8:14     ` Jason Wang
2020-12-23 10:59   ` Yongji Xie
2020-12-23 10:59     ` Yongji Xie
2020-12-24  2:24     ` Jason Wang
2020-12-24  2:24       ` Jason Wang

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='CACycT3uPGEGsY-=Yak02B0pb77KCKH=bgvHMCQXvBdaWU=22zg@mail.gmail.com' \
    --to=xieyongji@bytedance.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=bcrl@kvack.org \
    --cc=corbet@lwn.net \
    --cc=jasowang@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-aio@kvack.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=parav@nvidia.com \
    --cc=rdunlap@infradead.org \
    --cc=sgarzare@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=willy@infradead.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.