|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Is the Guest OS in non-paging protected mode when VM first e
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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Is the Guest OS in non-paging protected mode when VM first execute vmlaunch?,
henanwxr <=
|
|
|
|
|