|
@@ -37,8 +37,6 @@
|
|
#include <crypto/lrw.h>
|
|
#include <crypto/lrw.h>
|
|
#include <crypto/xts.h>
|
|
#include <crypto/xts.h>
|
|
#include <asm/fpu/api.h>
|
|
#include <asm/fpu/api.h>
|
|
-#include <asm/xcr.h>
|
|
|
|
-#include <asm/fpu/xstate.h>
|
|
|
|
#include <asm/crypto/twofish.h>
|
|
#include <asm/crypto/twofish.h>
|
|
#include <asm/crypto/glue_helper.h>
|
|
#include <asm/crypto/glue_helper.h>
|
|
#include <crypto/scatterwalk.h>
|
|
#include <crypto/scatterwalk.h>
|
|
@@ -558,16 +556,10 @@ static struct crypto_alg twofish_algs[10] = { {
|
|
|
|
|
|
static int __init twofish_init(void)
|
|
static int __init twofish_init(void)
|
|
{
|
|
{
|
|
- u64 xcr0;
|
|
|
|
|
|
+ const char *feature_name;
|
|
|
|
|
|
- if (!cpu_has_avx || !cpu_has_osxsave) {
|
|
|
|
- printk(KERN_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)) {
|
|
|
|
- printk(KERN_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;
|
|
return -ENODEV;
|
|
}
|
|
}
|
|
|
|
|