|
@@ -20,8 +20,7 @@
|
|
|
#include <crypto/lrw.h>
|
|
|
#include <crypto/xts.h>
|
|
|
#include <crypto/serpent.h>
|
|
|
-#include <asm/xcr.h>
|
|
|
-#include <asm/fpu/xstate.h>
|
|
|
+#include <asm/fpu/api.h>
|
|
|
#include <asm/crypto/serpent-avx.h>
|
|
|
#include <asm/crypto/glue_helper.h>
|
|
|
|
|
@@ -537,16 +536,10 @@ static struct crypto_alg srp_algs[10] = { {
|
|
|
|
|
|
static int __init init(void)
|
|
|
{
|
|
|
- u64 xcr0;
|
|
|
+ const char *feature_name;
|
|
|
|
|
|
- if (!cpu_has_avx2 || !cpu_has_osxsave) {
|
|
|
- pr_info("AVX2 instructions are not detected.\n");
|
|
|
- return -ENODEV;
|
|
|
- }
|
|
|
-
|
|
|
- xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK);
|
|
|
- if ((xcr0 & (XSTATE_SSE | XSTATE_YMM)) != (XSTATE_SSE | XSTATE_YMM)) {
|
|
|
- pr_info("AVX detected but unusable.\n");
|
|
|
+ if (!cpu_has_xfeatures(XSTATE_SSE | XSTATE_YMM, &feature_name)) {
|
|
|
+ pr_info("CPU feature '%s' is not supported.\n", feature_name);
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|