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

Re: [PATCH v3 5/7] xen/arm: Use sanitize values for p2m



On Wed, 25 Aug 2021, Bertrand Marquis wrote:
> Replace the code in p2m trying to find a sane value for the VMID size
> supported and the PAR to use. We are now using the boot cpuinfo as the
> values there are sanitized during boot and the value for those
> parameters is now the safest possible value on the system.
> 
> Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
> Changes in v3: drop arm32 mention in commmit message
> Changes in v2:
>  - use system_cpuinfo
> ---
>  xen/arch/arm/p2m.c | 30 ++++++++++--------------------
>  1 file changed, 10 insertions(+), 20 deletions(-)
> 
> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> index eff9a105e7..41b6430c30 100644
> --- a/xen/arch/arm/p2m.c
> +++ b/xen/arch/arm/p2m.c
> @@ -2045,31 +2045,21 @@ void __init setup_virt_paging(void)
>          [7] = { 0 }  /* Invalid */
>      };
>  
> -    unsigned int i, cpu;
> +    unsigned int i;
>      unsigned int pa_range = 0x10; /* Larger than any possible value */
> -    bool vmid_8_bit = false;
> -
> -    for_each_online_cpu ( cpu )
> -    {
> -        const struct cpuinfo_arm *info = &cpu_data[cpu];
>  
> -        /*
> -         * Restrict "p2m_ipa_bits" if needed. As P2M table is always 
> configured
> -         * with IPA bits == PA bits, compare against "pabits".
> -         */
> -        if ( pa_range_info[info->mm64.pa_range].pabits < p2m_ipa_bits )
> -            p2m_ipa_bits = pa_range_info[info->mm64.pa_range].pabits;
> -
> -        /* Set a flag if the current cpu does not support 16 bit VMIDs. */
> -        if ( info->mm64.vmid_bits != MM64_VMID_16_BITS_SUPPORT )
> -            vmid_8_bit = true;
> -    }
> +    /*
> +     * Restrict "p2m_ipa_bits" if needed. As P2M table is always configured
> +     * with IPA bits == PA bits, compare against "pabits".
> +     */
> +    if ( pa_range_info[system_cpuinfo.mm64.pa_range].pabits < p2m_ipa_bits )
> +        p2m_ipa_bits = pa_range_info[system_cpuinfo.mm64.pa_range].pabits;
>  
>      /*
> -     * If the flag is not set then it means all CPUs support 16-bit
> -     * VMIDs.
> +     * cpu info sanitization made sure we support 16bits VMID only if all
> +     * cores are supporting it.
>       */
> -    if ( !vmid_8_bit )
> +    if ( system_cpuinfo.mm64.vmid_bits == MM64_VMID_16_BITS_SUPPORT )
>          max_vmid = MAX_VMID_16_BIT;
>  
>      /* Choose suitable "pa_range" according to the resulted "p2m_ipa_bits". 
> */
> -- 
> 2.17.1
> 



 


Rackspace

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