aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/domain.h
diff options
context:
space:
mode:
authorcegger <none@none>2011-04-05 15:44:09 +0200
committercegger <none@none>2011-04-05 15:44:09 +0200
commitdd6de3ab99855dfac06633814a52c263726668c1 (patch)
tree5c6f796611e27676772e714066c83b9ace69e7ad /xen/include/asm-x86/domain.h
parente006a0e0aaae4e70e86238afcbd964de5af84dfc (diff)
downloadxen-dd6de3ab99855dfac06633814a52c263726668c1.tar.gz
xen-dd6de3ab99855dfac06633814a52c263726668c1.tar.bz2
xen-dd6de3ab99855dfac06633814a52c263726668c1.zip
Implement Nested-on-Nested.
This allows the guest to run nested guest with hap enabled. Signed-off-by: Christoph Egger <Christoph.Egger@amd.com> Acked-by: Tim Deegan <Tim.Deegan@citrix.com> Committed-by: Tim Deegan <Tim.Deegan@citrix.com>
Diffstat (limited to 'xen/include/asm-x86/domain.h')
-rw-r--r--xen/include/asm-x86/domain.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 787aaa30ab..0df43726f1 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -210,6 +210,8 @@ struct paging_domain {
struct paging_vcpu {
/* Pointers to mode-specific entry points. */
const struct paging_mode *mode;
+ /* Nested Virtualization: paging mode of nested guest */
+ const struct paging_mode *nestedmode;
/* HVM guest: last emulate was to a pagetable */
unsigned int last_write_was_pt:1;
/* HVM guest: last write emulation succeeds */
@@ -225,6 +227,7 @@ struct paging_vcpu {
#define MAX_CPUID_INPUT 40
typedef xen_domctl_cpuid_t cpuid_input_t;
+#define MAX_NESTEDP2M 10
struct p2m_domain;
struct time_scale {
int shift;
@@ -273,6 +276,12 @@ struct arch_domain
struct paging_domain paging;
struct p2m_domain *p2m;
+ /* nestedhvm: translate l2 guest physical to host physical */
+ struct p2m_domain *nested_p2m[MAX_NESTEDP2M];
+ spinlock_t nested_p2m_lock;
+ int nested_p2m_locker;
+ const char *nested_p2m_function;
+
/* NB. protected by d->event_lock and by irq_desc[irq].lock */
int *irq_pirq;
int *pirq_irq;