riscv: Add prctl controls for userspace vector management
authorAndy Chiu <andy.chiu@sifive.com>
Mon, 5 Jun 2023 11:07:18 +0000 (11:07 +0000)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 8 Jun 2023 14:16:53 +0000 (07:16 -0700)
commit1fd96a3e9d5d4febe1a8486590ad52c048d1be77
treec8f955b0183f12182763b56926e58441fc516a59
parent50724efcb370c61c64f75614763fb411e087f70c
riscv: Add prctl controls for userspace vector management

This patch add two riscv-specific prctls, to allow usespace control the
use of vector unit:

 * PR_RISCV_V_SET_CONTROL: control the permission to use Vector at next,
   or all following execve for a thread. Turning off a thread's Vector
   live is not possible since libraries may have registered ifunc that
   may execute Vector instructions.
 * PR_RISCV_V_GET_CONTROL: get the same permission setting for the
   current thread, and the setting for following execve(s).

Signed-off-by: Andy Chiu <andy.chiu@sifive.com>
Reviewed-by: Greentime Hu <greentime.hu@sifive.com>
Reviewed-by: Vincent Chen <vincent.chen@sifive.com>
Link: https://lore.kernel.org/r/20230605110724.21391-22-andy.chiu@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/processor.h
arch/riscv/include/asm/vector.h
arch/riscv/kernel/cpufeature.c
arch/riscv/kernel/process.c
arch/riscv/kernel/vector.c
arch/riscv/kvm/vcpu.c
include/uapi/linux/prctl.h
kernel/sys.c