This series updates crc_kunit to use the same interrupt context testing strategy that I used in the crypto KUnit tests. I.e., test CRC computation in hardirq, softirq, and task context concurrently. This detect issues related to use of the FPU/SIMD/vector registers.
To allow lib/crc/tests/ and lib/crypto/tests/ to share code, move the needed helper function to include/kunit/run-in-irq-context.h. include/kunit/ seems like the most relevant location for this sort of thing, but let me know if there is any other preference.
The third patch replaces the calls to crypto_simd_usable() in lib/crc/ with calls to the underlying functions, now that we have a better solution that doesn't rely on the test injecting values. (Note that crc_kunit wasn't actually using the injection solution, anyway.)
I'd like to take this series via crc-next.
Eric Biggers (3): kunit, lib/crypto: Move run_irq_test() to common header lib/crc: crc_kunit: Test CRC computation in interrupt contexts lib/crc: Use underlying functions instead of crypto_simd_usable()
include/kunit/run-in-irq-context.h | 129 ++++++++++++++++++++++++++ lib/crc/arm/crc-t10dif.h | 6 +- lib/crc/arm/crc32.h | 6 +- lib/crc/arm64/crc-t10dif.h | 6 +- lib/crc/arm64/crc32.h | 11 ++- lib/crc/powerpc/crc-t10dif.h | 5 +- lib/crc/powerpc/crc32.h | 5 +- lib/crc/tests/crc_kunit.c | 62 +++++++++++-- lib/crc/x86/crc-pclmul-template.h | 3 +- lib/crc/x86/crc32.h | 2 +- lib/crypto/tests/hash-test-template.h | 123 +----------------------- 11 files changed, 206 insertions(+), 152 deletions(-) create mode 100644 include/kunit/run-in-irq-context.h
base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585