[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC 07/22] xen/arm: p2m: Rework p2m_put_l3_page



On Thu, 28 Jul 2016, Julien Grall wrote:
> Modify the prototype to directly pass the mfn and the type in
> parameters. This will be useful later when we do not have the entry in
> hand.
> 
> Signed-off-by: Julien Grall <julien.grall@xxxxxxx>

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


>  xen/arch/arm/p2m.c | 17 +++++++----------
>  1 file changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> index aecdd1e..6b29cf0 100644
> --- a/xen/arch/arm/p2m.c
> +++ b/xen/arch/arm/p2m.c
> @@ -584,10 +584,8 @@ enum p2m_operation {
>   * TODO: Handle superpages, for now we only take special references for leaf
>   * pages (specifically foreign ones, which can't be super mapped today).
>   */
> -static void p2m_put_l3_page(const lpae_t pte)
> +static void p2m_put_l3_page(mfn_t mfn, p2m_type_t type)
>  {
> -    ASSERT(p2m_valid(pte));
> -
>      /*
>       * TODO: Handle other p2m types
>       *
> @@ -595,12 +593,10 @@ static void p2m_put_l3_page(const lpae_t pte)
>       * flush the TLBs if the page is reallocated before the end of
>       * this loop.
>       */
> -    if ( p2m_is_foreign(pte.p2m.type) )
> +    if ( p2m_is_foreign(type) )
>      {
> -        unsigned long mfn = pte.p2m.base;
> -
> -        ASSERT(mfn_valid(mfn));
> -        put_page(mfn_to_page(mfn));
> +        ASSERT(mfn_valid(mfn_x(mfn)));
> +        put_page(mfn_to_page(mfn_x(mfn)));
>      }
>  }
>  
> @@ -734,7 +730,8 @@ static int apply_one_level(struct domain *d,
>                   */
>                  BUG_ON(level < 3 && p2m_table(orig_pte));
>                  if ( level == 3 )
> -                    p2m_put_l3_page(orig_pte);
> +                    p2m_put_l3_page(_mfn(orig_pte.p2m.base),
> +                                    orig_pte.p2m.type);
>              }
>              else /* New mapping */
>                  p2m->stats.mappings[level]++;
> @@ -834,7 +831,7 @@ static int apply_one_level(struct domain *d,
>          p2m->stats.mappings[level]--;
>  
>          if ( level == 3 )
> -            p2m_put_l3_page(orig_pte);
> +            p2m_put_l3_page(_mfn(orig_pte.p2m.base), orig_pte.p2m.type);
>  
>          /*
>           * This is still a single pte write, no matter the level, so no need 
> to
> -- 
> 1.9.1
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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