From 97e9a61fd5631985232923cff83b2ddc0ca476c0 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 5 Oct 2018 03:13:30 +0200 Subject: crypto: test all SIMD combinations --- src/crypto/zinc/poly1305/poly1305-arm-glue.c | 1 + src/crypto/zinc/poly1305/poly1305-mips-glue.c | 1 + src/crypto/zinc/poly1305/poly1305-x86_64-glue.c | 2 ++ src/crypto/zinc/poly1305/poly1305.c | 7 ++++--- 4 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src/crypto/zinc/poly1305') diff --git a/src/crypto/zinc/poly1305/poly1305-arm-glue.c b/src/crypto/zinc/poly1305/poly1305-arm-glue.c index f91066f..f4f08ec 100644 --- a/src/crypto/zinc/poly1305/poly1305-arm-glue.c +++ b/src/crypto/zinc/poly1305/poly1305-arm-glue.c @@ -15,6 +15,7 @@ asmlinkage void poly1305_blocks_neon(void *ctx, const u8 *inp, const size_t len, asmlinkage void poly1305_emit_neon(void *ctx, u8 mac[16], const u32 nonce[4]); static bool poly1305_use_neon __ro_after_init; +static bool *const poly1305_nobs[] __initconst = { &poly1305_use_neon }; static void __init poly1305_fpu_init(void) { diff --git a/src/crypto/zinc/poly1305/poly1305-mips-glue.c b/src/crypto/zinc/poly1305/poly1305-mips-glue.c index 3a72d61..1eba951 100644 --- a/src/crypto/zinc/poly1305/poly1305-mips-glue.c +++ b/src/crypto/zinc/poly1305/poly1305-mips-glue.c @@ -8,6 +8,7 @@ asmlinkage void poly1305_blocks_mips(void *ctx, const u8 *inp, const size_t len, const u32 padbit); asmlinkage void poly1305_emit_mips(void *ctx, u8 mac[16], const u32 nonce[4]); +static bool *const poly1305_nobs[] __initconst = { }; static void __init poly1305_fpu_init(void) { } diff --git a/src/crypto/zinc/poly1305/poly1305-x86_64-glue.c b/src/crypto/zinc/poly1305/poly1305-x86_64-glue.c index 3641dc8..0229aca 100644 --- a/src/crypto/zinc/poly1305/poly1305-x86_64-glue.c +++ b/src/crypto/zinc/poly1305/poly1305-x86_64-glue.c @@ -25,6 +25,8 @@ asmlinkage void poly1305_blocks_avx512(void *ctx, const u8 *inp, static bool poly1305_use_avx __ro_after_init; static bool poly1305_use_avx2 __ro_after_init; static bool poly1305_use_avx512 __ro_after_init; +static bool *const poly1305_nobs[] __initconst = { + &poly1305_use_avx, &poly1305_use_avx2, &poly1305_use_avx512 }; static void __init poly1305_fpu_init(void) { diff --git a/src/crypto/zinc/poly1305/poly1305.c b/src/crypto/zinc/poly1305/poly1305.c index 88f94cd..6da8bf1 100644 --- a/src/crypto/zinc/poly1305/poly1305.c +++ b/src/crypto/zinc/poly1305/poly1305.c @@ -8,6 +8,7 @@ */ #include +#include "../selftest/run.h" #include #include @@ -39,6 +40,7 @@ static inline bool poly1305_emit_arch(void *ctx, u8 mac[POLY1305_MAC_SIZE], { return false; } +static bool *const poly1305_nobs[] __initconst = { }; static void __init poly1305_fpu_init(void) { } @@ -146,10 +148,9 @@ static int __init mod_init(void) { if (!nosimd) poly1305_fpu_init(); -#ifdef CONFIG_ZINC_SELFTEST - if (WARN_ON(!poly1305_selftest())) + if (!selftest_run("poly1305", poly1305_selftest, poly1305_nobs, + ARRAY_SIZE(poly1305_nobs))) return -ENOTRECOVERABLE; -#endif return 0; } -- cgit v1.2.3-59-g8ed1b