From e5c01296ff71f20d31bc4b5b38b64da16e4d187c Mon Sep 17 00:00:00 2001 From: Romain Dolbeau Date: Mon, 26 Apr 2021 21:42:42 +0200 Subject: [PATCH] Fix AVX512BW Fletcher code on AVX512-but-not-BW machines Introduce a specific valid function for avx512f+avx512bw (instead of checking only for avx512f). Reviewed-by: Brian Behlendorf Reviewed-by: Adam Moss Signed-off-by: Romain Dolbeau Closes #11937 Closes #11938 --- module/zcommon/zfs_fletcher_avx512.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/module/zcommon/zfs_fletcher_avx512.c b/module/zcommon/zfs_fletcher_avx512.c index 300ec4c1fb..963f089b04 100644 --- a/module/zcommon/zfs_fletcher_avx512.c +++ b/module/zcommon/zfs_fletcher_avx512.c @@ -210,6 +210,12 @@ fletcher_4_avx512bw_byteswap(fletcher_4_ctx_t *ctx, const void *buf, } STACK_FRAME_NON_STANDARD(fletcher_4_avx512bw_byteswap); +static boolean_t +fletcher_4_avx512bw_valid(void) +{ + return (fletcher_4_avx512f_valid() && zfs_avx512bw_available()); +} + const fletcher_4_ops_t fletcher_4_avx512bw_ops = { .init_native = fletcher_4_avx512f_init, .fini_native = fletcher_4_avx512f_fini, @@ -217,7 +223,7 @@ const fletcher_4_ops_t fletcher_4_avx512bw_ops = { .init_byteswap = fletcher_4_avx512f_init, .fini_byteswap = fletcher_4_avx512f_fini, .compute_byteswap = fletcher_4_avx512bw_byteswap, - .valid = fletcher_4_avx512f_valid, + .valid = fletcher_4_avx512bw_valid, .name = "avx512bw" }; #endif