> From: Jason Wang > Sent: Thursday, January 16, 2020 8:42 PM > > Hi all: > > Based on the comments and discussion for mdev based hardware virtio > offloading support[1]. A different approach to support vDPA device is > proposed in this series. Can you point to the actual link which triggered the direction change? A quick glimpse in that thread doesn't reveal such information... > > Instead of leveraging VFIO/mdev which may not work for some > vendors. This series tries to introduce a dedicated vDPA bus and > leverage vhost for userspace drivers. This help for the devices that > are not fit for VFIO and may reduce the conflict when try to propose a > bus template for virtual devices in [1]. > > The vDPA support is split into following parts: > > 1) vDPA core (bus, device and driver abstraction) > 2) virtio vDPA transport for kernel virtio driver to control vDPA > device > 3) vhost vDPA bus driver for userspace vhost driver to control vDPA > device > 4) vendor vDPA drivers > 5) management API > > Both 1) and 2) are included in this series. Tiwei will work on part > 3). For 4), Ling Shan will work and post IFCVF driver. For 5) we leave > it to vendor to implement, but it's better to come into an agreement > for management to create/configure/destroy vDPA device. > > The sample driver is kept but renamed to vdap_sim. An on-chip IOMMU > implementation is added to sample device to make it work for both > kernel virtio driver and userspace vhost driver. It implements a sysfs > based management API, but it can switch to any other (e.g devlink) if > necessary. > > Please refer each patch for more information. > > Comments are welcomed. > > [1] https://lkml.org/lkml/2019/11/18/261 > > Jason Wang (5): > vhost: factor out IOTLB > vringh: IOTLB support > vDPA: introduce vDPA bus > virtio: introduce a vDPA based transport > vdpasim: vDPA device simulator > > MAINTAINERS | 2 + > drivers/vhost/Kconfig | 7 + > drivers/vhost/Kconfig.vringh | 1 + > drivers/vhost/Makefile | 2 + > drivers/vhost/net.c | 2 +- > drivers/vhost/vhost.c | 221 +++------ > drivers/vhost/vhost.h | 36 +- > drivers/vhost/vhost_iotlb.c | 171 +++++++ > drivers/vhost/vringh.c | 434 +++++++++++++++++- > drivers/virtio/Kconfig | 15 + > drivers/virtio/Makefile | 2 + > drivers/virtio/vdpa/Kconfig | 26 ++ > drivers/virtio/vdpa/Makefile | 3 + > drivers/virtio/vdpa/vdpa.c | 141 ++++++ > drivers/virtio/vdpa/vdpa_sim.c | 796 > +++++++++++++++++++++++++++++++++ > drivers/virtio/virtio_vdpa.c | 400 +++++++++++++++++ > include/linux/vdpa.h | 191 ++++++++ > include/linux/vhost_iotlb.h | 45 ++ > include/linux/vringh.h | 36 ++ > 19 files changed, 2327 insertions(+), 204 deletions(-) > create mode 100644 drivers/vhost/vhost_iotlb.c > create mode 100644 drivers/virtio/vdpa/Kconfig > create mode 100644 drivers/virtio/vdpa/Makefile > create mode 100644 drivers/virtio/vdpa/vdpa.c > create mode 100644 drivers/virtio/vdpa/vdpa_sim.c > create mode 100644 drivers/virtio/virtio_vdpa.c > create mode 100644 include/linux/vdpa.h > create mode 100644 include/linux/vhost_iotlb.h > > -- > 2.19.1