A live update keeps the passthrough device open while the VM is re-created. The device holds a reference to the kvm it was opened with, so the first VM is never destroyed until the device closes, and the new VM, on the same pid and fd number, finds its debugfs directory taken.
Patch 1 takes that reference only for the drivers that read device->kvm. Patch 2 removes the debugfs directory when the VM's fd is released. Tested with 30 live updates of a vGPU VM (RTX 6000 Ada SR-IOV VF) under guest DMA load, then 4 live migrations between two such nodes: one KVM instance after every update, no "duplicate directory", no mismatches. v1 -> v2: - Patch 1: the reference is no longer moved to the new kvm, which changed device->kvm under KVMGT; it's taken only for drivers that opt in with needs_kvm_ref. Fixes tag, tested driver named - Patch 2: only the directory is removed at fd release, the stat data stays until kvm_destroy_vm() (use-after-free in v1); the message notes the uevent and vcpu-fd changes - Both: Feature: lines, single spaces v1: http://lore.virtuozzo.com/[email protected] Andrey Drobyshev (2): vfio: take the kvm reference only for drivers that read device->kvm KVM: remove the VM's debugfs directory when its fd is released drivers/gpu/drm/i915/gvt/kvmgt.c | 1 + drivers/s390/crypto/vfio_ap_ops.c | 1 + drivers/vfio/pci/vfio_pci_core.c | 1 + drivers/vfio/vfio_main.c | 6 ++++-- include/linux/vfio.h | 6 ++++++ virt/kvm/kvm_main.c | 18 ++++++++++++++---- 6 files changed, 27 insertions(+), 6 deletions(-) -- 2.47.1 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
