vmx: disable PML in vmx_vcpu_destroy
authorKai Huang <kai.huang@linux.intel.com>
Mon, 4 May 2015 10:17:43 +0000 (12:17 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 4 May 2015 10:17:43 +0000 (12:17 +0200)
It's possible domain still remains in log-dirty mode when it is about to be
destroyed, in which case we should manually disable PML for it.

Signed-off-by: Kai Huang <kai.huang@linux.intel.com>
Acked-by: Tim Deegan <tim@xen.org>
Acked-by: Kevin Tian <kevin.tian@intel.com>
xen/arch/x86/hvm/vmx/vmx.c

index d2252302789ab7afd123ff69eff5a677168a9583..74f563f151946287fc384679f312129f2fab2c34 100644 (file)
@@ -152,6 +152,14 @@ static int vmx_vcpu_initialise(struct vcpu *v)
 
 static void vmx_vcpu_destroy(struct vcpu *v)
 {
+    /*
+     * There are cases that domain still remains in log-dirty mode when it is
+     * about to be destroyed (ex, user types 'xl destroy <dom>'), in which case
+     * we should disable PML manually here. Note that vmx_vcpu_destroy is called
+     * prior to vmx_domain_destroy so we need to disable PML for each vcpu
+     * separately here.
+     */
+    vmx_vcpu_disable_pml(v);
     vmx_destroy_vmcs(v);
     vpmu_destroy(v);
     passive_domain_destroy(v);