So far KVM and VFIO are mostly transparent to each other. However, there are users who would rely on them both. For example, KVMGT relies on VFIO to mediate device operations, and it also relies on KVM for features such as guest page tracking. To do that, it needs to know which KVM instance a vfio_group is attached to, when it will be detached. There is already a kvm_vfio device serving for similar purpose, this series extends it to allow users register notifiers on a vfio_group, and notify kvm:group attaching and detaching events to that. Changes v8: - pass events to separate iommu backends (currently only type1) - remove _clear_kvm() and use _set_kvm(NULL) instead, move it out of lock Changes v7: - replace vfio->opened with container user like iommu notifier registration - fix a typo Changes v6: - only allow registration on already opened vfio_group - moved WARN_ON from vfio_group_release to vfio_group_fops_release - remove unnecessary check Changes v5: - separate vfio_group and vfio_iommu events from each other - force user to specify which type it is interested in, and which events. Register it IFF all required events are supported Changes v4: - use a notifier-based implementation in vfio_group - combine the notifier along with iommu notifier by Kirti Changes v3: - don't touch kvm_put_kvm, vfio won't need it - fix a race condition Changes v2: - As Paolo suggested, drop the type and get/put ops from vfio, assuming that the data will always be kvm. Jike Song (3): vfio: vfio_register_notifier: classify iommu notifier vfio: support notifier chain in vfio_group kvm: set/clear kvm to/from vfio_group when group add/delete drivers/vfio/vfio.c | 167 ++++++++++++++++++++++++++++++++++------ drivers/vfio/vfio_iommu_type1.c | 8 ++ include/linux/vfio.h | 23 +++++- virt/kvm/vfio.c | 18 +++++ 4 files changed, 188 insertions(+), 28 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html