[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 |