aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/hvm
diff options
context:
space:
mode:
authorDongxiao Xu <dongxiao.xu@intel.com>2013-01-25 10:17:00 +0100
committerDongxiao Xu <dongxiao.xu@intel.com>2013-01-25 10:17:00 +0100
commit806c9ba5830cf6b2ea2ab6d1605ef7351e62edfa (patch)
tree7188262aa7611bf62b9189d747b5d01f3439d19b /xen/include/asm-x86/hvm
parent28d0ffd3e20112e0daf0ab67f35cfd720b28a991 (diff)
downloadxen-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')
-rw-r--r--xen/include/asm-x86/hvm/vmx/vmcs.h2
-rw-r--r--xen/include/asm-x86/hvm/vmx/vvmx.h6
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)