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