# HG changeset patch # User kaf24@firebug.cl.cam.ac.uk # Date 1127221630 0 # Node ID 9776d03bf1083a92170e500a424eba865b5fcea4 # Parent f8e7af29daa1d6fd6cb4a5f7a093b229f5607c94 Put_page on vmx_set_cr0 for multiple protected/real mode switch. Signed-off-by: Yunhong Jiang Signed-off-by: Chengyuan Li diff -r f8e7af29daa1 -r 9776d03bf108 xen/arch/x86/vmx.c --- a/xen/arch/x86/vmx.c Tue Sep 20 09:43:46 2005 +0000 +++ b/xen/arch/x86/vmx.c Tue Sep 20 13:07:10 2005 +0000 @@ -1100,6 +1100,11 @@ static int vmx_set_cr0(unsigned long val d->arch.arch_vmx.cpu_cr3, mfn); } + if(!((value & X86_CR0_PE) && (value & X86_CR0_PG)) && paging_enabled) + if(d->arch.arch_vmx.cpu_cr3) + put_page(pfn_to_page(get_mfn_from_pfn( + d->arch.arch_vmx.cpu_cr3 >> PAGE_SHIFT))); + /* * VMX does not implement real-mode virtualization. We emulate * real-mode by performing a world switch to VMXAssist whenever