selftests/powerpc: Add a test of spectre_v2 mitigations
This test uses the PMU to count branch prediction hits/misses for a
known loop, and compare the result to the reported spectre v2
mitigation.
This gives us a way of sanity checking that the reported mitigation is
actually in effect.
Sample output for some cases, eg:
Power9:
sysfs reports: 'Vulnerable'
PM_BR_PRED_CCACHE: result 368 running/enabled
5792777124
PM_BR_MPRED_CCACHE: result 319 running/enabled
5792775546
PM_BR_PRED_PCACHE: result
2147483281 running/enabled
5792773128
PM_BR_MPRED_PCACHE: result
213604201 running/enabled
5792771640
Miss percent 9 %
OK - Measured branch prediction rates match reported spectre v2 mitigation.
sysfs reports: 'Mitigation: Indirect branch serialisation (kernel only)'
PM_BR_PRED_CCACHE: result 895 running/enabled
5780320920
PM_BR_MPRED_CCACHE: result 822 running/enabled
5780312414
PM_BR_PRED_PCACHE: result
2147482754 running/enabled
5780308836
PM_BR_MPRED_PCACHE: result
213639731 running/enabled
5780307912
Miss percent 9 %
OK - Measured branch prediction rates match reported spectre v2 mitigation.
sysfs reports: 'Mitigation: Indirect branch cache disabled'
PM_BR_PRED_CCACHE: result
2147483649 running/enabled
20540186160
PM_BR_MPRED_CCACHE: result
2147483649 running/enabled
20540180056
PM_BR_PRED_PCACHE: result 0 running/enabled
20540176090
PM_BR_MPRED_PCACHE: result 0 running/enabled
20540174182
Miss percent 100 %
OK - Measured branch prediction rates match reported spectre v2 mitigation.
Power8:
sysfs reports: 'Vulnerable'
PM_BR_PRED_CCACHE: result
2147483649 running/enabled
3505888142
PM_BR_MPRED_CCACHE: result 9 running/enabled
3505882788
Miss percent 0 %
OK - Measured branch prediction rates match reported spectre v2 mitigation.
sysfs reports: 'Mitigation: Indirect branch cache disabled'
PM_BR_PRED_CCACHE: result
2147483649 running/enabled
16931421988
PM_BR_MPRED_CCACHE: result
2147483649 running/enabled
16931416478
Miss percent 100 %
OK - Measured branch prediction rates match reported spectre v2 mitigation.
success: spectre_v2
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20190520105520.22274-1-mpe@ellerman.id.au