[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v9 1/3] x86/tlb: introduce a flush HVM ASIDs flag
On Thu, Apr 09, 2020 at 01:54:40PM +0200, Jan Beulich wrote: > On 06.04.2020 12:57, Roger Pau Monne wrote: > > --- a/xen/arch/x86/mm/hap/hap.c > > +++ b/xen/arch/x86/mm/hap/hap.c > > @@ -118,7 +118,7 @@ int hap_track_dirty_vram(struct domain *d, > > p2m_change_type_range(d, begin_pfn, begin_pfn + nr, > > p2m_ram_rw, p2m_ram_logdirty); > > > > - flush_tlb_mask(d->dirty_cpumask); > > + hap_flush_tlb_mask(d->dirty_cpumask); > > > > memset(dirty_bitmap, 0xff, size); /* consider all pages dirty > > */ > > } > > @@ -205,7 +205,7 @@ static int hap_enable_log_dirty(struct domain *d, > > bool_t log_global) > > * to be read-only, or via hardware-assisted log-dirty. > > */ > > p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty); > > - flush_tlb_mask(d->dirty_cpumask); > > + hap_flush_tlb_mask(d->dirty_cpumask); > > } > > return 0; > > } > > @@ -234,7 +234,7 @@ static void hap_clean_dirty_bitmap(struct domain *d) > > * be read-only, or via hardware-assisted log-dirty. > > */ > > p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty); > > - flush_tlb_mask(d->dirty_cpumask); > > + hap_flush_tlb_mask(d->dirty_cpumask); > > } > > > > /************************************************/ > > @@ -798,7 +798,7 @@ hap_write_p2m_entry(struct p2m_domain *p2m, unsigned > > long gfn, l1_pgentry_t *p, > > > > safe_write_pte(p, new); > > if ( old_flags & _PAGE_PRESENT ) > > - flush_tlb_mask(d->dirty_cpumask); > > + hap_flush_tlb_mask(d->dirty_cpumask); > > > > paging_unlock(d); > > > > Following up on my earlier mail about paging_log_dirty_range(), I'm > now of the opinion that all of these flushes should go away too. I > can only assume that they got put where they are when HAP code was > cloned from the shadow one. These are only p2m operations, and hence > p2m level TLB flushing is all that's needed here. IIRC without those ASID flushes NPT won't work correctly, as I think it relies on those flushes when updating the p2m. We could see about moving those flushes inside the NPT functions that modify the p2m, AFAICT p2m_pt_set_entry which calls p2m->write_p2m_entry relies on the later doing the ASID flushes, as it doesn't perform any. Thanks, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |