|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 04/21] xen/arm: p2m: apply_p2m_changes: Only load domain P2M when we flush TLBs
On Tue, 2014-04-22 at 14:14 +0100, Julien Grall wrote:
> apply_p2m_changes needs to switch to another VTTBR temporarily to avoid
> flush every TLBs.
>
> As it's only needed there, we can restrict the scope where the VTTBR of this
> domain is loaded.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Athough a flush_tlb_domain(d) type thing might be a nice addition.
>
> ---
> Changes in v4:
> - Patch added
> ---
> xen/arch/arm/p2m.c | 19 +++++++++----------
> 1 file changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> index 0730da4..603c097 100644
> --- a/xen/arch/arm/p2m.c
> +++ b/xen/arch/arm/p2m.c
> @@ -296,9 +296,6 @@ static int apply_p2m_changes(struct domain *d,
>
> spin_lock(&p2m->lock);
>
> - if ( d != current->domain )
> - p2m_load_VTTBR(d);
> -
> addr = start_gpaddr;
> while ( addr < end_gpaddr )
> {
> @@ -454,12 +451,17 @@ static int apply_p2m_changes(struct domain *d,
>
> if ( flush )
> {
> - /* At the beginning of the function, Xen is updating VTTBR
> - * with the domain where the mappings are created. In this
> - * case it's only necessary to flush TLBs on every CPUs with
> - * the current VMID (our domain).
> + /* Update the VTTBR if necessary with the domain where mappings
> + * are created. In this case it's only necessary to flush TLBs
> + * on every CPUs with the current VMID (our domain).
> */
> + if ( d != current->domain )
> + p2m_load_VTTBR(d);
> +
> flush_tlb();
> +
> + if ( d != current->domain )
> + p2m_load_VTTBR(current->domain);
> }
>
> if ( op == ALLOCATE || op == INSERT )
> @@ -478,9 +480,6 @@ out:
> if (second) unmap_domain_page(second);
> if (first) unmap_domain_page(first);
>
> - if ( d != current->domain )
> - p2m_load_VTTBR(current->domain);
> -
> spin_unlock(&p2m->lock);
>
> return rc;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |