[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Is the Guest OS in non-paging protected mode when VM first execute vmlaunch?
1ãIs the Guest OS in non-paging protected mode when VM first execute vmlaunch? If it is so, why not set it in paging protected mode, could I do this? 2ãI found guest os was set in paging and protected mode in function of construct_vmcs(). The flow is: //Xen-4.0/arch/x86/hvm/vmx/vmcs.c construct_vmcs() { ââââââ.. //here set CR0.PE v->arch.hvm_vcpu.guest_cr[0] = X86_CR0_PE | X86_CR0_ET; hvm_update_guest_cr(v, 0); âââââââ } // Then it calls function of hvm_update_guest_cr() in /xen/include/asm-x86/hvm.h static inline void hvm_update_guest_cr(struct vcpu *v, unsigned int cr) { hvm_funcs.update_guest_cr(v, cr); } //hvm_funcs.update_guest_cr calls function of vmx_updata_guest_cr() //in /arch/x86/hvm/vmx/vmx.c static struct hvm_function_table __read_mostly vmx_function_table = { .name = "VMX", ââââââââââ .update_host_cr3 = vmx_update_host_cr3, .update_guest_cr = vmx_update_guest_cr, ââââââââ.. } static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr) { vmx_vmcs_enter(v); switch ( cr ) { case 0: { int realmode; unsigned long hw_cr0_mask = X86_CR0_NE; //here set CR0.PG and CR0.PE if ( !vmx_unrestricted_guest(v) ) hw_cr0_mask |= X86_CR0_PG | X86_CR0_PE; ââââââââââ.. ââââââââââ.. v->arch.hvm_vcpu.hw_cr[0] = v->arch.hvm_vcpu.guest_cr[0] | hw_cr0_mask; //here write GUEST_CR0, is it in paging and protected mode ?? __vmwrite(GUEST_CR0, v->arch.hvm_vcpu.hw_cr[0]); __vmwrite(CR0_READ_SHADOW, v->arch.hvm_vcpu.guest_cr[0]); ââââ. } -- View this message in context: http://xen.1045712.n5.nabble.com/Is-the-Guest-OS-in-non-paging-protected-mode-when-VM-first-execute-vmlaunch-tp4415142p4415142.html Sent from the Xen - Dev mailing list archive at Nabble.com. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |