On Thu, 19 May 2022 14:33:11 -0400 Matthew Rosato <mjrosato@xxxxxxxxxxxxx> wrote: > Rather than relying on a notifier for associating the KVM with > the group, let's assume that the association has already been > made prior to device_open. The first time a device is opened > associate the group KVM with the device. > > This fixes a user-triggerable oops in GVT. It seems this has traded an oops for a deadlock, which still exists today in both GVT-g and vfio-ap. These are the only vfio drivers that care about kvm, so they make use of kvm_{get,put}_kvm(), where the latter is called by their .close_device() callbacks. .close_device() is called holding the group->group_lock, or at the time of this commit group->group_rwsem. The remaining call chain looks like this: kvm_put_kvm -> kvm_destroy_vm -> kvm_destroy_devices -> kvm_vfio_destroy -> kvm_vfio_file_set_kvm -> vfio_file_set_kvm -> group->group_lock/group_rwsem Any suggestions for a fix? Thanks, Alex