On 14/10/2016 12:37, Jike Song wrote: > Hi Paolo & Alex, > > IIUC, passing file descriptors means touching QEMU and the UAPI between > QEMU and VFIO. Would you guys have a look at below draft patch? If it's > on the correct direction, I'll send the split ones. Thanks! > > -- > Thanks, > Jike > > > diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c > index bec694c..f715d37 100644 > --- a/hw/vfio/pci-quirks.c > +++ b/hw/vfio/pci-quirks.c > @@ -10,12 +10,14 @@ > * the COPYING file in the top-level directory. > */ > > +#include <sys/ioctl.h> > #include "qemu/osdep.h" > #include "qemu/error-report.h" > #include "qemu/range.h" > #include "qapi/error.h" > #include "hw/nvram/fw_cfg.h" > #include "pci.h" > +#include "sysemu/kvm.h" > #include "trace.h" > > /* Use uin32_t for vendor & device so PCI_ANY_ID expands and cannot match hw > */ > @@ -1844,3 +1846,15 @@ void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev) > break; > } > } > + > +void vfio_quirk_kvmgt(VFIOPCIDevice *vdev) > +{ > + int vmfd; > + > + if (!kvm_enabled() || !vdev->kvmgt) > + return; > + > + /* Tell the device what KVM it attached */ > + vmfd = kvm_get_vmfd(kvm_state); > + ioctl(vdev->vbasedev.fd, VFIO_SET_KVMFD, vmfd); > +}
vfio_kvm_device_add_group is already telling the group id file descriptor to KVM. You can use that existing hook (whose kernel side is virt/kvm/vfio.c). Paolo