diff options
author | Suzuki K. Poulose <suzuki.poulose@arm.com> | 2015-10-19 15:24:53 +0200 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2015-10-21 16:35:59 +0200 |
commit | fe80f9f2da1006a4308c2bc018ee1d67f10dd8d0 (patch) | |
tree | 586b2d8e63623c0ff0ac7018dbaabbfabe391eeb /arch/arm64/kernel/fpsimd.c | |
parent | arm64/HWCAP: Use system wide safe values (diff) | |
download | linux-fe80f9f2da1006a4308c2bc018ee1d67f10dd8d0.tar.xz linux-fe80f9f2da1006a4308c2bc018ee1d67f10dd8d0.zip |
arm64: Move FP/ASIMD hwcap handling to common code
The FP/ASIMD is detected in fpsimd_init(), which is built-in
unconditionally. Lets move the hwcap handling to the central place.
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>
Diffstat (limited to 'arch/arm64/kernel/fpsimd.c')
-rw-r--r-- | arch/arm64/kernel/fpsimd.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c index c56956a16d3f..4c46c54a3ad7 100644 --- a/arch/arm64/kernel/fpsimd.c +++ b/arch/arm64/kernel/fpsimd.c @@ -332,21 +332,15 @@ static inline void fpsimd_hotplug_init(void) { } */ static int __init fpsimd_init(void) { - u64 pfr = read_cpuid(ID_AA64PFR0_EL1); - - if (pfr & (0xf << 16)) { + if (elf_hwcap & HWCAP_FP) { + fpsimd_pm_init(); + fpsimd_hotplug_init(); + } else { pr_notice("Floating-point is not implemented\n"); - return 0; } - elf_hwcap |= HWCAP_FP; - if (pfr & (0xf << 20)) + if (!(elf_hwcap & HWCAP_ASIMD)) pr_notice("Advanced SIMD is not implemented\n"); - else - elf_hwcap |= HWCAP_ASIMD; - - fpsimd_pm_init(); - fpsimd_hotplug_init(); return 0; } |