> From: Xu, Yilun <yilun.xu@xxxxxxxxx> > Sent: Wednesday, March 22, 2023 10:11 PM > > On 2023-03-08 at 05:28:44 -0800, Yi Liu wrote: > > This defines KVM_DEV_VFIO_FILE* and make alias with > KVM_DEV_VFIO_GROUP*. > > Old userspace uses KVM_DEV_VFIO_GROUP* works as well. > > > > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> > > Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Tested-by: Terrence Xu <terrence.xu@xxxxxxxxx> > > Tested-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > > Tested-by: Matthew Rosato <mjrosato@xxxxxxxxxxxxx> > > --- > > Documentation/virt/kvm/devices/vfio.rst | 52 +++++++++++++++++-------- > > include/uapi/linux/kvm.h | 16 ++++++-- > > virt/kvm/vfio.c | 16 ++++---- > > 3 files changed, 55 insertions(+), 29 deletions(-) > > > > diff --git a/Documentation/virt/kvm/devices/vfio.rst > b/Documentation/virt/kvm/devices/vfio.rst > > index 79b6811bb4f3..5b05b48abaab 100644 > > --- a/Documentation/virt/kvm/devices/vfio.rst > > +++ b/Documentation/virt/kvm/devices/vfio.rst > > @@ -9,24 +9,37 @@ Device types supported: > > - KVM_DEV_TYPE_VFIO > > > > Only one VFIO instance may be created per VM. The created device > > -tracks VFIO groups in use by the VM and features of those groups > > -important to the correctness and acceleration of the VM. As groups > > -are enabled and disabled for use by the VM, KVM should be updated > > -about their presence. When registered with KVM, a reference to the > > -VFIO-group is held by KVM. > > +tracks VFIO files (group or device) in use by the VM and features > > +of those groups/devices important to the correctness and acceleration > > +of the VM. As groups/devices are enabled and disabled for use by the > > +VM, KVM should be updated about their presence. When registered > with > > +KVM, a reference to the VFIO file is held by KVM. > > > > Groups: > > - KVM_DEV_VFIO_GROUP > > - > > -KVM_DEV_VFIO_GROUP attributes: > > - KVM_DEV_VFIO_GROUP_ADD: Add a VFIO group to VFIO-KVM device > tracking > > - kvm_device_attr.addr points to an int32_t file descriptor > > - for the VFIO group. > > - KVM_DEV_VFIO_GROUP_DEL: Remove a VFIO group from VFIO-KVM > device tracking > > - kvm_device_attr.addr points to an int32_t file descriptor > > - for the VFIO group. > > - KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: attaches a guest visible TCE > table > > + KVM_DEV_VFIO_FILE > > + alias: KVM_DEV_VFIO_GROUP > > + > > +KVM_DEV_VFIO_FILE attributes: > > + KVM_DEV_VFIO_FILE_ADD: Add a VFIO file (group/device) to VFIO-KVM > device > > + tracking > > + > > + alias: KVM_DEV_VFIO_GROUP_ADD > > + > > + kvm_device_attr.addr points to an int32_t file descriptor for the > > + VFIO file. > > A blank line here to be consistent with other attibutes. > > > + KVM_DEV_VFIO_FILE_DEL: Remove a VFIO file (group/device) from > VFIO-KVM > > + device tracking > > + > > + alias: KVM_DEV_VFIO_GROUP_DEL > > + > > + kvm_device_attr.addr points to an int32_t file descriptor for the > > + VFIO file. > > + > > + KVM_DEV_VFIO_FILE_SET_SPAPR_TCE: attaches a guest visible TCE > table > > allocated by sPAPR KVM. > > + > > + alias: KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE > > + > > kvm_device_attr.addr points to a struct:: > > > > struct kvm_vfio_spapr_tce { > > @@ -40,9 +53,14 @@ KVM_DEV_VFIO_GROUP attributes: > > - @tablefd is a file descriptor for a TCE table allocated via > > KVM_CREATE_SPAPR_TCE. > > > > + only accepts vfio group file as SPAPR has no iommufd support > > + > > :: > > > > -The GROUP_ADD operation above should be invoked prior to accessing > the > > +The FILE/GROUP_ADD operation above should be invoked prior to > accessing the > > device file descriptor via VFIO_GROUP_GET_DEVICE_FD in order to > support > > drivers which require a kvm pointer to be set in their .open_device() > > -callback. > > +callback. It is the same for device file descriptor via character device > > +open which gets device access via VFIO_DEVICE_BIND_IOMMUFD. For > such file > > +descriptors, FILE_ADD should be invoked before > VFIO_DEVICE_BIND_IOMMUFD > > +to support the drivers mentioned in piror sentence as well. > > s/piror/prior Fixed in v8, thanks. https://lore.kernel.org/kvm/ZCHW%2FQIKQVhBjg%2Fx@Asurada-Nvidia/T/#m7c076d3b9450c9de62b99a6fcefcc31c8ae3f8da