mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
c8a6153b6c
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
b542e383d8
("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: Xie Yongji <xieyongji@bytedance.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20210831103634.33-13-xieyongji@bytedance.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
82 lines
2.2 KiB
Plaintext
82 lines
2.2 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menuconfig VDPA
|
|
tristate "vDPA drivers"
|
|
depends on NET
|
|
help
|
|
Enable this module to support vDPA device that uses a
|
|
datapath which complies with virtio specifications with
|
|
vendor specific control path.
|
|
|
|
if VDPA
|
|
|
|
config VDPA_SIM
|
|
tristate "vDPA device simulator core"
|
|
depends on RUNTIME_TESTING_MENU && HAS_DMA
|
|
select DMA_OPS
|
|
select VHOST_RING
|
|
select IOMMU_IOVA
|
|
help
|
|
Enable this module to support vDPA device simulators. These devices
|
|
are used for testing, prototyping and development of vDPA.
|
|
|
|
config VDPA_SIM_NET
|
|
tristate "vDPA simulator for networking device"
|
|
depends on VDPA_SIM
|
|
select GENERIC_NET_UTILS
|
|
help
|
|
vDPA networking device simulator which loops TX traffic back to RX.
|
|
|
|
config VDPA_SIM_BLOCK
|
|
tristate "vDPA simulator for block device"
|
|
depends on VDPA_SIM
|
|
help
|
|
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
|
|
help
|
|
This kernel module can drive Intel IFC VF NIC to offload
|
|
virtio dataplane traffic to hardware.
|
|
To compile this driver as a module, choose M here: the module will
|
|
be called ifcvf.
|
|
|
|
config MLX5_VDPA
|
|
bool
|
|
select VHOST_IOTLB
|
|
help
|
|
Support library for Mellanox VDPA drivers. Provides code that is
|
|
common for all types of VDPA drivers. The following drivers are planned:
|
|
net, block.
|
|
|
|
config MLX5_VDPA_NET
|
|
tristate "vDPA driver for ConnectX devices"
|
|
select MLX5_VDPA
|
|
select VHOST_RING
|
|
depends on MLX5_CORE
|
|
help
|
|
VDPA network driver for ConnectX6 and newer. Provides offloading
|
|
of virtio net datapath such that descriptors put on the ring will
|
|
be executed by the hardware. It also supports a variety of stateless
|
|
offloads depending on the actual device used and firmware version.
|
|
|
|
config VP_VDPA
|
|
tristate "Virtio PCI bridge vDPA driver"
|
|
select VIRTIO_PCI_LIB
|
|
depends on PCI_MSI
|
|
help
|
|
This kernel module bridges virtio PCI device to vDPA bus.
|
|
|
|
endif # VDPA
|