| 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. |