62 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3===================4VFIO virtual device5===================6 7Device types supported:8 9 - KVM_DEV_TYPE_VFIO10 11Only one VFIO instance may be created per VM. The created device12tracks VFIO files (group or device) in use by the VM and features13of those groups/devices important to the correctness and acceleration14of the VM. As groups/devices are enabled and disabled for use by the15VM, KVM should be updated about their presence. When registered with16KVM, a reference to the VFIO file is held by KVM.17 18Groups:19 KVM_DEV_VFIO_FILE20 alias: KVM_DEV_VFIO_GROUP21 22KVM_DEV_VFIO_FILE attributes:23 KVM_DEV_VFIO_FILE_ADD: Add a VFIO file (group/device) to VFIO-KVM device24 tracking25 26 kvm_device_attr.addr points to an int32_t file descriptor for the27 VFIO file.28 29 KVM_DEV_VFIO_FILE_DEL: Remove a VFIO file (group/device) from VFIO-KVM30 device tracking31 32 kvm_device_attr.addr points to an int32_t file descriptor for the33 VFIO file.34 35KVM_DEV_VFIO_GROUP (legacy kvm device group restricted to the handling of VFIO group fd):36 KVM_DEV_VFIO_GROUP_ADD: same as KVM_DEV_VFIO_FILE_ADD for group fd only37 38 KVM_DEV_VFIO_GROUP_DEL: same as KVM_DEV_VFIO_FILE_DEL for group fd only39 40 KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: attaches a guest visible TCE table41 allocated by sPAPR KVM.42 kvm_device_attr.addr points to a struct::43 44 struct kvm_vfio_spapr_tce {45 __s32 groupfd;46 __s32 tablefd;47 };48 49 where:50 51 - @groupfd is a file descriptor for a VFIO group;52 - @tablefd is a file descriptor for a TCE table allocated via53 KVM_CREATE_SPAPR_TCE.54 55The FILE/GROUP_ADD operation above should be invoked prior to accessing the56device file descriptor via VFIO_GROUP_GET_DEVICE_FD in order to support57drivers which require a kvm pointer to be set in their .open_device()58callback. It is the same for device file descriptor via character device59open which gets device access via VFIO_DEVICE_BIND_IOMMUFD. For such file60descriptors, FILE_ADD should be invoked before VFIO_DEVICE_BIND_IOMMUFD61to support the drivers mentioned in prior sentence as well.62