RFR: 8352673: RISC-V: Vector can't be turned on with -XX:+UseRVV

Dingli Zhang dzhang at openjdk.org
Mon Mar 24 07:43:09 UTC 2025


Hi all,
After [JDK-8348384](https://bugs.openjdk.org/browse/JDK-8348384), Vector can't be turned on with -XX:+UseRVV when Linux kernels before 6.8.5, which does not match the printed log:

log.info("Linux kernels before 6.8.5 (current %ld.%ld.%ld) have a known bug when using Vector and signals.", major, minor, patch);
log.info("Vector not enabled automatically via hwprobe, but can be turned on with -XX:+UseRVV.");


Testing on QEMU before this PR:

$ uname -a
Linux ubuntu 6.8.0-52-generic #53.1-Ubuntu SMP PREEMPT_DYNAMIC Sun Jan 26 04:38:25 UTC 2025 riscv64 riscv64 riscv64 GNU/Linux

$ ./java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version | grep UseRVV
     bool UseRVV = false {ARCH diagnostic} {default}
openjdk version "25-internal" 2025-09-16
OpenJDK Runtime Environment (build 25-internal-adhoc.zhangdingli.jdk)
OpenJDK 64-Bit Server VM (build 25-internal-adhoc.zhangdingli.jdk, mixed mode)

$ ./java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UseRVV -version | grep UseRVV
OpenJDK 64-Bit Server VM warning: RVV is not supported on this CPU
     bool UseRVV = false {ARCH diagnostic} {command line}
openjdk version "25-internal" 2025-09-16
OpenJDK Runtime Environment (build 25-internal-adhoc.zhangdingli.jdk)
OpenJDK 64-Bit Server VM (build 25-internal-adhoc.zhangdingli.jdk, mixed mode)

$ ./java -XX:+UnlockDiagnosticVMOptions -XX:+UseRVV -Xlog:os=info -version
[0.024s][info][os] Use of CLOCK_MONOTONIC is supported
[0.026s][info][os] Use of pthread_condattr_setclock is supported
[0.026s][info][os] Relative timed-wait using pthread_cond_timedwait is associated with CLOCK_MONOTONIC
[0.027s][info][os] HotSpot is running with glibc 2.39, NPTL 2.39
[0.027s][info][os] Glibc stack size guard page adjustment is not needed
[0.029s][info][os] SafePoint Polling address, bad (protected) page:0x00007ff8a7349000, good (unprotected) page:0x00007ff8a734a000
[0.044s][info][os] attempting shared library load of /home/ubuntu/jdk-rvv-before/lib/libjava.so
[0.047s][info][os] shared library load of /home/ubuntu/jdk-rvv-before/lib/libjava.so was successful
[0.052s][info][os] Linux kernels before 6.8.5 (current 6.8.0) have a known bug when using Vector and signals.
[0.052s][info][os] Vector not enabled automatically via hwprobe, but can be turned on with -XX:+UseRVV.
OpenJDK 64-Bit Server VM warning: RVV is not supported on this CPU
[0.748s][info][os] Initialized VM with process ID 33279
openjdk version "25-internal" 2025-09-16
OpenJDK Runtime Environment (build 25-internal-adhoc.zhangdingli.jdk)
OpenJDK 64-Bit Server VM (build 25-internal-adhoc.zhangdingli.jdk, mixed mode)


Testing on QEMU after this PR:

$ uname -a
Linux ubuntu 6.8.0-52-generic #53.1-Ubuntu SMP PREEMPT_DYNAMIC Sun Jan 26 04:38:25 UTC 2025 riscv64 riscv64 riscv64 GNU/Linux

$ ./java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -version | grep UseRVV
     bool UseRVV                                   = false                             {ARCH diagnostic} {default}
openjdk version "25-internal" 2025-09-16
OpenJDK Runtime Environment (build 25-internal-adhoc.zhangdingli.jdk)
OpenJDK 64-Bit Server VM (build 25-internal-adhoc.zhangdingli.jdk, mixed mode)

$ ./java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UseRVV -version | grep UseRVV
     bool UseRVV                                   = true                              {ARCH diagnostic} {command line}
openjdk version "25-internal" 2025-09-16
OpenJDK Runtime Environment (build 25-internal-adhoc.zhangdingli.jdk)
OpenJDK 64-Bit Server VM (build 25-internal-adhoc.zhangdingli.jdk, mixed mode)


In addition, manual tested 6.11 as expected.

-------------

Commit messages:
 - 8352673: RISC-V: Vector can't be turned on with -XX:+UseRVV

Changes: https://git.openjdk.org/jdk/pull/24182/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24182&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8352673
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/24182.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24182/head:pull/24182

PR: https://git.openjdk.org/jdk/pull/24182


More information about the hotspot-runtime-dev mailing list