Commit c8a6153b authored by Xie Yongji's avatar Xie Yongji Committed by Michael S. Tsirkin
Browse files

vduse: Introduce VDUSE - vDPA Device in Userspace



This VDUSE driver enables implementing software-emulated vDPA
devices in userspace. The vDPA device is created by
ioctl(VDUSE_CREATE_DEV) on /dev/vduse/control. Then a char device
interface (/dev/vduse/$NAME) is exported to userspace for device
emulation.

In order to make the device emulation more secure, the device's
control path is handled in kernel. A message mechnism is introduced
to forward some dataplane related control messages to userspace.

And in the data path, the DMA buffer will be mapped into userspace
address space through different ways depending on the vDPA bus to
which the vDPA device is attached. In virtio-vdpa case, the MMU-based
software IOTLB is used to achieve that. And in vhost-vdpa case, the
DMA buffer is reside in a userspace memory region which can be shared
to the VDUSE userspace processs via transferring the shmfd.

For more details on VDUSE design and usage, please see the follow-on
Documentation commit.

NB(mst): when merging this with
b542e383 ("eventfd: Make signal recursion protection a task bit")
replace eventfd_signal_count with eventfd_signal_allowed,
and drop the previous
("eventfd: Export eventfd_wake_count to modules").

Signed-off-by: default avatarXie Yongji <xieyongji@bytedance.com>
Acked-by: default avatarJason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20210831103634.33-13-xieyongji@bytedance.com


Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 8c773d53
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -300,6 +300,7 @@ Code Seq# Include File Comments
'z'   10-4F  drivers/s390/crypto/zcrypt_api.h                        conflict!
'|'   00-7F  linux/media.h
0x80  00-1F  linux/fb.h
0x81  00-1F  linux/vduse.h
0x89  00-06  arch/x86/include/asm/sockios.h
0x89  0B-DF  linux/sockios.h
0x89  E0-EF  linux/sockios.h                                         SIOCPROTOPRIVATE range
+10 −0
Original line number Diff line number Diff line
@@ -33,6 +33,16 @@ config VDPA_SIM_BLOCK
	  vDPA block device simulator which terminates IO request in a
	  memory buffer.

config VDPA_USER
	tristate "VDUSE (vDPA Device in Userspace) support"
	depends on EVENTFD && MMU && HAS_DMA
	select DMA_OPS
	select VHOST_IOTLB
	select IOMMU_IOVA
	help
	  With VDUSE it is possible to emulate a vDPA Device
	  in a userspace program.

config IFCVF
	tristate "Intel IFC VF vDPA driver"
	depends on PCI_MSI
+1 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_VDPA) += vdpa.o
obj-$(CONFIG_VDPA_SIM) += vdpa_sim/
obj-$(CONFIG_VDPA_USER) += vdpa_user/
obj-$(CONFIG_IFCVF)    += ifcvf/
obj-$(CONFIG_MLX5_VDPA) += mlx5/
obj-$(CONFIG_VP_VDPA)    += virtio_pci/
+5 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

vduse-y := vduse_dev.o iova_domain.o

obj-$(CONFIG_VDPA_USER) += vduse.o
+1646 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading