diff options
author | Ard Biesheuvel <ardb@kernel.org> | 2020-12-19 18:29:58 +0300 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2020-12-21 14:19:19 +0300 |
commit | 3cce9d44321e460e7c88cdec4e4537a6e9ad7c0d (patch) | |
tree | 8b5c828491ea81dbc32f40c3a279f0652ac2054b /arch/arm/vfp/entry.S | |
parent | f77ac2e378be9dd61eb88728f0840642f045d9d1 (diff) | |
download | linux-3cce9d44321e460e7c88cdec4e4537a6e9ad7c0d.tar.xz |
ARM: 9044/1: vfp: use undef hook for VFP support detection
Commit f77ac2e378be9dd6 ("ARM: 9030/1: entry: omit FP emulation for UND
exceptions taken in kernel mode") failed to take into account that there
is in fact a case where we relied on this code path: during boot, the
VFP detection code issues a read of FPSID, which will trigger an undef
exception on cores that lack VFP support.
So let's reinstate this logic using an undef hook which is registered
only for the duration of the initcall to vpf_init(), and which sets
VFP_arch to a non-zero value - as before - if no VFP support is present.
Fixes: f77ac2e378be9dd6 ("ARM: 9030/1: entry: omit FP emulation for UND ...")
Reported-by: "kernelci.org bot" <bot@kernelci.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch/arm/vfp/entry.S')
-rw-r--r-- | arch/arm/vfp/entry.S | 17 |
1 files changed, 0 insertions, 17 deletions
diff --git a/arch/arm/vfp/entry.S b/arch/arm/vfp/entry.S index 0186cf9da890..27b0a1f27fbd 100644 --- a/arch/arm/vfp/entry.S +++ b/arch/arm/vfp/entry.S @@ -37,20 +37,3 @@ ENDPROC(vfp_null_entry) .align 2 .LCvfp: .word vfp_vector - -@ This code is called if the VFP does not exist. It needs to flag the -@ failure to the VFP initialisation code. - - __INIT -ENTRY(vfp_testing_entry) - dec_preempt_count_ti r10, r4 - ldr r0, VFP_arch_address - str r0, [r0] @ set to non-zero value - ret r9 @ we have handled the fault -ENDPROC(vfp_testing_entry) - - .align 2 -VFP_arch_address: - .word VFP_arch - - __FINIT |