# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID de41f5e24cf1b39a57ad343c84e2221ad62b9afa
# Parent e436e4e93076c8f4c434b9531b70179b90347b48
For vmx domain, because shadow_mode_reference is set later in
vmx_final_setup_guest, so in arch_set_info_guest, the phys_basetab
is not do get_page, while when destroying, put_page is called,
so there is one page, the count=-1, and when a new domain allocate
this page, it will take it as cpumask 0xffffffff, this cause flash_tlb_mask
goes into dead loop.
This patch also eliminate the warning when creating vmx guest:
(XEN) Audit 1: type count went below zero mfn=1e03d t=f0000000 ot=3654b
Signed-off-by: Xiaofeng Ling <xiaofeng.ling@xxxxxxxxx>
Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>
diff -r e436e4e93076 -r de41f5e24cf1 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c Thu Nov 10 11:06:50 2005
+++ b/xen/arch/x86/domain.c Thu Nov 10 11:09:17 2005
@@ -407,6 +407,7 @@
/* VMX uses the initially provided page tables as the P2M map. */
if ( !pagetable_get_paddr(d->arch.phys_table) )
d->arch.phys_table = v->arch.guest_table;
+ v->arch.guest_table = mk_pagetable(0);
/* Initialize monitor page table */
v->arch.monitor_table = mk_pagetable(0);
diff -r e436e4e93076 -r de41f5e24cf1 xen/arch/x86/vmx_vmcs.c
--- a/xen/arch/x86/vmx_vmcs.c Thu Nov 10 11:06:50 2005
+++ b/xen/arch/x86/vmx_vmcs.c Thu Nov 10 11:09:17 2005
@@ -332,7 +332,7 @@
error |= __vmwrite(GUEST_TR_BASE, 0);
error |= __vmwrite(GUEST_TR_LIMIT, 0xff);
- __vmwrite(GUEST_CR3, pagetable_get_paddr(v->arch.guest_table));
+ __vmwrite(GUEST_CR3, pagetable_get_paddr(v->domain->arch.phys_table));
__vmwrite(HOST_CR3, pagetable_get_paddr(v->arch.monitor_table));
__vmwrite(HOST_RSP, (unsigned long)get_stack_bottom());
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|