|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/6] xen: arm: only put_page for p2m operations which require it.
Hi Ian,
On 06/10/2014 10:57 AM, Ian Campbell wrote:
> In particular do not do it for CACHEFLUSH.
>
> INSERT, RELINQUISH and REMOVE should all put the page (if the current pte is
> valid). ALLOCATE doesn't need to since it asserts the current PTE must be
> invalid.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> ---
> xen/arch/arm/p2m.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> index 9960e17..830a9f9 100644
> --- a/xen/arch/arm/p2m.c
> +++ b/xen/arch/arm/p2m.c
> @@ -299,6 +299,23 @@ enum p2m_operation {
> CACHEFLUSH,
> };
>
> +static void p2m_put_page(const lpae_t pte)
> +{
> + /* TODO: Handle other p2m types
> + *
> + * It's safe to do the put_page here because page_alloc will
> + * flush the TLBs if the page is reallocated before the end of
> + * this loop.
> + */
> + if ( p2m_is_foreign(pte.p2m.type) )
> + {
> + unsigned long mfn = pte.p2m.base;
> +
> + ASSERT(mfn_valid(mfn));
> + put_page(mfn_to_page(mfn));
> + }
> +}
> +
You forgot to drop the put_page in apply_p2m_changes. So, now we have 2
put_page rather than one.
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |