From: Paolo Bonzini Date: Tue, 25 Feb 2025 18:01:41 +0000 (-0500) Subject: KVM: x86: move vm_destroy callback at end of kvm_arch_destroy_vm X-Git-Tag: v6.15-rc1~195^2^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=46c49372e10ea161beaa78936a64d2b49531dffb;p=thirdparty%2Fkernel%2Flinux.git KVM: x86: move vm_destroy callback at end of kvm_arch_destroy_vm TDX needs to free the TDR control structures last, after all paging structures have been torn down; move the vm_destroy callback at a suitable place. The new place is also okay for AMD; the main difference is that the MMU has been torn down and, if anything, that is better done before the SNP ASID is released. Extracted from a patch by Yan Zhao. Signed-off-by: Paolo Bonzini --- diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 4b64ab350bcd4..bd2b71d4e64f0 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -12880,7 +12880,6 @@ void kvm_arch_destroy_vm(struct kvm *kvm) } kvm_unload_vcpu_mmus(kvm); kvm_destroy_vcpus(kvm); - kvm_x86_call(vm_destroy)(kvm); kvm_free_msr_filter(srcu_dereference_check(kvm->arch.msr_filter, &kvm->srcu, 1)); kvm_pic_destroy(kvm); kvm_ioapic_destroy(kvm); @@ -12890,6 +12889,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm) kvm_page_track_cleanup(kvm); kvm_xen_destroy_vm(kvm); kvm_hv_destroy_vm(kvm); + kvm_x86_call(vm_destroy)(kvm); } static void memslot_rmap_free(struct kvm_memory_slot *slot)