diff options
author | Dongxiao Xu <dongxiao.xu@intel.com> | 2013-01-25 10:17:00 +0100 |
---|---|---|
committer | Dongxiao Xu <dongxiao.xu@intel.com> | 2013-01-25 10:17:00 +0100 |
commit | 806c9ba5830cf6b2ea2ab6d1605ef7351e62edfa (patch) | |
tree | 7188262aa7611bf62b9189d747b5d01f3439d19b /xen/include/asm-x86/hvm/vmx | |
parent | 28d0ffd3e20112e0daf0ab67f35cfd720b28a991 (diff) | |
download | xen-806c9ba5830cf6b2ea2ab6d1605ef7351e62edfa.tar.gz xen-806c9ba5830cf6b2ea2ab6d1605ef7351e62edfa.tar.bz2 xen-806c9ba5830cf6b2ea2ab6d1605ef7351e62edfa.zip |
nested vmx: Use a list to store the launched vvmcs for L1 VMM
Originally we use a virtual VMCS field to store the launch state of
a certain vmcs. However if we introduce VMCS shadowing feature, this
virtual VMCS should also be able to load into real hardware,
and VMREAD/VMWRITE operate invalid fields.
The new approach is to store the launch state into a list for L1 VMM.
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Acked-by Eddie Dong <eddie.dong@intel.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/include/asm-x86/hvm/vmx')
-rw-r--r-- | xen/include/asm-x86/hvm/vmx/vmcs.h | 2 | ||||
-rw-r--r-- | xen/include/asm-x86/hvm/vmx/vvmx.h | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/xen/include/asm-x86/hvm/vmx/vmcs.h b/xen/include/asm-x86/hvm/vmx/vmcs.h index 51df81e4f8..9ff741f42f 100644 --- a/xen/include/asm-x86/hvm/vmx/vmcs.h +++ b/xen/include/asm-x86/hvm/vmx/vmcs.h @@ -421,8 +421,6 @@ enum vmcs_field { HOST_SYSENTER_EIP = 0x00006c12, HOST_RSP = 0x00006c14, HOST_RIP = 0x00006c16, - /* A virtual VMCS field used for nestedvmx only */ - NVMX_LAUNCH_STATE = 0x00006c20, }; #define VMCS_VPID_WIDTH 16 diff --git a/xen/include/asm-x86/hvm/vmx/vvmx.h b/xen/include/asm-x86/hvm/vmx/vvmx.h index 9e1dc77cc3..89e839f9d6 100644 --- a/xen/include/asm-x86/hvm/vmx/vvmx.h +++ b/xen/include/asm-x86/hvm/vmx/vvmx.h @@ -23,6 +23,11 @@ #ifndef __ASM_X86_HVM_VVMX_H__ #define __ASM_X86_HVM_VVMX_H__ +struct vvmcs_list { + unsigned long vvmcs_mfn; + struct list_head node; +}; + struct nestedvmx { paddr_t vmxon_region_pa; void *iobitmap[2]; /* map (va) of L1 guest I/O bitmap */ @@ -38,6 +43,7 @@ struct nestedvmx { uint32_t exit_qual; } ept; uint32_t guest_vpid; + struct list_head launched_list; }; #define vcpu_2_nvmx(v) (vcpu_nestedhvm(v).u.nvmx) |