28 lines
1000 B
Diff
28 lines
1000 B
Diff
# HG changeset patch
|
|
# User Dongxiao Xu <dongxiao.xu@intel.com>
|
|
# Date 1354813009 0
|
|
# Node ID e6eb1e52da7cfcb1a7697b35b4d842f35107d1ed
|
|
# Parent a09150b57ace2fa786dcaefa958f0b197b1b6d4c
|
|
nested vmx: fix DR access VM exit
|
|
|
|
For DR register, we use lazy restore mechanism when access
|
|
it. Therefore when receiving such VM exit, L0 should be responsible to
|
|
switch to the right DR values, then inject to L1 hypervisor.
|
|
|
|
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
|
|
Acked-by: Jan Beulich <jbeulich@suse.com>
|
|
Committed-by: Keir Fraser <keir@xen.org>
|
|
|
|
--- a/xen/arch/x86/hvm/vmx/vvmx.c
|
|
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
|
|
@@ -1585,7 +1585,8 @@ int nvmx_n2_vmexit_handler(struct cpu_us
|
|
break;
|
|
case EXIT_REASON_DR_ACCESS:
|
|
ctrl = __n2_exec_control(v);
|
|
- if ( ctrl & CPU_BASED_MOV_DR_EXITING )
|
|
+ if ( (ctrl & CPU_BASED_MOV_DR_EXITING) &&
|
|
+ v->arch.hvm_vcpu.flag_dr_dirty )
|
|
nvcpu->nv_vmexit_pending = 1;
|
|
break;
|
|
case EXIT_REASON_INVLPG:
|