From: Jason Wang <jasowang@redhat.com>
To: mst@redhat.com, jasowang@redhat.com, kvm@vger.kernel.org,
virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, kwankhede@nvidia.com,
alex.williamson@redhat.com, cohuck@redhat.com,
tiwei.bie@intel.com, maxime.coquelin@redhat.com,
cunming.liang@intel.com, zhihong.wang@intel.com,
rob.miller@broadcom.com, idos@mellanox.com,
xiao.w.wang@intel.com, haotian.wang@sifive.com
Subject: [RFC PATCH 0/4] mdev based hardware virtio offloading support
Date: Tue, 10 Sep 2019 16:19:31 +0800 [thread overview]
Message-ID: <20190910081935.30516-1-jasowang@redhat.com> (raw)
Hi all:
There are hardware that can do virtio datapath offloading while having
its own control path. This path tries to implement a mdev based
unified API to support using kernel virtio driver to drive those
devices. This is done by introducing a new mdev transport for virtio
(virtio_mdev) and register itself as a new kind of mdev driver. Then
it provides a unified way for kernel virtio driver to talk with mdev
device implementation.
Though the series only contain kernel driver support, the goal is to
make the transport generic enough to support userspace drivers. This
means vhost-mdev[1] could be built on top as well by resuing the
transport.
A sample driver is also implemented which simulate a virito-net
loopback ethernet device on top of vringh + workqueue. This could be
used as a reference implementation for real hardware driver.
Notes:
- Some of the key transport command for vhost-mdev(userspace driver)
is not introduced. This includes:
1) set/get virtqueue state (idx etc), this could be simply done by
introducing new transport command
2) dirty pages tracking, could be simply done by introducing new
transport command
3) set/get device internal state, this requires more thought, of
course we can introduce device specific transport command, but it
would be better to have a unified API
- Current mdev_parent_ops assumes all pointers are userspace pointer,
this block the kernel driver, this series just abuse those as kernel
pointer and this could be addressed by inventing new parent_ops.
- For quick POC, mdev transport was just derived from virtio-MMIO,
I'm pretty sure it has lots of space to be optimized, please share
your thought.
Please review.
[1] https://lkml.org/lkml/2019/8/28/35
Jason Wang (4):
vringh: fix copy direction of vringh_iov_push_kern()
mdev: introduce helper to set per device dma ops
virtio: introudce a mdev based transport
docs: Sample driver to demonstrate how to implement virtio-mdev
framework
drivers/vfio/mdev/Kconfig | 7 +
drivers/vfio/mdev/Makefile | 1 +
drivers/vfio/mdev/mdev_core.c | 7 +
drivers/vfio/mdev/virtio_mdev.c | 500 ++++++++++++++++++++
drivers/vhost/vringh.c | 8 +-
include/linux/mdev.h | 2 +
include/uapi/linux/virtio_mdev.h | 131 ++++++
samples/Kconfig | 7 +
samples/vfio-mdev/Makefile | 1 +
samples/vfio-mdev/mvnet.c | 766 +++++++++++++++++++++++++++++++
10 files changed, 1429 insertions(+), 1 deletion(-)
create mode 100644 drivers/vfio/mdev/virtio_mdev.c
create mode 100644 include/uapi/linux/virtio_mdev.h
create mode 100644 samples/vfio-mdev/mvnet.c
--
2.19.1
next reply other threads:[~2019-09-10 8:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-10 8:19 Jason Wang [this message]
2019-09-10 8:19 ` [RFC PATCH 1/4] vringh: fix copy direction of vringh_iov_push_kern() Jason Wang
2019-09-10 8:19 ` [RFC PATCH 2/4] mdev: introduce helper to set per device dma ops Jason Wang
2019-09-17 19:00 ` Alex Williamson
2019-09-18 5:58 ` Jason Wang
2019-09-10 8:19 ` [RFC PATCH 3/4] virtio: introudce a mdev based transport Jason Wang
2019-09-10 10:01 ` Michael S. Tsirkin
2019-09-10 13:13 ` Jason Wang
2019-09-10 13:52 ` Michael S. Tsirkin
2019-09-11 2:38 ` Jason Wang
2019-09-11 9:36 ` Michael S. Tsirkin
2019-09-11 9:53 ` Jason Wang
2019-09-11 1:47 ` Tiwei Bie
2019-09-11 2:52 ` Jason Wang
2019-09-11 3:08 ` Tiwei Bie
2019-09-10 8:19 ` [RFC PATCH 4/4] docs: Sample driver to demonstrate how to implement virtio-mdev framework Jason Wang
2019-09-10 10:15 ` Michael S. Tsirkin
2019-09-10 13:22 ` 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=20190910081935.30516-1-jasowang@redhat.com \
--to=jasowang@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=cohuck@redhat.com \
--cc=cunming.liang@intel.com \
--cc=haotian.wang@sifive.com \
--cc=idos@mellanox.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.coquelin@redhat.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=rob.miller@broadcom.com \
--cc=tiwei.bie@intel.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=xiao.w.wang@intel.com \
--cc=zhihong.wang@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).