RFR: 8284196: RISC-V: Detect supported ISA extensions over cpuinfo [v2]
Ludovic Henry
luhenry at openjdk.org
Tue Feb 7 08:22:47 UTC 2023
On Tue, 7 Feb 2023 03:07:16 GMT, Feilong Jiang <fjiang at openjdk.org> wrote:
>> Currently, `elf_hwcap` for RISC-V only sets single-letter extension bit (e.g. IMAFD).
>> As many standard multi-letter ISA extensions are ratified (e.g. Zba/Zbb/Zbc/Zbs),
>> we should find a stable way to detect these supported ISA extensions in JVM.
>> [1] has proposed a way to parse supported extensions through /proc/cpuinfo
>> or "riscv,isa" string of /sys/firmware/devicetree, we could detect supported extensions
>> in the same way.
>>
>> Here is an example of /proc/cpuinfo with multi-letter extensions from Ubuntu 20.04 in QEMU-SYSTEM:
>>
>>
>> ubuntu at ubuntu:~$ uname -a
>> Linux ubuntu 5.8.0-14-generic #16~20.04.3-Ubuntu SMP Mon Feb 1 16:33:19 UTC 2021 riscv64 riscv64 riscv64 GNU/Linux
>> ubuntu at ubuntu:~$ cat /proc/cpuinfo
>> processor : 0
>> hart : 2
>> isa : rv64imafdch_zicsr_zifencei_zihintpause_zba_zbb_zbc_zbs_sstc
>> mmu : sv48
>>
>>
>> 1: http://lists.infradead.org/pipermail/linux-riscv/2021-November/010252.html
>>
>>
>> Testing:
>> - [x] `jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseZihintpause -XX:+UseRVV -XX:+UseZicbop -XX:+UseZba -XX:+UseZbb -XX:+UseZbs -XX:+PrintFlagsFinal -version` with release build
>
> Feilong Jiang has updated the pull request incrementally with one additional commit since the last revision:
>
> fix typo
The device tree is generally not trusted by even Linux, so it can be quite tricky to rely on it to reliably detect features (there are hardware out there - not necessarily RISC-V - that "lie" in their device tree for some reasons). Relying on `/proc/cpuinfo` which comes from the device tree is I think a good first step. but we will want to make sure to have a better solution in the future (I wish there was a cpuid-like feature on RISC-V...). There are also other proposals in Linux, like the `riscv_hwprobe` syscall [1] which should also be supported in glibc.
[1] https://lkml.org/lkml/2023/2/6/1147
-------------
PR: https://git.openjdk.org/jdk/pull/12343
More information about the hotspot-dev
mailing list