| This directory contains a mix of tests integrated with kselftest and |
| standalone stress tests. |
| |
| kselftest tests |
| =============== |
| |
| sve-probe-vls - Checks the SVE vector length enumeration interface |
| sve-ptrace - Checks the SVE ptrace interface |
| |
| Running the non-kselftest tests |
| =============================== |
| |
| sve-stress performs an SVE context switch stress test, as described |
| below. |
| |
| (The fpsimd-stress test works the same way; just substitute "fpsimd" for |
| "sve" in the following commands.) |
| |
| |
| The test runs until killed by the user. |
| |
| If no context switch error was detected, you will see output such as |
| the following: |
| |
| $ ./sve-stress |
| (wait for some time) |
| ^C |
| Vector length: 512 bits |
| PID: 1573 |
| Terminated by signal 15, no error, iterations=9467, signals=1014 |
| Vector length: 512 bits |
| PID: 1575 |
| Terminated by signal 15, no error, iterations=9448, signals=1028 |
| Vector length: 512 bits |
| PID: 1577 |
| Terminated by signal 15, no error, iterations=9436, signals=1039 |
| Vector length: 512 bits |
| PID: 1579 |
| Terminated by signal 15, no error, iterations=9421, signals=1039 |
| Vector length: 512 bits |
| PID: 1581 |
| Terminated by signal 15, no error, iterations=9403, signals=1039 |
| Vector length: 512 bits |
| PID: 1583 |
| Terminated by signal 15, no error, iterations=9385, signals=1036 |
| Vector length: 512 bits |
| PID: 1585 |
| Terminated by signal 15, no error, iterations=9376, signals=1039 |
| Vector length: 512 bits |
| PID: 1587 |
| Terminated by signal 15, no error, iterations=9361, signals=1039 |
| Vector length: 512 bits |
| PID: 1589 |
| Terminated by signal 15, no error, iterations=9350, signals=1039 |
| |
| |
| If an error was detected, details of the mismatch will be printed |
| instead of "no error". |
| |
| Ideally, the test should be allowed to run for many minutes or hours |
| to maximise test coverage. |
| |
| |
| KVM stress testing |
| ================== |
| |
| To try to reproduce the bugs that we have been observing, sve-stress |
| should be run in parallel in two KVM guests, while simultaneously |
| running on the host. |
| |
| 1) Start 2 guests, using the following command for each: |
| |
| $ lkvm run --console=virtio -pconsole=hvc0 --sve Image |
| |
| (Depending on the hardware GIC implementation, you may also need |
| --irqchip=gicv3. New kvmtool defaults to that if appropriate, but I |
| can't remember whether my branch is new enough for that. Try without |
| the option first.) |
| |
| Kvmtool occupies the terminal until you kill it (Ctrl+A x), |
| or until the guest terminates. It is therefore recommended to run |
| each instance in separate terminal (use screen or ssh etc.) This |
| allows multiple guests to be run in parallel while running other |
| commands on the host. |
| |
| Within the guest, the host filesystem is accessible, mounted on /host. |
| |
| 2) Run the sve-stress on *each* guest with the Vector-Length set to 32: |
| guest$ ./vlset --inherit 32 ./sve-stress |
| |
| 3) Run the sve-stress on the host with the maximum Vector-Length: |
| host$ ./vlset --inherit --max ./sve-stress |
| |
| |
| Again, the test should be allowed to run for many minutes or hours to |
| maximise test coverage. |
| |
| If no error is detected, you will see output from each sve-stress |
| instance similar to that illustrated above; otherwise details of the |
| observed mismatches will be printed. |