| From 449443c03d8cfdacf7313e17779a2594ebf87e6d Mon Sep 17 00:00:00 2001 |
| From: Suzuki K Poulose <suzuki.poulose@arm.com> |
| Date: Mon, 13 Jan 2020 23:30:19 +0000 |
| Subject: arm64: cpufeature: Fix the type of no FP/SIMD capability |
| |
| From: Suzuki K Poulose <suzuki.poulose@arm.com> |
| |
| commit 449443c03d8cfdacf7313e17779a2594ebf87e6d upstream. |
| |
| The NO_FPSIMD capability is defined with scope SYSTEM, which implies |
| that the "absence" of FP/SIMD on at least one CPU is detected only |
| after all the SMP CPUs are brought up. However, we use the status |
| of this capability for every context switch. So, let us change |
| the scope to LOCAL_CPU to allow the detection of this capability |
| as and when the first CPU without FP is brought up. |
| |
| Also, the current type allows hotplugged CPU to be brought up without |
| FP/SIMD when all the current CPUs have FP/SIMD and we have the userspace |
| up. Fix both of these issues by changing the capability to |
| BOOT_RESTRICTED_LOCAL_CPU_FEATURE. |
| |
| Fixes: 82e0191a1aa11abf ("arm64: Support systems without FP/ASIMD") |
| Cc: Will Deacon <will@kernel.org> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Reviewed-by: Ard Biesheuvel <ardb@kernel.org> |
| Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> |
| Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> |
| Signed-off-by: Will Deacon <will@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/arm64/kernel/cpufeature.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/arm64/kernel/cpufeature.c |
| +++ b/arch/arm64/kernel/cpufeature.c |
| @@ -1367,7 +1367,7 @@ static const struct arm64_cpu_capabiliti |
| { |
| /* FP/SIMD is not implemented */ |
| .capability = ARM64_HAS_NO_FPSIMD, |
| - .type = ARM64_CPUCAP_SYSTEM_FEATURE, |
| + .type = ARM64_CPUCAP_BOOT_RESTRICTED_CPU_LOCAL_FEATURE, |
| .min_field_value = 0, |
| .matches = has_no_fpsimd, |
| }, |