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.
