Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[platform/kernel/linux-rpi.git] / drivers / vdpa / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 menuconfig VDPA
3         tristate "vDPA drivers"
4         depends on NET
5         help
6           Enable this module to support vDPA device that uses a
7           datapath which complies with virtio specifications with
8           vendor specific control path.
9
10 if VDPA
11
12 config VDPA_SIM
13         tristate "vDPA device simulator core"
14         depends on RUNTIME_TESTING_MENU && HAS_DMA
15         select DMA_OPS
16         select VHOST_RING
17         select IOMMU_IOVA
18         help
19           Enable this module to support vDPA device simulators. These devices
20           are used for testing, prototyping and development of vDPA.
21
22 config VDPA_SIM_NET
23         tristate "vDPA simulator for networking device"
24         depends on VDPA_SIM
25         select GENERIC_NET_UTILS
26         help
27           vDPA networking device simulator which loops TX traffic back to RX.
28
29 config VDPA_SIM_BLOCK
30         tristate "vDPA simulator for block device"
31         depends on VDPA_SIM
32         help
33           vDPA block device simulator which terminates IO request in a
34           memory buffer.
35
36 config VDPA_USER
37         tristate "VDUSE (vDPA Device in Userspace) support"
38         depends on EVENTFD && MMU && HAS_DMA
39         select DMA_OPS
40         select VHOST_IOTLB
41         select IOMMU_IOVA
42         help
43           With VDUSE it is possible to emulate a vDPA Device
44           in a userspace program.
45
46 config IFCVF
47         tristate "Intel IFC VF vDPA driver"
48         depends on PCI_MSI
49         help
50           This kernel module can drive Intel IFC VF NIC to offload
51           virtio dataplane traffic to hardware.
52           To compile this driver as a module, choose M here: the module will
53           be called ifcvf.
54
55 config MLX5_VDPA
56         bool
57         select VHOST_IOTLB
58         help
59           Support library for Mellanox VDPA drivers. Provides code that is
60           common for all types of VDPA drivers. The following drivers are planned:
61           net, block.
62
63 config MLX5_VDPA_NET
64         tristate "vDPA driver for ConnectX devices"
65         select MLX5_VDPA
66         select VHOST_RING
67         depends on MLX5_CORE
68         help
69           VDPA network driver for ConnectX6 and newer. Provides offloading
70           of virtio net datapath such that descriptors put on the ring will
71           be executed by the hardware. It also supports a variety of stateless
72           offloads depending on the actual device used and firmware version.
73
74 config MLX5_VDPA_STEERING_DEBUG
75         bool "expose steering counters on debugfs"
76         select MLX5_VDPA
77         help
78           Expose RX steering counters in debugfs to aid in debugging. For each VLAN
79           or non VLAN interface, two hardware counters are added to the RX flow
80           table: one for unicast and one for multicast.
81           The counters counts the number of packets and bytes and exposes them in
82           debugfs. Once can read the counters using, e.g.:
83           cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/ucast/packets
84           cat /sys/kernel/debug/mlx5/mlx5_core.sf.1/vdpa-0/rx/untagged/mcast/bytes
85
86 config VP_VDPA
87         tristate "Virtio PCI bridge vDPA driver"
88         select VIRTIO_PCI_LIB
89         depends on PCI_MSI
90         help
91           This kernel module bridges virtio PCI device to vDPA bus.
92
93 config ALIBABA_ENI_VDPA
94         tristate "vDPA driver for Alibaba ENI"
95         select VIRTIO_PCI_LIB_LEGACY
96         depends on PCI_MSI && X86
97         help
98           VDPA driver for Alibaba ENI (Elastic Network Interface) which is built upon
99           virtio 0.9.5 specification.
100
101  config SNET_VDPA
102         tristate "SolidRun's vDPA driver for SolidNET"
103         depends on PCI_MSI && PCI_IOV && (HWMON || HWMON=n)
104
105         # This driver MAY create a HWMON device.
106         # Depending on (HWMON || HWMON=n) ensures that:
107         # If HWMON=n the driver can be compiled either as a module or built-in.
108         # If HWMON=y the driver can be compiled either as a module or built-in.
109         # If HWMON=m the driver is forced to be compiled as a module.
110         # By doing so, IS_ENABLED can be used instead of IS_REACHABLE
111
112         help
113           vDPA driver for SolidNET DPU.
114           With this driver, the VirtIO dataplane can be
115           offloaded to a SolidNET DPU.
116           This driver includes a HW monitor device that
117           reads health values from the DPU.
118
119 config PDS_VDPA
120         tristate "vDPA driver for AMD/Pensando DSC devices"
121         select VIRTIO_PCI_LIB
122         depends on PCI_MSI
123         depends on PDS_CORE
124         help
125           vDPA network driver for AMD/Pensando's PDS Core devices.
126           With this driver, the VirtIO dataplane can be
127           offloaded to an AMD/Pensando DSC device.
128
129 endif # VDPA