mirror-linux/arch
Samuel Holland 5fc7355f01
riscv: Add support for per-thread envcfg CSR values
Some bits in the [ms]envcfg CSR, such as the CFI state and pointer
masking mode, need to be controlled on a per-thread basis. Support this
by keeping a copy of the CSR value in struct thread_struct and writing
it during context switches. It is safe to discard the old CSR value
during the context switch because the CSR is modified only by software,
so the CSR will remain in sync with the copy in thread_struct.

Use ALTERNATIVE directly instead of riscv_has_extension_unlikely() to
minimize branchiness in the context switching code.

Since thread_struct is copied during fork(), setting the value for the
init task sets the default value for all other threads.

Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Deepak Gupta <debug@rivosinc.com>
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
Link: https://lore.kernel.org/r/20240814081126.956287-3-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-10-05 08:51:14 -07:00
..
alpha asm-generic updates for 6.12 2024-09-26 11:54:40 -07:00
arc Kbuild updates for v6.12 2024-09-24 13:02:06 -07:00
arm soc: convert ep93xx to devicetree 2024-09-26 12:00:25 -07:00
arm64 x86: 2024-09-28 09:20:14 -07:00
csky mm: make arch_get_unmapped_area() take vm_flags by default 2024-09-09 16:39:13 -07:00
hexagon hexagon: vdso: Fix build failure 2024-09-23 08:17:50 -07:00
loongarch x86: 2024-09-28 09:20:14 -07:00
m68k m68knommu: updates and fixes for v6.12 2024-09-24 10:48:44 -07:00
microblaze microblaze: don't treat zero reserved memory regions as error 2024-08-25 15:26:30 -07:00
mips x86: 2024-09-28 09:20:14 -07:00
nios2 mm: remove legacy install_special_mapping() code 2024-09-01 20:26:13 -07:00
openrisc
parisc [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
powerpc powerpc fixes for 6.12 #2 2024-09-25 11:17:25 -07:00
riscv riscv: Add support for per-thread envcfg CSR values 2024-10-05 08:51:14 -07:00
s390 x86: 2024-09-28 09:20:14 -07:00
sh sh updates for v6.12 2024-09-27 10:10:21 -07:00
sparc This includes the following changes related to sparc for v6.12: 2024-09-25 11:21:06 -07:00
um This pull request contains the following changes for UML: 2024-09-27 12:48:48 -07:00
x86 x86: kvm: fix build error 2024-09-29 14:47:33 -07:00
xtensa ALong with the usual shower of singleton patches, notable patch series in 2024-09-21 07:29:05 -07:00
.gitignore
Kconfig Rust changes for v6.12 2024-09-25 10:25:40 -07:00