mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
Lacking the support of device specific mapping supported in virtio, VDUSE must trick the DMA API in order to make virtio-vdpa transport work. This is done by advertising vDPA device as dma device with a VDUSE specific dma_ops even if it doesn't do DMA at all. This will be fixed by this patch. Thanks to the new mapping operations support by virtio and vDPA. VDUSE can simply switch to advertise its specific mappings operations to virtio via virtio-vdpa then DMA API is not needed for VDUSE any more and iova domain could be used as the mapping token instead. Signed-off-by: Jason Wang <jasowang@redhat.com> Message-Id: <20250924070045.10361-3-jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
139 lines
4.3 KiB
Plaintext
139 lines
4.3 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
|
|
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
|
|
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 MLX5_VDPA_STEERING_DEBUG
|
|
bool "expose steering counters on debugfs"
|
|
select MLX5_VDPA
|
|
help
|
|
Expose RX steering counters in debugfs to aid in debugging. For each VLAN
|
|
or non VLAN interface, two hardware counters are added to the RX flow
|
|
table: one for unicast and one for multicast.
|
|
The counters counts the number of packets and bytes and exposes them in
|
|
debugfs. Once can read the counters using, e.g.:
|
|
cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/ucast/packets
|
|
cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/mcast/bytes
|
|
|
|
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.
|
|
|
|
config ALIBABA_ENI_VDPA
|
|
tristate "vDPA driver for Alibaba ENI"
|
|
select VIRTIO_PCI_LIB_LEGACY
|
|
depends on PCI_MSI && X86
|
|
help
|
|
VDPA driver for Alibaba ENI (Elastic Network Interface) which is built upon
|
|
virtio 0.9.5 specification.
|
|
|
|
config SNET_VDPA
|
|
tristate "SolidRun's vDPA driver for SolidNET"
|
|
depends on PCI_MSI && PCI_IOV && (HWMON || HWMON=n)
|
|
|
|
# This driver MAY create a HWMON device.
|
|
# Depending on (HWMON || HWMON=n) ensures that:
|
|
# If HWMON=n the driver can be compiled either as a module or built-in.
|
|
# If HWMON=y the driver can be compiled either as a module or built-in.
|
|
# If HWMON=m the driver is forced to be compiled as a module.
|
|
# By doing so, IS_ENABLED can be used instead of IS_REACHABLE
|
|
|
|
help
|
|
vDPA driver for SolidNET DPU.
|
|
With this driver, the VirtIO dataplane can be
|
|
offloaded to a SolidNET DPU.
|
|
This driver includes a HW monitor device that
|
|
reads health values from the DPU.
|
|
|
|
config PDS_VDPA
|
|
tristate "vDPA driver for AMD/Pensando DSC devices"
|
|
select VIRTIO_PCI_LIB
|
|
depends on PCI_MSI
|
|
depends on PDS_CORE
|
|
help
|
|
vDPA network driver for AMD/Pensando's PDS Core devices.
|
|
With this driver, the VirtIO dataplane can be
|
|
offloaded to an AMD/Pensando DSC device.
|
|
|
|
config OCTEONEP_VDPA
|
|
tristate "vDPA driver for Octeon DPU devices"
|
|
depends on m
|
|
depends on PCI_MSI
|
|
help
|
|
This is a vDPA driver designed for Marvell's Octeon DPU devices.
|
|
This driver enables the offloading of the VirtIO dataplane to an
|
|
Octeon DPU device.
|
|
Please note that this driver must be built as a module and it
|
|
cannot be loaded until the Octeon emulation software is running.
|
|
|
|
endif # VDPA
|