mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 02:00:43 -04:00
riscv: Disable Vector Instructions for kernel itself
Disable vector instructions execution for kernel mode at its entrances. This helps find illegal uses of vector in the kernel space, which is similar to the fpu. Signed-off-by: Guo Ren <guoren@linux.alibaba.com> Co-developed-by: Vincent Chen <vincent.chen@sifive.com> Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Co-developed-by: Han-Kuan Chen <hankuan.chen@sifive.com> Signed-off-by: Han-Kuan Chen <hankuan.chen@sifive.com> Co-developed-by: Greentime Hu <greentime.hu@sifive.com> Signed-off-by: Greentime Hu <greentime.hu@sifive.com> Signed-off-by: Vineet Gupta <vineetg@rivosinc.com> Signed-off-by: Andy Chiu <andy.chiu@sifive.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Reviewed-by: Heiko Stuebner <heiko.stuebner@vrull.eu> Tested-by: Heiko Stuebner <heiko.stuebner@vrull.eu> Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com> Link: https://lore.kernel.org/r/20230605110724.21391-7-andy.chiu@sifive.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
@@ -48,10 +48,10 @@ _save_context:
|
||||
* Disable user-mode memory access as it should only be set in the
|
||||
* actual user copy routines.
|
||||
*
|
||||
* Disable the FPU to detect illegal usage of floating point in kernel
|
||||
* space.
|
||||
* Disable the FPU/Vector to detect illegal usage of floating point
|
||||
* or vector in kernel space.
|
||||
*/
|
||||
li t0, SR_SUM | SR_FS
|
||||
li t0, SR_SUM | SR_FS_VS
|
||||
|
||||
REG_L s0, TASK_TI_USER_SP(tp)
|
||||
csrrc s1, CSR_STATUS, t0
|
||||
|
||||
@@ -140,10 +140,10 @@ secondary_start_sbi:
|
||||
.option pop
|
||||
|
||||
/*
|
||||
* Disable FPU to detect illegal usage of
|
||||
* floating point in kernel space
|
||||
* Disable FPU & VECTOR to detect illegal usage of
|
||||
* floating point or vector in kernel space
|
||||
*/
|
||||
li t0, SR_FS
|
||||
li t0, SR_FS_VS
|
||||
csrc CSR_STATUS, t0
|
||||
|
||||
/* Set trap vector to spin forever to help debug */
|
||||
@@ -234,10 +234,10 @@ pmp_done:
|
||||
.option pop
|
||||
|
||||
/*
|
||||
* Disable FPU to detect illegal usage of
|
||||
* floating point in kernel space
|
||||
* Disable FPU & VECTOR to detect illegal usage of
|
||||
* floating point or vector in kernel space
|
||||
*/
|
||||
li t0, SR_FS
|
||||
li t0, SR_FS_VS
|
||||
csrc CSR_STATUS, t0
|
||||
|
||||
#ifdef CONFIG_RISCV_BOOT_SPINWAIT
|
||||
|
||||
Reference in New Issue
Block a user