[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-next 13/16] xen/arm: p2m: Fold p2m_tlb_flush into p2m_force_tlb_flush_sync
On Thu, 23 Nov 2017, Julien Grall wrote: > p2m_tlb_flush is called in 2 places: p2m_alloc_table and > p2m_force_tlb_flush_sync. > > p2m_alloc_table is called when the domain is initialized and could be > replace by a call to p2m_force_tlb_flush_sync with the P2M write locked. > > This seems a bit pointless but would allow to have a single API for > flushing and avoid misusage in the P2M code. > > So update p2m_alloc_table to use p2m_force_tlb_flush_sync and fold > p2m_tlb_flush in p2m_force_tlb_flush_sync. > > Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > xen/arch/arm/p2m.c | 24 +++++++++++------------- > 1 file changed, 11 insertions(+), 13 deletions(-) > > diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c > index 37498d8ff1..5294113afe 100644 > --- a/xen/arch/arm/p2m.c > +++ b/xen/arch/arm/p2m.c > @@ -132,11 +132,18 @@ void p2m_restore_state(struct vcpu *n) > *last_vcpu_ran = n->vcpu_id; > } > > -static void p2m_tlb_flush(struct p2m_domain *p2m) > +/* > + * Force a synchronous P2M TLB flush. > + * > + * Must be called with the p2m lock held. > + */ > +static void p2m_force_tlb_flush_sync(struct p2m_domain *p2m) > { > unsigned long flags = 0; > uint64_t ovttbr; > > + ASSERT(p2m_is_write_locked(p2m)); > + > /* > * ARM only provides an instruction to flush TLBs for the current > * VMID. So switch to the VTTBR of a given P2M if different. > @@ -157,18 +164,7 @@ static void p2m_tlb_flush(struct p2m_domain *p2m) > isb(); > local_irq_restore(flags); > } > -} > - > -/* > - * Force a synchronous P2M TLB flush. > - * > - * Must be called with the p2m lock held. > - */ > -static void p2m_force_tlb_flush_sync(struct p2m_domain *p2m) > -{ > - ASSERT(p2m_is_write_locked(p2m)); > > - p2m_tlb_flush(p2m); > p2m->need_flush = false; > } > > @@ -1143,7 +1139,9 @@ static int p2m_alloc_table(struct domain *d) > * Make sure that all TLBs corresponding to the new VMID are flushed > * before using it > */ > - p2m_tlb_flush(p2m); > + p2m_write_lock(p2m); > + p2m_force_tlb_flush_sync(p2m); > + p2m_write_unlock(p2m); > > return 0; > } > -- > 2.11.0 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |