|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [v2] nested EPT: fix the handling of nested EPT
Sorry for the wrong email of Yang's, please ignore. I will resend.
Liang
> -----Original Message-----
> From: Li, Liang Z
> Sent: Saturday, June 27, 2015 5:57 AM
> To: xen-devel@xxxxxxxxxxxxx
> Cc: tim@xxxxxxx; keir@xxxxxxx; jbeulich@xxxxxxxx;
> andrew.cooper3@xxxxxxxxxx; Tian, Kevin; Li, Liang Z; Yang Zhang
> Subject: [v2] 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.li@xxxxxxxxx>
> Reported-by: Tim Deegan <tim@xxxxxxx>
> ---
> xen/arch/x86/mm/p2m-ept.c | 4 ++++
> xen/arch/x86/mm/p2m.c | 4 ++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
> index 5133eb6..ff189e7 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>
> @@ -1076,6 +1077,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
> 1fd1194..3a06eec 100644
> --- a/xen/arch/x86/mm/p2m.c
> +++ b/xen/arch/x86/mm/p2m.c
> @@ -1742,6 +1742,10 @@ 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;
>
> --
> 1.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |