|
[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
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |