[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.4] nested EPT: fix the handling of nested EPT
commit f51089d3c4a531376e099ee50d9dec0a3ec59c9d Author: Liang Li <liang.z.li@xxxxxxxxx> AuthorDate: Tue Jul 21 11:15:35 2015 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Jul 21 11:15:35 2015 +0200 nested EPT: fix the handling of nested EPT If the host EPT entry is changed, the nested EPT should be updated. the current code does not do this, and it's wrong. I have tested this patch, the L2 guest can boot and run as normal. Signed-off-by: Liang Li <liang.z.li@xxxxxxxxx> Signed-off-by: Yang Zhang <yang.z.zhang@xxxxxxxxx> Reported-by: Tim Deegan <tim@xxxxxxx> Reviewed-by: Tim Deegan <tim@xxxxxxx> master commit: 71bb7304e7a7a35ea6df4b0cedebc35028e4c159 master date: 2015-06-30 15:00:54 +0100 --- xen/arch/x86/mm/p2m-ept.c | 4 ++++ xen/arch/x86/mm/p2m.c | 6 ++++++ 2 files changed, 10 insertions(+), 0 deletions(-) diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c index 92d9e2d..468033a 100644 --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -26,6 +26,7 @@ #include <asm/p2m.h> #include <asm/hvm/vmx/vmx.h> #include <asm/hvm/vmx/vmcs.h> +#include <asm/hvm/nestedhvm.h> #include <xen/iommu.h> #include <asm/mtrr.h> #include <asm/hvm/cacheattr.h> @@ -704,6 +705,9 @@ void ept_sync_domain(struct p2m_domain *p2m) ASSERT(local_irq_is_enabled()); + if ( nestedhvm_enabled(d) && !p2m_is_nestedp2m(p2m) ) + p2m_flush_nestedp2m(d); + /* * Flush active cpus synchronously. Flush others the next time this domain * is scheduled onto them. We accept the race of other CPUs adding to diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index 246ddd7..26dd79a 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -1519,6 +1519,12 @@ p2m_flush_table(struct p2m_domain *p2m) ASSERT(page_list_empty(&p2m->pod.super)); ASSERT(page_list_empty(&p2m->pod.single)); + if ( p2m->np2m_base == P2M_BASE_EADDR ) + { + p2m_unlock(p2m); + return; + } + /* This is no longer a valid nested p2m for any address space */ p2m->np2m_base = P2M_BASE_EADDR; -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.4 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |