summaryrefslogtreecommitdiff
path: root/arch/riscv/include/uapi/asm/hwprobe.h
diff options
context:
space:
mode:
authorClément Léger <cleger@rivosinc.com>2024-04-10 16:45:57 +0200
committerPalmer Dabbelt <palmer@rivosinc.com>2024-07-11 08:57:33 -0700
commitc9b8cd139c1dfb95eb86fd6a58cfe2089843d1d4 (patch)
tree60e0509f755dfbb1ebc22e52ec6b0a58fc756919 /arch/riscv/include/uapi/asm/hwprobe.h
parent16badacd8af48980c546839626d0329bab32b4c3 (diff)
downloadlinux-c9b8cd139c1dfb95eb86fd6a58cfe2089843d1d4.tar.gz
linux-c9b8cd139c1dfb95eb86fd6a58cfe2089843d1d4.tar.bz2
linux-c9b8cd139c1dfb95eb86fd6a58cfe2089843d1d4.zip
riscv: hwprobe: export highest virtual userspace address
Some userspace applications (OpenJDK for instance) uses the free MSBs in pointers to insert additional information for their own logic and need to get this information from somewhere. Currently they rely on parsing /proc/cpuinfo "mmu=svxx" string to obtain the current value of virtual address usable bits [1]. Since this reflect the raw supported MMU mode, it might differ from the logical one used internally which is why arch_get_mmap_end() is used. Exporting the highest mmapable address through hwprobe will allow a more stable interface to be used. For that purpose, add a new hwprobe key named RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS which will export the highest userspace virtual address. Link: https://github.com/openjdk/jdk/blob/master/src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp#L171 [1] Signed-off-by: Clément Léger <cleger@rivosinc.com> Reviewed-by: Charlie Jenkins <charlie@rivosinc.com> Link: https://lore.kernel.org/r/20240410144558.1104006-1-cleger@rivosinc.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Diffstat (limited to 'arch/riscv/include/uapi/asm/hwprobe.h')
-rw-r--r--arch/riscv/include/uapi/asm/hwprobe.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uapi/asm/hwprobe.h
index 920fc6a586c9..9e48320cb970 100644
--- a/arch/riscv/include/uapi/asm/hwprobe.h
+++ b/arch/riscv/include/uapi/asm/hwprobe.h
@@ -79,6 +79,7 @@ struct riscv_hwprobe {
#define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0)
#define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0)
#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
+#define RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS 7
/* Increase RISCV_HWPROBE_MAX_KEY when adding items. */
/* Flags */