33b347503f
To add one or more VDPA devices, define a management device which allows adding or removing vdpa device. A management device defines set of callbacks to manage vdpa devices. To begin with, it defines add and remove callbacks through which a user defined vdpa device can be added or removed. A unique management device is identified by its unique handle identified by management device name and optionally the bus name. Hence, introduce routine through which driver can register a management device and its callback operations for adding and remove a vdpa device. Introduce vdpa netlink socket family so that user can query management device and its attributes. Example of show vdpa management device which allows creating vdpa device of networking class (device id = 0x1) of virtio specification 1.1 section 5.1.1. $ vdpa mgmtdev show vdpasim_net: supported_classes: net Example of showing vdpa management device in JSON format. $ vdpa mgmtdev show -jp { "show": { "vdpasim_net": { "supported_classes": [ "net" ] } } } Signed-off-by: Parav Pandit <parav@nvidia.com> Reviewed-by: Eli Cohen <elic@nvidia.com> Reviewed-by: Jason Wang <jasowang@redhat.com> Link: https://lore.kernel.org/r/20210105103203.82508-4-parav@nvidia.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Including a bugfix: vpda: correctly size vdpa_nl_policy We need to ensure last entry of vdpa_nl_policy[] is zero, otherwise out-of-bounds access is hurting us. Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot <syzkaller@googlegroups.com> Cc: Parav Pandit <parav@nvidia.com> Cc: Eli Cohen <elic@nvidia.com> Cc: Jason Wang <jasowang@redhat.com> Cc: Michael S. Tsirkin <mst@redhat.com> Link: https://lore.kernel.org/r/20210210134911.4119555-1-eric.dumazet@gmail.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
56 lines
1.6 KiB
Plaintext
56 lines
1.6 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
|
|
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 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
|
|
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.
|
|
|
|
endif # VDPA
|