101 lines
3.1 KiB
Plaintext
101 lines
3.1 KiB
Plaintext
|
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.
|