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