cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

README (3158B)


      1This directory contains a mix of tests integrated with kselftest and
      2standalone stress tests.
      3
      4kselftest tests
      5===============
      6
      7sve-probe-vls - Checks the SVE vector length enumeration interface
      8sve-ptrace - Checks the SVE ptrace interface
      9
     10Running the non-kselftest tests
     11===============================
     12
     13sve-stress performs an SVE context switch stress test, as described
     14below.
     15
     16(The fpsimd-stress test works the same way; just substitute "fpsimd" for
     17"sve" in the following commands.)
     18
     19
     20The test runs until killed by the user.
     21
     22If no context switch error was detected, you will see output such as
     23the following:
     24
     25$ ./sve-stress
     26(wait for some time)
     27^C
     28Vector length:        512 bits
     29PID:    1573
     30Terminated by signal 15, no error, iterations=9467, signals=1014
     31Vector length:  512 bits
     32PID:    1575
     33Terminated by signal 15, no error, iterations=9448, signals=1028
     34Vector length:  512 bits
     35PID:    1577
     36Terminated by signal 15, no error, iterations=9436, signals=1039
     37Vector length:  512 bits
     38PID:    1579
     39Terminated by signal 15, no error, iterations=9421, signals=1039
     40Vector length:  512 bits
     41PID:    1581
     42Terminated by signal 15, no error, iterations=9403, signals=1039
     43Vector length:  512 bits
     44PID:    1583
     45Terminated by signal 15, no error, iterations=9385, signals=1036
     46Vector length:  512 bits
     47PID:    1585
     48Terminated by signal 15, no error, iterations=9376, signals=1039
     49Vector length:  512 bits
     50PID:    1587
     51Terminated by signal 15, no error, iterations=9361, signals=1039
     52Vector length:  512 bits
     53PID:    1589
     54Terminated by signal 15, no error, iterations=9350, signals=1039
     55
     56
     57If an error was detected, details of the mismatch will be printed
     58instead of "no error".
     59
     60Ideally, the test should be allowed to run for many minutes or hours
     61to maximise test coverage.
     62
     63
     64KVM stress testing
     65==================
     66
     67To try to reproduce the bugs that we have been observing, sve-stress
     68should be run in parallel in two KVM guests, while simultaneously
     69running on the host.
     70
     711) Start 2 guests, using the following command for each:
     72
     73$ lkvm run --console=virtio -pconsole=hvc0 --sve Image
     74
     75(Depending on the hardware GIC implementation, you may also need
     76--irqchip=gicv3.  New kvmtool defaults to that if appropriate, but I
     77can't remember whether my branch is new enough for that.  Try without
     78the option first.)
     79
     80Kvmtool occupies the terminal until you kill it (Ctrl+A x),
     81or until the guest terminates.  It is therefore recommended to run
     82each instance in separate terminal (use screen or ssh etc.)  This
     83allows multiple guests to be run in parallel while running other
     84commands on the host.
     85
     86Within the guest, the host filesystem is accessible, mounted on /host.
     87
     882) Run the sve-stress on *each* guest with the Vector-Length set to 32:
     89guest$ ./vlset --inherit 32 ./sve-stress
     90
     913) Run the sve-stress on the host with the maximum Vector-Length:
     92host$ ./vlset --inherit --max ./sve-stress
     93
     94
     95Again, the test should be allowed to run for many minutes or hours to
     96maximise test coverage.
     97
     98If no error is detected, you will see output from each sve-stress
     99instance similar to that illustrated above; otherwise details of the
    100observed mismatches will be printed.