diff options
Diffstat (limited to 'results/classifier/118/architecture-risc-v')
| -rw-r--r-- | results/classifier/118/architecture-risc-v/1260 | 61 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/1915027 | 74 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/1923629 | 98 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/1945 | 61 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/2166 | 61 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/2952 | 74 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/435 | 61 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/493 | 67 | ||||
| -rw-r--r-- | results/classifier/118/architecture-risc-v/783 | 63 |
9 files changed, 620 insertions, 0 deletions
diff --git a/results/classifier/118/architecture-risc-v/1260 b/results/classifier/118/architecture-risc-v/1260 new file mode 100644 index 000000000..2cef4e76c --- /dev/null +++ b/results/classifier/118/architecture-risc-v/1260 @@ -0,0 +1,61 @@ +risc-v: 0.976 +architecture: 0.957 +device: 0.771 +register: 0.697 +debug: 0.617 +graphic: 0.468 +performance: 0.465 +network: 0.436 +arm: 0.372 +mistranslation: 0.230 +semantic: 0.221 +vnc: 0.102 +virtual: 0.095 +hypervisor: 0.093 +ppc: 0.091 +peripherals: 0.086 +kernel: 0.084 +boot: 0.084 +user-level: 0.044 +TCG: 0.034 +PID: 0.034 +i386: 0.027 +permissions: 0.024 +VMM: 0.021 +assembly: 0.019 +x86: 0.018 +KVM: 0.009 +socket: 0.007 +files: 0.005 +-------------------- +risc-v: 0.991 +debug: 0.973 +register: 0.969 +virtual: 0.642 +user-level: 0.434 +assembly: 0.175 +hypervisor: 0.087 +architecture: 0.050 +semantic: 0.036 +kernel: 0.034 +files: 0.030 +TCG: 0.026 +performance: 0.020 +VMM: 0.010 +peripherals: 0.007 +device: 0.006 +PID: 0.005 +KVM: 0.004 +boot: 0.004 +graphic: 0.002 +socket: 0.001 +mistranslation: 0.001 +vnc: 0.001 +arm: 0.000 +permissions: 0.000 +network: 0.000 +ppc: 0.000 +i386: 0.000 +x86: 0.000 + +RISC-V sstatus register is missing in qemu console / gdb diff --git a/results/classifier/118/architecture-risc-v/1915027 b/results/classifier/118/architecture-risc-v/1915027 new file mode 100644 index 000000000..c487cb658 --- /dev/null +++ b/results/classifier/118/architecture-risc-v/1915027 @@ -0,0 +1,74 @@ +architecture: 0.952 +risc-v: 0.916 +assembly: 0.781 +graphic: 0.759 +performance: 0.649 +device: 0.634 +semantic: 0.632 +mistranslation: 0.442 +permissions: 0.288 +vnc: 0.284 +debug: 0.274 +register: 0.245 +virtual: 0.240 +user-level: 0.209 +ppc: 0.207 +network: 0.181 +peripherals: 0.174 +arm: 0.148 +boot: 0.140 +PID: 0.138 +kernel: 0.133 +socket: 0.116 +x86: 0.109 +TCG: 0.107 +VMM: 0.089 +files: 0.081 +hypervisor: 0.070 +i386: 0.054 +KVM: 0.044 +-------------------- +risc-v: 0.998 +debug: 0.831 +virtual: 0.450 +performance: 0.070 +register: 0.067 +assembly: 0.067 +architecture: 0.021 +hypervisor: 0.020 +boot: 0.015 +semantic: 0.005 +TCG: 0.004 +PID: 0.004 +files: 0.003 +user-level: 0.003 +kernel: 0.002 +device: 0.002 +socket: 0.001 +KVM: 0.001 +network: 0.001 +graphic: 0.001 +permissions: 0.001 +VMM: 0.000 +peripherals: 0.000 +vnc: 0.000 +mistranslation: 0.000 +arm: 0.000 +x86: 0.000 +i386: 0.000 +ppc: 0.000 + +RISC-V 64, CPUs do ilegal 0x00 write with SMP + +When QEMU is runt like this: + +qemu-system-riscv64 -d unimp,guest_errors -smp 8 + +Other harts will do a illegal write on address 0x00. + +This could be mostly (i think) because the initial assembly code is only loaded on the first hart and the others do a mess because there is no code to execute. + +Even with -smp 1 you will see the same errors. The problem is because there is nothing to run after OpenSBI jumps to the next stage. + +If you load a kernel you will not see the error messages. + diff --git a/results/classifier/118/architecture-risc-v/1923629 b/results/classifier/118/architecture-risc-v/1923629 new file mode 100644 index 000000000..cc32274c4 --- /dev/null +++ b/results/classifier/118/architecture-risc-v/1923629 @@ -0,0 +1,98 @@ +risc-v: 0.953 +architecture: 0.878 +performance: 0.868 +graphic: 0.795 +user-level: 0.783 +device: 0.773 +files: 0.738 +network: 0.736 +socket: 0.730 +mistranslation: 0.690 +virtual: 0.677 +debug: 0.660 +semantic: 0.652 +hypervisor: 0.637 +ppc: 0.633 +kernel: 0.632 +PID: 0.629 +VMM: 0.610 +x86: 0.595 +boot: 0.569 +permissions: 0.563 +arm: 0.561 +register: 0.509 +TCG: 0.506 +peripherals: 0.501 +vnc: 0.496 +assembly: 0.459 +i386: 0.437 +KVM: 0.396 +-------------------- +risc-v: 0.875 +debug: 0.300 +assembly: 0.250 +performance: 0.091 +files: 0.050 +architecture: 0.044 +TCG: 0.023 +PID: 0.014 +virtual: 0.011 +hypervisor: 0.007 +semantic: 0.007 +user-level: 0.004 +register: 0.004 +kernel: 0.004 +VMM: 0.002 +network: 0.002 +device: 0.002 +vnc: 0.001 +boot: 0.001 +permissions: 0.001 +graphic: 0.001 +socket: 0.001 +peripherals: 0.001 +mistranslation: 0.000 +KVM: 0.000 +arm: 0.000 +ppc: 0.000 +i386: 0.000 +x86: 0.000 + +RISC-V Vector Instruction vssub.vv not saturating + +I noticed doing a negate ( 0 – 0x80000000 ) using vssub.vv produces an incorrect result of 0x80000000 (should saturate to 0x7FFFFFFF). + +Here is the bit of the code: + + vmv.v.i v16, 0 + … +8f040457 vssub.vv v8,v16,v8 + +I believe the instruction encoding is correct (vssub.vv with vd = v8, vs2 = v16, rs1 = v8), but the result does not saturate in QEMU. + +I’ve just tested with what I think is the latest branch ( https://github.com/sifive/qemu/tree/rvv-1.0-upstream-v7 commit 26 Feb 2021: 1151361fa7d45cc90d69086ccf1a4d8397931811 ) and the problem still exists. + +Thanks for raising this bug case. A fix should be available soon. + +This should be a quick fix, we will run couple tests again to ensure the fix doesn't break anything. Thanks~ + +This was fixed by commit: + +commit 65606f21243a796537bfe4708720a9bf4bb50169 +Author: LIU Zhiwei <email address hidden> +Date: Fri Feb 12 23:02:21 2021 +0800 + + target/riscv: Fixup saturate subtract function + + The overflow predication ((a - b) ^ a) & (a ^ b) & INT64_MIN is right. + However, when the predication is ture and a is 0, it should return maximum. + + Signed-off-by: LIU Zhiwei <email address hidden> + Reviewed-by: Richard Henderson <email address hidden> + Reviewed-by: Alistair Francis <email address hidden> + Message-id: <email address hidden> + Signed-off-by: Alistair Francis <email address hidden> + + +The fix will be in the QEMU 6.1 release. + diff --git a/results/classifier/118/architecture-risc-v/1945 b/results/classifier/118/architecture-risc-v/1945 new file mode 100644 index 000000000..fc01bd3e7 --- /dev/null +++ b/results/classifier/118/architecture-risc-v/1945 @@ -0,0 +1,61 @@ +architecture: 0.977 +virtual: 0.920 +risc-v: 0.885 +performance: 0.859 +device: 0.529 +semantic: 0.493 +graphic: 0.464 +mistranslation: 0.450 +permissions: 0.389 +boot: 0.283 +vnc: 0.281 +VMM: 0.225 +network: 0.198 +arm: 0.176 +hypervisor: 0.171 +register: 0.167 +assembly: 0.160 +x86: 0.150 +KVM: 0.141 +socket: 0.140 +kernel: 0.132 +TCG: 0.124 +PID: 0.093 +ppc: 0.091 +debug: 0.081 +i386: 0.051 +peripherals: 0.042 +user-level: 0.040 +files: 0.028 +-------------------- +risc-v: 0.992 +hypervisor: 0.952 +virtual: 0.896 +architecture: 0.854 +VMM: 0.669 +performance: 0.598 +semantic: 0.054 +KVM: 0.040 +device: 0.039 +kernel: 0.022 +register: 0.016 +TCG: 0.013 +assembly: 0.009 +files: 0.004 +PID: 0.003 +socket: 0.002 +user-level: 0.002 +graphic: 0.002 +boot: 0.001 +vnc: 0.001 +peripherals: 0.001 +mistranslation: 0.001 +debug: 0.001 +arm: 0.000 +ppc: 0.000 +network: 0.000 +permissions: 0.000 +i386: 0.000 +x86: 0.000 + +More than 8 cores for RISC-V generic `virt` machine diff --git a/results/classifier/118/architecture-risc-v/2166 b/results/classifier/118/architecture-risc-v/2166 new file mode 100644 index 000000000..6d3eda5b8 --- /dev/null +++ b/results/classifier/118/architecture-risc-v/2166 @@ -0,0 +1,61 @@ +risc-v: 0.964 +architecture: 0.886 +device: 0.842 +debug: 0.796 +network: 0.480 +performance: 0.428 +register: 0.317 +virtual: 0.306 +arm: 0.302 +boot: 0.286 +graphic: 0.283 +VMM: 0.258 +PID: 0.243 +peripherals: 0.163 +files: 0.161 +semantic: 0.147 +vnc: 0.123 +socket: 0.060 +permissions: 0.058 +mistranslation: 0.057 +hypervisor: 0.038 +user-level: 0.024 +TCG: 0.022 +ppc: 0.017 +assembly: 0.012 +i386: 0.011 +x86: 0.007 +kernel: 0.003 +KVM: 0.001 +-------------------- +risc-v: 0.995 +hypervisor: 0.935 +debug: 0.925 +architecture: 0.181 +register: 0.045 +user-level: 0.044 +TCG: 0.036 +assembly: 0.030 +kernel: 0.027 +virtual: 0.024 +semantic: 0.018 +VMM: 0.014 +files: 0.011 +performance: 0.009 +device: 0.005 +PID: 0.005 +KVM: 0.002 +boot: 0.002 +peripherals: 0.002 +graphic: 0.001 +mistranslation: 0.001 +network: 0.001 +socket: 0.001 +vnc: 0.001 +permissions: 0.000 +arm: 0.000 +i386: 0.000 +ppc: 0.000 +x86: 0.000 + +RISC-V qemu has bug on the return value of function qemu_plugin_mem_size_shift() diff --git a/results/classifier/118/architecture-risc-v/2952 b/results/classifier/118/architecture-risc-v/2952 new file mode 100644 index 000000000..3a2e4aab5 --- /dev/null +++ b/results/classifier/118/architecture-risc-v/2952 @@ -0,0 +1,74 @@ +risc-v: 0.943 +files: 0.845 +graphic: 0.841 +architecture: 0.819 +device: 0.814 +register: 0.793 +vnc: 0.713 +socket: 0.564 +kernel: 0.500 +performance: 0.468 +semantic: 0.466 +ppc: 0.439 +network: 0.418 +boot: 0.404 +permissions: 0.394 +TCG: 0.354 +assembly: 0.323 +debug: 0.318 +PID: 0.303 +arm: 0.271 +mistranslation: 0.257 +VMM: 0.231 +virtual: 0.171 +user-level: 0.150 +peripherals: 0.109 +hypervisor: 0.063 +KVM: 0.037 +i386: 0.022 +x86: 0.009 +-------------------- +risc-v: 0.966 +register: 0.860 +assembly: 0.609 +debug: 0.461 +TCG: 0.350 +virtual: 0.063 +user-level: 0.062 +files: 0.055 +semantic: 0.021 +kernel: 0.018 +hypervisor: 0.015 +architecture: 0.009 +device: 0.008 +performance: 0.008 +peripherals: 0.006 +VMM: 0.006 +PID: 0.004 +boot: 0.003 +graphic: 0.003 +network: 0.002 +socket: 0.001 +KVM: 0.001 +permissions: 0.001 +vnc: 0.001 +mistranslation: 0.001 +arm: 0.000 +i386: 0.000 +ppc: 0.000 +x86: 0.000 + +Truncated bits while writing value to registers of RISC-V +Description of problem: +As mentioned above +Steps to reproduce: +``` +# 1. Compile the `test.S`: +riscv32-unknown-linux-gnu-gcc -g -static -nostartfiles -o test hello.S + +# 2. Execute the binary: +qemu-riscv32 ./test + +# 3. Check exit code +echo $? +``` diff --git a/results/classifier/118/architecture-risc-v/435 b/results/classifier/118/architecture-risc-v/435 new file mode 100644 index 000000000..82a3d91af --- /dev/null +++ b/results/classifier/118/architecture-risc-v/435 @@ -0,0 +1,61 @@ +architecture: 0.988 +risc-v: 0.958 +virtual: 0.798 +mistranslation: 0.733 +performance: 0.690 +device: 0.634 +semantic: 0.582 +graphic: 0.280 +boot: 0.279 +register: 0.261 +x86: 0.237 +vnc: 0.228 +network: 0.169 +arm: 0.148 +kernel: 0.144 +debug: 0.136 +socket: 0.134 +hypervisor: 0.125 +ppc: 0.115 +permissions: 0.112 +i386: 0.101 +PID: 0.086 +assembly: 0.077 +user-level: 0.051 +KVM: 0.044 +TCG: 0.043 +files: 0.034 +VMM: 0.033 +peripherals: 0.022 +-------------------- +risc-v: 0.997 +architecture: 0.974 +register: 0.245 +virtual: 0.172 +kernel: 0.094 +files: 0.034 +assembly: 0.033 +TCG: 0.030 +semantic: 0.024 +performance: 0.022 +device: 0.016 +peripherals: 0.013 +VMM: 0.011 +PID: 0.006 +boot: 0.006 +user-level: 0.005 +socket: 0.005 +hypervisor: 0.004 +permissions: 0.004 +debug: 0.003 +graphic: 0.003 +vnc: 0.002 +arm: 0.001 +network: 0.001 +KVM: 0.001 +mistranslation: 0.000 +ppc: 0.000 +i386: 0.000 +x86: 0.000 + +RISC-V: Support more cores diff --git a/results/classifier/118/architecture-risc-v/493 b/results/classifier/118/architecture-risc-v/493 new file mode 100644 index 000000000..21e555eaf --- /dev/null +++ b/results/classifier/118/architecture-risc-v/493 @@ -0,0 +1,67 @@ +risc-v: 0.995 +architecture: 0.955 +graphic: 0.849 +device: 0.810 +performance: 0.696 +semantic: 0.644 +files: 0.588 +kernel: 0.547 +register: 0.533 +vnc: 0.466 +socket: 0.369 +mistranslation: 0.368 +network: 0.353 +debug: 0.295 +boot: 0.272 +VMM: 0.271 +arm: 0.242 +permissions: 0.230 +peripherals: 0.215 +PID: 0.206 +ppc: 0.193 +TCG: 0.157 +user-level: 0.146 +assembly: 0.130 +hypervisor: 0.121 +virtual: 0.099 +i386: 0.079 +KVM: 0.064 +x86: 0.016 +-------------------- +risc-v: 0.998 +performance: 0.905 +kernel: 0.184 +register: 0.116 +TCG: 0.113 +debug: 0.104 +files: 0.080 +hypervisor: 0.038 +assembly: 0.032 +architecture: 0.029 +device: 0.021 +virtual: 0.015 +semantic: 0.008 +peripherals: 0.007 +user-level: 0.005 +vnc: 0.003 +PID: 0.003 +network: 0.002 +KVM: 0.002 +boot: 0.002 +VMM: 0.002 +arm: 0.001 +socket: 0.001 +graphic: 0.001 +permissions: 0.001 +mistranslation: 0.000 +i386: 0.000 +ppc: 0.000 +x86: 0.000 + +RISC-V: Setting mtimecmp to -1 immediately triggers an interrupt +Description of problem: +When setting mtimecmp to -1, which should set a timer infinitely far in the future, a timer interrupt is triggered immediately. This happens for most values over 2^61. It is the same for both 32-bit and 64-bit, and for M-mode writing to mtimecmp directly and S-mode using OpenSBI. + +I have looked through the source code, and the problem is in the function `sifive_clint_write_mtimecmp`, in the file `/hw/intc/sifive_clint.c`. First, the muldiv64 multiplies diff with 100, causing an overflow (at least for -M virt, other machines might use a different timebase_freq). Then, the unsigned `next` is passed to `timer_mod`, which takes a signed integer. In `timer_mod_ns_locked` the value is set to `MAX(next, 0)`, which means that if the MSB of `next` was set, the interrupt happens immediately. This means that it is impossible to set timers more than 2^63 nanoseconds in the future. + +This problem basically only affects programs which disable timer interrupts by setting the next one infinitely far in the future. However, the SBI doc specifically says that this is a valid approach, so it should be supported. Using the MSB doesn't work without changing code functionality in QEMU, but it should be sufficient to cap `next` at the maximum signed value. diff --git a/results/classifier/118/architecture-risc-v/783 b/results/classifier/118/architecture-risc-v/783 new file mode 100644 index 000000000..581891f04 --- /dev/null +++ b/results/classifier/118/architecture-risc-v/783 @@ -0,0 +1,63 @@ +risc-v: 0.997 +architecture: 0.869 +performance: 0.769 +device: 0.767 +mistranslation: 0.569 +virtual: 0.492 +i386: 0.483 +graphic: 0.370 +x86: 0.369 +semantic: 0.368 +arm: 0.278 +boot: 0.173 +debug: 0.164 +permissions: 0.153 +register: 0.151 +kernel: 0.129 +hypervisor: 0.127 +user-level: 0.123 +network: 0.121 +ppc: 0.121 +vnc: 0.109 +KVM: 0.061 +TCG: 0.054 +files: 0.038 +PID: 0.033 +assembly: 0.031 +socket: 0.025 +peripherals: 0.018 +VMM: 0.011 +-------------------- +risc-v: 0.997 +assembly: 0.509 +virtual: 0.175 +architecture: 0.169 +kernel: 0.130 +hypervisor: 0.102 +device: 0.075 +register: 0.035 +x86: 0.028 +boot: 0.018 +files: 0.017 +socket: 0.017 +debug: 0.014 +semantic: 0.013 +TCG: 0.010 +PID: 0.009 +performance: 0.007 +user-level: 0.007 +i386: 0.006 +ppc: 0.005 +arm: 0.004 +KVM: 0.004 +peripherals: 0.004 +permissions: 0.003 +VMM: 0.002 +vnc: 0.001 +graphic: 0.001 +network: 0.001 +mistranslation: 0.001 + +risc-v: provide CPU without MMU +Additional information: + |