KVM: Introduce kvm_vcpu_destroy()
authorSean Christopherson <sean.j.christopherson@intel.com>
Wed, 18 Dec 2019 21:55:14 +0000 (13:55 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 24 Jan 2020 08:19:11 +0000 (09:19 +0100)
Add kvm_vcpu_destroy() and wire up all architectures to call the common
function instead of their arch specific implementation.  The common
destruction function will be used by future patches to move allocation
and initialization of vCPUs to common KVM code, i.e. to free resources
that are allocated by arch agnostic code.

No functional change intended.

Acked-by: Christoffer Dall <christoffer.dall@arm.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/mips/kvm/mips.c
arch/powerpc/kvm/powerpc.c
arch/s390/kvm/kvm-s390.c
arch/x86/kvm/x86.c
include/linux/kvm_host.h
virt/kvm/arm/arm.c
virt/kvm/kvm_main.c

index 73360e021259a528b1f97635f485ba639c070648..8546bc6e09e7fbe854640200002f89401e6b537d 100644 (file)
@@ -156,7 +156,7 @@ void kvm_mips_free_vcpus(struct kvm *kvm)
        struct kvm_vcpu *vcpu;
 
        kvm_for_each_vcpu(i, vcpu, kvm) {
-               kvm_arch_vcpu_destroy(vcpu);
+               kvm_vcpu_destroy(vcpu);
        }
 
        mutex_lock(&kvm->lock);
index 998ef60ac4630a67d15c9a04846a254b31f53e49..e3e2b88d3d8bc408e2c045752adf4449a338bcb8 100644 (file)
@@ -475,7 +475,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
 #endif
 
        kvm_for_each_vcpu(i, vcpu, kvm)
-               kvm_arch_vcpu_destroy(vcpu);
+               kvm_vcpu_destroy(vcpu);
 
        mutex_lock(&kvm->lock);
        for (i = 0; i < atomic_read(&kvm->online_vcpus); i++)
index 1f8ba074cbd60d024513f2d8fad553fd96f1628d..8543d338a06a372b1a63eecd1f631bda42c9c8b1 100644 (file)
@@ -2541,7 +2541,7 @@ static void kvm_free_vcpus(struct kvm *kvm)
        struct kvm_vcpu *vcpu;
 
        kvm_for_each_vcpu(i, vcpu, kvm)
-               kvm_arch_vcpu_destroy(vcpu);
+               kvm_vcpu_destroy(vcpu);
 
        mutex_lock(&kvm->lock);
        for (i = 0; i < atomic_read(&kvm->online_vcpus); i++)
index 335762a17180f64ecb8cc87816d9ebc925dfda16..42b9149f6b405afdf5bf578f8c713412e8278673 100644 (file)
@@ -9680,7 +9680,7 @@ static void kvm_free_vcpus(struct kvm *kvm)
                kvm_unload_vcpu_mmu(vcpu);
        }
        kvm_for_each_vcpu(i, vcpu, kvm)
-               kvm_arch_vcpu_destroy(vcpu);
+               kvm_vcpu_destroy(vcpu);
 
        mutex_lock(&kvm->lock);
        for (i = 0; i < atomic_read(&kvm->online_vcpus); i++)
index 59ac534233610a823c4bffbbfad8af528dbc1d3e..432827ab7623b53481165bd9424131dd23d6c6c7 100644 (file)
@@ -581,6 +581,7 @@ static inline int kvm_vcpu_get_idx(struct kvm_vcpu *vcpu)
 
 int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id);
 void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
+void kvm_vcpu_destroy(struct kvm_vcpu *vcpu);
 
 void vcpu_load(struct kvm_vcpu *vcpu);
 void vcpu_put(struct kvm_vcpu *vcpu);
index af3ce2bb370d74a31b1ad0e6e9ebf88b1cbb1120..0d8fb6973414bf09d01dacb05f474f55689d256e 100644 (file)
@@ -194,7 +194,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
 
        for (i = 0; i < KVM_MAX_VCPUS; ++i) {
                if (kvm->vcpus[i]) {
-                       kvm_arch_vcpu_destroy(kvm->vcpus[i]);
+                       kvm_vcpu_destroy(kvm->vcpus[i]);
                        kvm->vcpus[i] = NULL;
                }
        }
index 7b52207f829c988c27be78931192d6e5f06d5706..62ba25e44189492798d05703966b4cc4121eb4bc 100644 (file)
@@ -375,6 +375,12 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu)
 }
 EXPORT_SYMBOL_GPL(kvm_vcpu_uninit);
 
+void kvm_vcpu_destroy(struct kvm_vcpu *vcpu)
+{
+       kvm_arch_vcpu_destroy(vcpu);
+}
+EXPORT_SYMBOL_GPL(kvm_vcpu_destroy);
+
 #if defined(CONFIG_MMU_NOTIFIER) && defined(KVM_ARCH_WANT_MMU_NOTIFIER)
 static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn)
 {