On Mon, 31 Mar 2025 10:45:54 GMT, Robbin Ehn <r...@openjdk.org> wrote:

>> Hi, for you to consider.
>> 
>> These tests constantly fails in qemu-user.
>> Either the require host to be same arch explicit or implicit (sysroot).
>> E.g. "ptrace(PTRACE_ATTACH, ..) failed for 405157: Function not 
>> implemented'" for SA tests.
>> 
>> From bug:
>>> qemu-user/rv64 sets uarch to "qemu" in /proc/cpuinfo (qemu-system do not do 
>>> that).
>>> We add this uarch to CPU feature string.
>>> This means we can use jtreg 'require' with cpu string to filter out tests 
>>> in qemu-user.
>> 
>> Relevant qemu code:
>> https://github.com/qemu/qemu/blob/170825d14d88a1ce7fae98d5a928480f2f329b22/linux-user/riscv/target_proc.h#L29
>> 
>> Relevant hotspot code:
>> https://github.com/openjdk/jdk/blob/fa0b18bfde38ee2ffbab33a9eaac547fe8aa3c7c/src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp#L250
>> 
>> Tested that the require only filters out tests in qemu+riscv64.
>> 
>> Thanks!
>> 
>> /Robbin
>
> Robbin Ehn has updated the pull request with a new target base due to a merge 
> or a rebase. The incremental webrev excludes the unrelated changes brought in 
> by the merge/rebase. The pull request contains seven additional commits since 
> the last revision:
> 
>  - Merge branch 'master' into qemu-user-issues
>  - Revert
>  - Merge branch 'master' into qemu-user-issues
>  - Merge branch 'master' into qemu-user-issues
>  - more
>  - more
>  - native or very long

> qemu-user, "uarch: qemu" in cpuinfo: `[0.084s][info ][os,cpu] CPU: total 28 
> (initial active 28) qemu rv64 rvi rvm rva rvf rvd rvc rvv zba zbb zbs zfh 
> zfhmin zvbc zvfh zicond` Hence we know this is qemu-user (only qemu-user sets 
> uarch to qemu on riscv).
> 
> `/proc/cpuinfo` do not contain uarch: [0.053s][info ][os,cpu] CPU: total 8 
> (initial active 8) rv64 rvi rvm rva rvf rvd rvc zba zbb zbs zfh zfhmin zvfh 
> zicond We have no clue if this is emulated or on real hardware, tests will be 
> executed.
> 
> Tests are only excluded if we know it's qemu-user.


> qemu-user, "uarch: qemu" in cpuinfo: `[0.084s][info ][os,cpu] CPU: total 28 
> (initial active 28) qemu rv64 rvi rvm rva rvf rvd rvc rvv zba zbb zbs zfh 
> zfhmin zvbc zvfh zicond` Hence we know this is qemu-user (only qemu-user sets 
> uarch to qemu on riscv).
> 
> `/proc/cpuinfo` do not contain uarch: [0.053s][info ][os,cpu] CPU: total 8 
> (initial active 8) rv64 rvi rvm rva rvf rvd rvc zba zbb zbs zfh zfhmin zvfh 
> zicond We have no clue if this is emulated or on real hardware, tests will be 
> executed.
> 
> Tests are only excluded if we know it's qemu-user.

Sorry for not being clear enough. Yes, that's how it works with qemu-user for 
riscv.
Just wondering if it makes sense to extend this to other CPU platforms. There 
are two cases.
- Case 1: The tests are excluded as expected if we parses "qemu" in cpuinfo 
with qemu-user for another CPU, which is simiar with qemu-user for riscv. But I 
am not sure if there is one for now.
- Case 2: The tests are NOT excluded as there's no "qemu" in cpuinfo with 
qemu-user for another CPU. Then we still got test failures as before. But we 
are not causing any more regressions. I may consider that as a qemu-user issue 
for this CPU. And it could be fixed on the qemu-user side if it really helps 
people.

Maybe I am demanding too much about qemu-user. What do you think?

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

PR Comment: https://git.openjdk.org/jdk/pull/24229#issuecomment-2791376594

Reply via email to