RFR: 8309258: RISC-V: Add riscv_hwprobe syscall [v2]

Fei Yang fyang at openjdk.org
Wed Jun 14 07:29:03 UTC 2023


On Tue, 13 Jun 2023 12:34:28 GMT, Robbin Ehn <rehn at openjdk.org> wrote:

>> Hi, please consider.
>> 
>> Linux kernel 6.4 will come with the new syscall https://docs.kernel.org/riscv/hwprobe.html to determine CPU and features.
>> RV cpus features/capabilities can vastly differ and it is not feasible for users to manually enable the correct feature set.
>> Today the VM uses the ELF aux vector and cpuinfo to gather some information about CPU capabilities.
>> 
>> Currently features are track with a bit field, this is insufficient.
>> There are many capabilities and these can have values attached to them.
>> CPU features should also be possible to turn if we can determine vendor (hwprobe).
>> 
>> This patchs adds the syscall, uses the syscall in combination with the aux and cpuinfo to enable features by default.
>> If there is a vendor specific path it calls that in addition.
>> Then we build the feature string(and bit field) and update flags accordingly.
>> 
>> Tested t1 and hwprobe with:
>> https://lore.kernel.org/qemu-devel/7f8d733df6e9b6151e9efb843d55441348805e70.camel@rivosinc.com/
>
> Robbin Ehn has updated the pull request incrementally with one additional commit since the last revision:
> 
>   free uarch string

Thanks for the work. Two comments after a cursory look.

src/hotspot/cpu/riscv/vm_version_riscv.hpp line 110:

> 108:   // mvendorid Manufactory JEDEC
> 109:   // marchid   Manufactory prop.
> 110:   // mimpid    Manufactory prop.

I think the code comments for marchid and mimpid could be improved.

src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp line 212:

> 210: }
> 211: 
> 212: void VM_Version::rivos_features() {

It looks to me not safe to only check vendor ID when enabling those features. It's possible for a vendor to have different CPU models equipped different RISC-V extensions. So it's more reasonable to add check for `marchid` & `mimpid` here which helps distinguish Architecture ID & Implementaion ID of the CPU.

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

PR Review: https://git.openjdk.org/jdk/pull/14445#pullrequestreview-1478693181
PR Review Comment: https://git.openjdk.org/jdk/pull/14445#discussion_r1229137539
PR Review Comment: https://git.openjdk.org/jdk/pull/14445#discussion_r1229135234


More information about the hotspot-dev mailing list