|
@@ -31,8 +31,7 @@
|
|
|
#include <crypto/cast5.h>
|
|
|
#include <crypto/cryptd.h>
|
|
|
#include <crypto/ctr.h>
|
|
|
-#include <asm/xcr.h>
|
|
|
-#include <asm/fpu/xstate.h>
|
|
|
+#include <asm/fpu/api.h>
|
|
|
#include <asm/crypto/glue_helper.h>
|
|
|
|
|
|
#define CAST5_PARALLEL_BLOCKS 16
|
|
@@ -468,16 +467,10 @@ static struct crypto_alg cast5_algs[6] = { {
|
|
|
|
|
|
static int __init cast5_init(void)
|
|
|
{
|
|
|
- u64 xcr0;
|
|
|
+ const char *feature_name;
|
|
|
|
|
|
- if (!cpu_has_avx || !cpu_has_osxsave) {
|
|
|
- pr_info("AVX 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;
|
|
|
}
|
|
|
|