[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.