|
@@ -36,8 +36,7 @@
|
|
|
#include <crypto/ctr.h>
|
|
|
#include <crypto/lrw.h>
|
|
|
#include <crypto/xts.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>
|
|
|
|
|
@@ -596,16 +595,10 @@ static struct crypto_alg serpent_algs[10] = { {
|
|
|
|
|
|
static int __init serpent_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;
|
|
|
}
|
|
|
|