Apply Crypto API wrappers to the exported crypto symbol in CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64-related crypto to convert them into pluggable interface.
Signed-off-by: Jay Wang <[email protected]> --- arch/x86/crypto/Makefile | 2 +- arch/x86/crypto/aria-avx.h | 34 +++++++++++++++----------- arch/x86/crypto/aria_aesni_avx2_glue.c | 4 +-- arch/x86/crypto/fips140/fips140-api.c | 18 ++++++++++++++ 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/arch/x86/crypto/Makefile b/arch/x86/crypto/Makefile index bda4e9cd5e2c..28ed31e7d6e3 100644 --- a/arch/x86/crypto/Makefile +++ b/arch/x86/crypto/Makefile @@ -65,7 +65,7 @@ sm4-aesni-avx2-x86_64-y := sm4-aesni-avx2-asm_64.o sm4_aesni_avx2_glue.o crypto-objs-$(CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64) += aria-aesni-avx-x86_64.o aria-aesni-avx-x86_64-y := aria-aesni-avx-asm_64.o aria_aesni_avx_glue.o -obj-$(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64) += aria-aesni-avx2-x86_64.o +crypto-objs-$(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64) += aria-aesni-avx2-x86_64.o aria-aesni-avx2-x86_64-y := aria-aesni-avx2-asm_64.o aria_aesni_avx2_glue.o obj-$(CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64) += aria-gfni-avx512-x86_64.o diff --git a/arch/x86/crypto/aria-avx.h b/arch/x86/crypto/aria-avx.h index e4109e67a640..9804d3f43fce 100644 --- a/arch/x86/crypto/aria-avx.h +++ b/arch/x86/crypto/aria-avx.h @@ -35,20 +35,26 @@ DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64, aria_aesni_avx_gfni_ctr_ (ctx, dst, src, keystream, iv)); #endif /* CONFIG_AS_GFNI */ -asmlinkage void aria_aesni_avx2_encrypt_32way(const void *ctx, u8 *dst, - const u8 *src); -asmlinkage void aria_aesni_avx2_decrypt_32way(const void *ctx, u8 *dst, - const u8 *src); -asmlinkage void aria_aesni_avx2_ctr_crypt_32way(const void *ctx, u8 *dst, - const u8 *src, - u8 *keystream, u8 *iv); -asmlinkage void aria_aesni_avx2_gfni_encrypt_32way(const void *ctx, u8 *dst, - const u8 *src); -asmlinkage void aria_aesni_avx2_gfni_decrypt_32way(const void *ctx, u8 *dst, - const u8 *src); -asmlinkage void aria_aesni_avx2_gfni_ctr_crypt_32way(const void *ctx, u8 *dst, - const u8 *src, - u8 *keystream, u8 *iv); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64, aria_aesni_avx2_encrypt_32way, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64, aria_aesni_avx2_decrypt_32way, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64, aria_aesni_avx2_ctr_crypt_32way, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src, u8 *keystream, u8 *iv), + (ctx, dst, src, keystream, iv)); +#ifdef CONFIG_AS_GFNI +DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64, aria_aesni_avx2_gfni_encrypt_32way, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64, aria_aesni_avx2_gfni_decrypt_32way, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src), + (ctx, dst, src)); +DECLARE_CRYPTO_API(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64, aria_aesni_avx2_gfni_ctr_crypt_32way, asmlinkage void, + (const void *ctx, u8 *dst, const u8 *src, u8 *keystream, u8 *iv), + (ctx, dst, src, keystream, iv)); +#endif /* CONFIG_AS_GFNI */ struct aria_avx_ops { void (*aria_encrypt_16way)(const void *ctx, u8 *dst, const u8 *src); diff --git a/arch/x86/crypto/aria_aesni_avx2_glue.c b/arch/x86/crypto/aria_aesni_avx2_glue.c index 1487a49bfbac..26f9f10913a7 100644 --- a/arch/x86/crypto/aria_aesni_avx2_glue.c +++ b/arch/x86/crypto/aria_aesni_avx2_glue.c @@ -235,8 +235,8 @@ static void __exit aria_avx2_exit(void) crypto_unregister_skciphers(aria_algs, ARRAY_SIZE(aria_algs)); } -module_init(aria_avx2_init); -module_exit(aria_avx2_exit); +crypto_module_init(aria_avx2_init); +crypto_module_exit(aria_avx2_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Taehee Yoo <[email protected]>"); diff --git a/arch/x86/crypto/fips140/fips140-api.c b/arch/x86/crypto/fips140/fips140-api.c index ed7a2ad31f24..ced6b58fcb81 100644 --- a/arch/x86/crypto/fips140/fips140-api.c +++ b/arch/x86/crypto/fips140/fips140-api.c @@ -96,4 +96,22 @@ DEFINE_CRYPTO_API_STUB(aria_aesni_avx_gfni_decrypt_16way); DEFINE_CRYPTO_API_STUB(aria_aesni_avx_gfni_ctr_crypt_16way); #endif /* CONFIG_AS_GFNI */ +#endif + +/* + * arch/x86/crypto/aria_aesni_avx2_glue.c + */ +#if IS_BUILTIN(CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64) + +#include <arch/x86/crypto/aria-avx.h> + +DEFINE_CRYPTO_API_STUB(aria_aesni_avx2_encrypt_32way); +DEFINE_CRYPTO_API_STUB(aria_aesni_avx2_decrypt_32way); +DEFINE_CRYPTO_API_STUB(aria_aesni_avx2_ctr_crypt_32way); +#ifdef CONFIG_AS_GFNI +DEFINE_CRYPTO_API_STUB(aria_aesni_avx2_gfni_encrypt_32way); +DEFINE_CRYPTO_API_STUB(aria_aesni_avx2_gfni_decrypt_32way); +DEFINE_CRYPTO_API_STUB(aria_aesni_avx2_gfni_ctr_crypt_32way); +#endif /* CONFIG_AS_GFNI */ + #endif \ No newline at end of file -- 2.47.3
