Christoph Egger
2011-Aug-18 10:04 UTC
[Xen-devel] [PATCH] nestedhvm: reduce IPIs with nested-on-nested
In p2m_get_nestedp2m() there is no need to send IPIs via nestedhvm_vmcx_flushtlb() since p2m_flush_table() already did that. Stop sending IPIs to flush the nested-on-nested pagetable after write operations. Instead flush the TLB only. This fixes an endless loop of nested page faults after adding an entry to the nested-on-nested pagetable. Signed-off-by: Christoph Egger <Christoph.Egger@amd.com> -- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Tim Deegan
2011-Aug-18 13:16 UTC
Re: [Xen-devel] [PATCH] nestedhvm: reduce IPIs with nested-on-nested
Hi, At 12:04 +0200 on 18 Aug (1313669099), Christoph Egger wrote:> --- a/xen/arch/x86/mm/hap/nested_hap.c Mon Aug 08 11:36:21 2011 +0200 > +++ b/xen/arch/x86/mm/hap/nested_hap.c Thu Aug 18 11:54:17 2011 +0200 > @@ -86,8 +86,10 @@ nestedp2m_write_p2m_entry(struct p2m_dom > > old_flags = l1e_get_flags(*p); > safe_write_pte(p, new); > - if (old_flags & _PAGE_PRESENT) > - nestedhvm_vmcx_flushtlb(p2m); > + > + if ( (old_flags & _PAGE_PRESENT) > + && (level == 1 || (level == 2 && (old_flags & _PAGE_PSE))) ) > + flush_tlb_mask(&p2m->p2m_dirty_cpumask);I think you need to flush on all levels, since the TLB can contain partial walks.> paging_unlock(d); > }> diff -r ce4768a78051 xen/arch/x86/mm/p2m.c > --- a/xen/arch/x86/mm/p2m.c Mon Aug 08 11:36:21 2011 +0200 > +++ b/xen/arch/x86/mm/p2m.c Thu Aug 18 11:54:17 2011 +0200 > @@ -1164,7 +1164,6 @@ p2m_get_nestedp2m(struct vcpu *v, uint64 > p2m->cr3 = cr3; > nv->nv_flushp2m = 0; > hvm_asid_flush_vcpu(v); > - nestedhvm_vmcx_flushtlb(p2m);This is an unrelated fix and should be in a separate patch. Cheers, Tim. -- Tim Deegan <tim@xen.org> Principal Software Engineer, Xen Platform Team Citrix Systems UK Ltd. (Company #02937203, SL9 0BG) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel