mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 00:15:04 +07:00
4c8cf31885
This patch introduces a vDPA-based vhost backend. This backend is built on top of the same interface defined in virtio-vDPA and provides a generic vhost interface for userspace to accelerate the virtio devices in guest. This backend is implemented as a vDPA device driver on top of the same ops used in virtio-vDPA. It will create char device entry named vhost-vdpa-$index for userspace to use. Userspace can use vhost ioctls on top of this char device to setup the backend. Vhost ioctls are extended to make it type agnostic and behave like a virtio device, this help to eliminate type specific API like what vhost_net/scsi/vsock did: - VHOST_VDPA_GET_DEVICE_ID: get the virtio device ID which is defined by virtio specification to differ from different type of devices - VHOST_VDPA_GET_VRING_NUM: get the maximum size of virtqueue supported by the vDPA device - VHSOT_VDPA_SET/GET_STATUS: set and get virtio status of vDPA device - VHOST_VDPA_SET/GET_CONFIG: access virtio config space - VHOST_VDPA_SET_VRING_ENABLE: enable a specific virtqueue For memory mapping, IOTLB API is mandated for vhost-vDPA which means userspace drivers are required to use VHOST_IOTLB_UPDATE/VHOST_IOTLB_INVALIDATE to add or remove mapping for a specific userspace memory region. The vhost-vDPA API is designed to be type agnostic, but it allows net device only in current stage. Due to the lacking of control virtqueue support, some features were filter out by vhost-vdpa. We will enable more features and devices in the near future. Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Link: https://lore.kernel.org/r/20200326140125.19794-8-jasowang@redhat.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
config VHOST_IOTLB
|
|
tristate
|
|
help
|
|
Generic IOTLB implementation for vhost and vringh.
|
|
|
|
config VHOST_RING
|
|
tristate
|
|
select VHOST_IOTLB
|
|
help
|
|
This option is selected by any driver which needs to access
|
|
the host side of a virtio ring.
|
|
|
|
config VHOST
|
|
tristate
|
|
select VHOST_IOTLB
|
|
help
|
|
This option is selected by any driver which needs to access
|
|
the core of vhost.
|
|
|
|
menuconfig VHOST_MENU
|
|
bool "VHOST drivers"
|
|
default y
|
|
|
|
if VHOST_MENU
|
|
|
|
config VHOST_NET
|
|
tristate "Host kernel accelerator for virtio net"
|
|
depends on NET && EVENTFD && (TUN || !TUN) && (TAP || !TAP)
|
|
select VHOST
|
|
---help---
|
|
This kernel module can be loaded in host kernel to accelerate
|
|
guest networking with virtio_net. Not to be confused with virtio_net
|
|
module itself which needs to be loaded in guest kernel.
|
|
|
|
To compile this driver as a module, choose M here: the module will
|
|
be called vhost_net.
|
|
|
|
config VHOST_SCSI
|
|
tristate "VHOST_SCSI TCM fabric driver"
|
|
depends on TARGET_CORE && EVENTFD
|
|
select VHOST
|
|
default n
|
|
---help---
|
|
Say M here to enable the vhost_scsi TCM fabric module
|
|
for use with virtio-scsi guests
|
|
|
|
config VHOST_VSOCK
|
|
tristate "vhost virtio-vsock driver"
|
|
depends on VSOCKETS && EVENTFD
|
|
select VHOST
|
|
select VIRTIO_VSOCKETS_COMMON
|
|
default n
|
|
---help---
|
|
This kernel module can be loaded in the host kernel to provide AF_VSOCK
|
|
sockets for communicating with guests. The guests must have the
|
|
virtio_transport.ko driver loaded to use the virtio-vsock device.
|
|
|
|
To compile this driver as a module, choose M here: the module will be called
|
|
vhost_vsock.
|
|
|
|
config VHOST_VDPA
|
|
tristate "Vhost driver for vDPA-based backend"
|
|
depends on EVENTFD
|
|
select VHOST
|
|
select VDPA
|
|
help
|
|
This kernel module can be loaded in host kernel to accelerate
|
|
guest virtio devices with the vDPA-based backends.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called vhost_vdpa.
|
|
|
|
config VHOST_CROSS_ENDIAN_LEGACY
|
|
bool "Cross-endian support for vhost"
|
|
default n
|
|
---help---
|
|
This option allows vhost to support guests with a different byte
|
|
ordering from host while using legacy virtio.
|
|
|
|
Userspace programs can control the feature using the
|
|
VHOST_SET_VRING_ENDIAN and VHOST_GET_VRING_ENDIAN ioctls.
|
|
|
|
This is only useful on a few platforms (ppc64 and arm64). Since it
|
|
adds some overhead, it is disabled by default.
|
|
|
|
If unsure, say "N".
|
|
|
|
endif
|