diff options
-rw-r--r-- | arch/x86/crypto/serpent_avx2_glue.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/arch/x86/crypto/serpent_avx2_glue.c b/arch/x86/crypto/serpent_avx2_glue.c index aa325fa5c7a6..f226ad41fde1 100644 --- a/arch/x86/crypto/serpent_avx2_glue.c +++ b/arch/x86/crypto/serpent_avx2_glue.c | |||
@@ -20,8 +20,7 @@ | |||
20 | #include <crypto/lrw.h> | 20 | #include <crypto/lrw.h> |
21 | #include <crypto/xts.h> | 21 | #include <crypto/xts.h> |
22 | #include <crypto/serpent.h> | 22 | #include <crypto/serpent.h> |
23 | #include <asm/xcr.h> | 23 | #include <asm/fpu/api.h> |
24 | #include <asm/fpu/xstate.h> | ||
25 | #include <asm/crypto/serpent-avx.h> | 24 | #include <asm/crypto/serpent-avx.h> |
26 | #include <asm/crypto/glue_helper.h> | 25 | #include <asm/crypto/glue_helper.h> |
27 | 26 | ||
@@ -537,16 +536,10 @@ static struct crypto_alg srp_algs[10] = { { | |||
537 | 536 | ||
538 | static int __init init(void) | 537 | static int __init init(void) |
539 | { | 538 | { |
540 | u64 xcr0; | 539 | const char *feature_name; |
541 | 540 | ||
542 | if (!cpu_has_avx2 || !cpu_has_osxsave) { | 541 | if (!cpu_has_xfeatures(XSTATE_SSE | XSTATE_YMM, &feature_name)) { |
543 | pr_info("AVX2 instructions are not detected.\n"); | 542 | pr_info("CPU feature '%s' is not supported.\n", feature_name); |
544 | return -ENODEV; | ||
545 | } | ||
546 | |||
547 | xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK); | ||
548 | if ((xcr0 & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM)) { | ||
549 | pr_info("AVX detected but unusable.\n"); | ||
550 | return -ENODEV; | 543 | return -ENODEV; |
551 | } | 544 | } |
552 | 545 | ||