[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/3] xen/arm: Reduce redundant clear root pages when teardown p2m
Hi Henry, On 16/01/2023 02:58, Henry Wang wrote: > > > Currently, p2m for a domain will be teardown from two paths: > (1) The normal path when a domain is destroyed. > (2) The arch_domain_destroy() in the failure path of domain creation. > > When tearing down p2m from (1), the part to clear and clean the root > is only needed to do once rather than for every call of p2m_teardown(). > If the p2m teardown is from (2), the clear and clean of the root > is unnecessary because the domain is not scheduled. > > Therefore, this patch introduces a helper `p2m_clear_root_pages()` to > do the clear and clean of the root, and move this logic outside of > p2m_teardown(). With this movement, the `page_list_empty(&p2m->pages)` > check can be dropped. > > Signed-off-by: Henry Wang <Henry.Wang@xxxxxxx> > --- > Was: [PATCH v2] xen/arm: Reduce redundant clear root pages when > teardown p2m. Picked to this series with changes in original v1: > 1. Introduce a new PROGRESS for p2m_clear_root_pages() to avoid > multiple calling when p2m_teardown() is preempted. > 2. Move p2m_force_tlb_flush_sync() to p2m_clear_root_pages(). > --- > xen/arch/arm/domain.c | 12 ++++++++++++ > xen/arch/arm/include/asm/p2m.h | 1 + > xen/arch/arm/p2m.c | 34 ++++++++++++++-------------------- > 3 files changed, 27 insertions(+), 20 deletions(-) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 99577adb6c..961dab9166 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -959,6 +959,7 @@ enum { > PROG_xen, > PROG_page, > PROG_mapping, > + PROG_p2m_root, > PROG_p2m, > PROG_p2m_pool, > PROG_done, > @@ -1021,6 +1022,17 @@ int domain_relinquish_resources(struct domain *d) > if ( ret ) > return ret; > > + PROGRESS(p2m_root): > + /* > + * We are about to free the intermediate page-tables, so clear the > + * root to prevent any walk to use them. The comment from here... > + * The domain will not be scheduled anymore, so in theory we should > + * not need to flush the TLBs. Do it for safety purpose. > + * Note that all the devices have already been de-assigned. So we > don't > + * need to flush the IOMMU TLB here. > + */ to here does not make a lot of sense in this place and should be moved to p2m_clear_root_pages where a user can see the call to p2m_force_tlb_flush_sync. Apart from that: Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx> ~Michal
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |