arm64: Delay ELF HWCAP initialisation until all CPUs are up
Delay the ELF HWCAP initialisation until all the (enabled) CPUs are up, i.e, smp_cpus_done(). This is in preparation for detecting the common features across the CPUS and creating a consistent ELF HWCAP for the system. Signed-off-by: Suzuki K. Poulose <suzuki.poulose@arm.com> Tested-by: Dave Martin <Dave.Martin@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
parent
64f1781897
commit
3a75578efa
|
@ -81,6 +81,7 @@ static inline int __attribute_const__ cpuid_feature_extract_field(u64 features,
|
|||
return (s64)(features << (64 - 4 - field)) >> (64 - 4);
|
||||
}
|
||||
|
||||
void __init setup_cpu_features(void);
|
||||
|
||||
void check_cpu_capabilities(const struct arm64_cpu_capabilities *caps,
|
||||
const char *info);
|
||||
|
|
|
@ -196,20 +196,13 @@ static void __init smp_build_mpidr_hash(void)
|
|||
__flush_dcache_area(&mpidr_hash, sizeof(struct mpidr_hash));
|
||||
}
|
||||
|
||||
static void __init setup_processor(void)
|
||||
void __init setup_cpu_features(void)
|
||||
{
|
||||
u64 features;
|
||||
s64 block;
|
||||
u32 cwg;
|
||||
int cls;
|
||||
|
||||
pr_info("Boot CPU: AArch64 Processor [%08x]\n", read_cpuid_id());
|
||||
|
||||
sprintf(init_utsname()->machine, ELF_PLATFORM);
|
||||
elf_hwcap = 0;
|
||||
|
||||
cpuinfo_store_boot_cpu();
|
||||
|
||||
/*
|
||||
* Check for sane CTR_EL0.CWG value.
|
||||
*/
|
||||
|
@ -293,6 +286,13 @@ static void __init setup_processor(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
static void __init setup_processor(void)
|
||||
{
|
||||
pr_info("Boot CPU: AArch64 Processor [%08x]\n", read_cpuid_id());
|
||||
sprintf(init_utsname()->machine, ELF_PLATFORM);
|
||||
cpuinfo_store_boot_cpu();
|
||||
}
|
||||
|
||||
static void __init setup_machine_fdt(phys_addr_t dt_phys)
|
||||
{
|
||||
void *dt_virt = fixmap_remap_fdt(dt_phys);
|
||||
|
|
|
@ -320,6 +320,7 @@ static void __init hyp_mode_check(void)
|
|||
void __init smp_cpus_done(unsigned int max_cpus)
|
||||
{
|
||||
pr_info("SMP: Total of %d processors activated.\n", num_online_cpus());
|
||||
setup_cpu_features();
|
||||
hyp_mode_check();
|
||||
apply_alternatives_all();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue