RISC-V: Add hwprobe vDSO function and data
authorEvan Green <evan@rivosinc.com>
Fri, 7 Apr 2023 23:11:03 +0000 (16:11 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 18 Apr 2023 22:48:18 +0000 (15:48 -0700)
commitaa5af0aa90bad3f1cad5a90ee5eecd92ac9f3096
tree4047028646908985a844d3423b5213009f59bd42
parent287dcc2b0c831d3e3887421f68e3db6b8b8f4eb1
RISC-V: Add hwprobe vDSO function and data

Add a vDSO function __vdso_riscv_hwprobe, which can sit in front of the
riscv_hwprobe syscall and answer common queries. We stash a copy of
static answers for the "all CPUs" case in the vDSO data page. This data
is private to the vDSO, so we can decide later to change what's stored
there or under what conditions we defer to the syscall. Currently all
data can be discovered at boot, so the vDSO function answers all queries
when the cpumask is set to the "all CPUs" hint.

There's also a boolean in the data that lets the vDSO function know that
all CPUs are the same. In that case, the vDSO will also answer queries
for arbitrary CPU masks in addition to the "all CPUs" hint.

Signed-off-by: Evan Green <evan@rivosinc.com>
Link: https://lore.kernel.org/r/20230407231103.2622178-7-evan@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/Kconfig
arch/riscv/include/asm/vdso/data.h [new file with mode: 0644]
arch/riscv/include/asm/vdso/gettimeofday.h
arch/riscv/kernel/compat_vdso/Makefile
arch/riscv/kernel/sys_riscv.c
arch/riscv/kernel/vdso.c
arch/riscv/kernel/vdso/Makefile
arch/riscv/kernel/vdso/hwprobe.c [new file with mode: 0644]
arch/riscv/kernel/vdso/sys_hwprobe.S [new file with mode: 0644]
arch/riscv/kernel/vdso/vdso.lds.S