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;
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;
#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",
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
/*
{
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" : "",
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
{