Testing has shown that virtnodedevd will leave the group FD open for long periods, even after all the cdevs have been destroyed. This blocks destruction of the VFIO device and is undesirable. That approach was selected to accomodate SPAPR which has an broken lifecyle model for the iommu_group. However, we can accomodate SPAPR by realizing that it doesn't use the iommu core at all, so rules about iommu_group lifetime do not apply to it. Giving the KVM code its own kref on the iommu_group allows the VFIO core code to release its iommu_group reference earlier and we can remove the sleep that only existed for SPAPR. v2: - Use vfio_file_is_group() istead of open coding - Do not delete vfio_group_detach_container() from vfio_group_fops_release() v1: https://lore.kernel.org/r/0-v1-90bf0950c42c+39-vfio_group_disassociate_jgg@xxxxxxxxxx Jason Gunthorpe (3): vfio: Add vfio_file_is_group() vfio: Hold a reference to the iommu_group in kvm for SPAPR vfio: Make the group FD disassociate from the iommu_group drivers/vfio/pci/vfio_pci_core.c | 2 +- drivers/vfio/vfio.h | 1 - drivers/vfio/vfio_main.c | 85 +++++++++++++++++++++++--------- include/linux/vfio.h | 1 + virt/kvm/vfio.c | 45 ++++++++++++----- 5 files changed, 95 insertions(+), 39 deletions(-) base-commit: c82e81ab2569559ad873b3061217c2f37560682b -- 2.38.0