|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 3/7] xen/arm: Rename cpu_boot_data to system_cpuinfo
On Wed, 25 Aug 2021, Bertrand Marquis wrote:
> As we will sanitize the content of boot_cpu_data it will not really
> contain the boot cpu information but the system sanitize information.
> Rename the structure to system_cpuinfo so the user is informed that this
> is the system wide available feature and not anymore the features of the
> boot cpu.
> The original boot cpu data is still available in cpu_data.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
> ---
> Changes in v3: none
> Changes in v2:
> - patch introduced in v2
> ---
> xen/arch/arm/cpufeature.c | 8 ++------
> xen/arch/arm/setup.c | 34 ++++++++++++++++++--------------
> xen/arch/arm/smpboot.c | 6 +++---
> xen/include/asm-arm/cpufeature.h | 6 +++---
> 4 files changed, 27 insertions(+), 27 deletions(-)
>
> diff --git a/xen/arch/arm/cpufeature.c b/xen/arch/arm/cpufeature.c
> index 1d88783809..f600a611bd 100644
> --- a/xen/arch/arm/cpufeature.c
> +++ b/xen/arch/arm/cpufeature.c
> @@ -169,12 +169,8 @@ void identify_cpu(struct cpuinfo_arm *c)
> */
> static int __init create_guest_cpuinfo(void)
> {
> - /*
> - * TODO: The code is currently using only the features detected on the
> boot
> - * core. In the long term we should try to compute values containing only
> - * features supported by all cores.
> - */
> - guest_cpuinfo = boot_cpu_data;
> + /* Use the sanitized cpuinfo as initial guest cpuinfo */
> + guest_cpuinfo = system_cpuinfo;
>
> #ifdef CONFIG_ARM_64
> /* Hide MPAM support as xen does not support it */
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 63a908e325..3798c5ade0 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -56,7 +56,11 @@
>
> struct bootinfo __initdata bootinfo;
>
> -struct cpuinfo_arm __read_mostly boot_cpu_data;
> +/*
> + * Sanitized version of cpuinfo containing only features available on all
> + * cores (only on arm64 as there is no sanitization support on arm32).
> + */
> +struct cpuinfo_arm __read_mostly system_cpuinfo;
>
> #ifdef CONFIG_ACPI
> bool __read_mostly acpi_disabled;
> @@ -100,7 +104,7 @@ static const char * __initdata processor_implementers[] =
> {
> static void __init processor_id(void)
> {
> const char *implementer = "Unknown";
> - struct cpuinfo_arm *c = &boot_cpu_data;
> + struct cpuinfo_arm *c = &system_cpuinfo;
>
> identify_cpu(c);
> current_cpu_data = *c;
> @@ -120,7 +124,7 @@ static void __init processor_id(void)
> #if defined(CONFIG_ARM_64)
> printk("64-bit Execution:\n");
> printk(" Processor Features: %016"PRIx64" %016"PRIx64"\n",
> - boot_cpu_data.pfr64.bits[0], boot_cpu_data.pfr64.bits[1]);
> + system_cpuinfo.pfr64.bits[0], system_cpuinfo.pfr64.bits[1]);
> printk(" Exception Levels: EL3:%s EL2:%s EL1:%s EL0:%s\n",
> cpu_has_el3_32 ? "64+32" : cpu_has_el3_64 ? "64" : "No",
> cpu_has_el2_32 ? "64+32" : cpu_has_el2_64 ? "64" : "No",
> @@ -144,13 +148,13 @@ static void __init processor_id(void)
> boot_cpu_feature64(simd));
>
> printk(" Debug Features: %016"PRIx64" %016"PRIx64"\n",
> - boot_cpu_data.dbg64.bits[0], boot_cpu_data.dbg64.bits[1]);
> + system_cpuinfo.dbg64.bits[0], system_cpuinfo.dbg64.bits[1]);
> printk(" Auxiliary Features: %016"PRIx64" %016"PRIx64"\n",
> - boot_cpu_data.aux64.bits[0], boot_cpu_data.aux64.bits[1]);
> + system_cpuinfo.aux64.bits[0], system_cpuinfo.aux64.bits[1]);
> printk(" Memory Model Features: %016"PRIx64" %016"PRIx64"\n",
> - boot_cpu_data.mm64.bits[0], boot_cpu_data.mm64.bits[1]);
> + system_cpuinfo.mm64.bits[0], system_cpuinfo.mm64.bits[1]);
> printk(" ISA Features: %016"PRIx64" %016"PRIx64"\n",
> - boot_cpu_data.isa64.bits[0], boot_cpu_data.isa64.bits[1]);
> + system_cpuinfo.isa64.bits[0], system_cpuinfo.isa64.bits[1]);
> #endif
>
> /*
> @@ -161,7 +165,7 @@ static void __init processor_id(void)
> {
> printk("32-bit Execution:\n");
> printk(" Processor Features: %"PRIregister":%"PRIregister"\n",
> - boot_cpu_data.pfr32.bits[0], boot_cpu_data.pfr32.bits[1]);
> + system_cpuinfo.pfr32.bits[0], system_cpuinfo.pfr32.bits[1]);
> printk(" Instruction Sets:%s%s%s%s%s%s\n",
> cpu_has_aarch32 ? " AArch32" : "",
> cpu_has_arm ? " A32" : "",
> @@ -174,18 +178,18 @@ static void __init processor_id(void)
> cpu_has_security ? " Security" : "");
>
> printk(" Debug Features: %"PRIregister"\n",
> - boot_cpu_data.dbg32.bits[0]);
> + system_cpuinfo.dbg32.bits[0]);
> printk(" Auxiliary Features: %"PRIregister"\n",
> - boot_cpu_data.aux32.bits[0]);
> + system_cpuinfo.aux32.bits[0]);
> printk(" Memory Model Features: %"PRIregister" %"PRIregister"\n"
> " %"PRIregister" %"PRIregister"\n",
> - boot_cpu_data.mm32.bits[0], boot_cpu_data.mm32.bits[1],
> - boot_cpu_data.mm32.bits[2], boot_cpu_data.mm32.bits[3]);
> + system_cpuinfo.mm32.bits[0], system_cpuinfo.mm32.bits[1],
> + system_cpuinfo.mm32.bits[2], system_cpuinfo.mm32.bits[3]);
> printk(" ISA Features: %"PRIregister" %"PRIregister"
> %"PRIregister"\n"
> " %"PRIregister" %"PRIregister"
> %"PRIregister"\n",
> - boot_cpu_data.isa32.bits[0], boot_cpu_data.isa32.bits[1],
> - boot_cpu_data.isa32.bits[2], boot_cpu_data.isa32.bits[3],
> - boot_cpu_data.isa32.bits[4], boot_cpu_data.isa32.bits[5]);
> + system_cpuinfo.isa32.bits[0], system_cpuinfo.isa32.bits[1],
> + system_cpuinfo.isa32.bits[2], system_cpuinfo.isa32.bits[3],
> + system_cpuinfo.isa32.bits[4], system_cpuinfo.isa32.bits[5]);
> }
> else
> {
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index a1ee3146ef..c9f2827d56 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -124,7 +124,7 @@ static void __init dt_smp_init_cpus(void)
> bool bootcpu_valid = false;
> int rc;
>
> - mpidr = boot_cpu_data.mpidr.bits & MPIDR_HWID_MASK;
> + mpidr = system_cpuinfo.mpidr.bits & MPIDR_HWID_MASK;
>
> if ( !cpus )
> {
> @@ -319,13 +319,13 @@ void start_secondary(void)
> * now.
> */
> if ( !opt_hmp_unsafe &&
> - current_cpu_data.midr.bits != boot_cpu_data.midr.bits )
> + current_cpu_data.midr.bits != system_cpuinfo.midr.bits )
> {
> printk(XENLOG_ERR
> "CPU%u MIDR (0x%"PRIregister") does not match boot CPU MIDR
> (0x%"PRIregister"),\n"
> XENLOG_ERR "disable cpu (see big.LITTLE.txt under docs/).\n",
> smp_processor_id(), current_cpu_data.midr.bits,
> - boot_cpu_data.midr.bits);
> + system_cpuinfo.midr.bits);
> stop_cpu();
> }
>
> diff --git a/xen/include/asm-arm/cpufeature.h
> b/xen/include/asm-arm/cpufeature.h
> index ba48db3eac..8f2b8e7830 100644
> --- a/xen/include/asm-arm/cpufeature.h
> +++ b/xen/include/asm-arm/cpufeature.h
> @@ -3,7 +3,7 @@
>
> #ifdef CONFIG_ARM_64
> #define cpu_feature64(c, feat) ((c)->pfr64.feat)
> -#define boot_cpu_feature64(feat) (boot_cpu_data.pfr64.feat)
> +#define boot_cpu_feature64(feat) (system_cpuinfo.pfr64.feat)
>
> #define cpu_feature64_has_el0_32(c) (cpu_feature64(c, el0) == 2)
>
> @@ -21,7 +21,7 @@
> #endif
>
> #define cpu_feature32(c, feat) ((c)->pfr32.feat)
> -#define boot_cpu_feature32(feat) (boot_cpu_data.pfr32.feat)
> +#define boot_cpu_feature32(feat) (system_cpuinfo.pfr32.feat)
>
> #define cpu_has_arm (boot_cpu_feature32(arm) == 1)
> #define cpu_has_thumb (boot_cpu_feature32(thumb) >= 1)
> @@ -326,7 +326,7 @@ struct cpuinfo_arm {
> } mvfr;
> };
>
> -extern struct cpuinfo_arm boot_cpu_data;
> +extern struct cpuinfo_arm system_cpuinfo;
>
> extern void identify_cpu(struct cpuinfo_arm *);
>
> --
> 2.17.1
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |