x86 hvm: Drop pagetable reference when resetting a VCPU to real mode.
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 26 May 2008 07:45:59 +0000 (08:45 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 26 May 2008 07:45:59 +0000 (08:45 +0100)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/hvm/hvm.c

index 80f494f584ef7e4938b5acaf01ed9ee29895d03d..c755a4c462438a5915a148468c33478ab22d1bbf 100644 (file)
@@ -2073,6 +2073,13 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
     if ( v->is_initialised )
         goto out;
 
+    if ( !paging_mode_hap(d) )
+    {
+        if ( v->arch.hvm_vcpu.guest_cr[0] & X86_CR0_PG )
+            put_page(pagetable_get_page(v->arch.guest_table));
+        v->arch.guest_table = pagetable_null();
+    }
+
     ctxt = &v->arch.guest_context;
     memset(ctxt, 0, sizeof(*ctxt));
     ctxt->flags = VGCF_online;