Browse Source

crypto: vmx - Convert to CPU feature based module autoloading

This patch utilises the GENERIC_CPU_AUTOPROBE infrastructure
to automatically load the vmx_crypto module if the CPU supports
it.

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Alastair D'Silva 9 years ago
parent
commit
ccf5c442a1
2 changed files with 3 additions and 5 deletions
  1. 1 1
      drivers/crypto/vmx/Kconfig
  2. 2 4
      drivers/crypto/vmx/vmx.c

+ 1 - 1
drivers/crypto/vmx/Kconfig

@@ -1,7 +1,7 @@
 config CRYPTO_DEV_VMX_ENCRYPT
 config CRYPTO_DEV_VMX_ENCRYPT
 	tristate "Encryption acceleration support on P8 CPU"
 	tristate "Encryption acceleration support on P8 CPU"
 	depends on CRYPTO_DEV_VMX
 	depends on CRYPTO_DEV_VMX
-	default y
+	default m
 	help
 	help
 	  Support for VMX cryptographic acceleration instructions on Power8 CPU.
 	  Support for VMX cryptographic acceleration instructions on Power8 CPU.
 	  This module supports acceleration for AES and GHASH in hardware. If you
 	  This module supports acceleration for AES and GHASH in hardware. If you

+ 2 - 4
drivers/crypto/vmx/vmx.c

@@ -23,6 +23,7 @@
 #include <linux/moduleparam.h>
 #include <linux/moduleparam.h>
 #include <linux/types.h>
 #include <linux/types.h>
 #include <linux/err.h>
 #include <linux/err.h>
+#include <linux/cpufeature.h>
 #include <linux/crypto.h>
 #include <linux/crypto.h>
 #include <asm/cputable.h>
 #include <asm/cputable.h>
 #include <crypto/internal/hash.h>
 #include <crypto/internal/hash.h>
@@ -43,9 +44,6 @@ int __init p8_init(void)
 	int ret = 0;
 	int ret = 0;
 	struct crypto_alg **alg_it;
 	struct crypto_alg **alg_it;
 
 
-	if (!(cur_cpu_spec->cpu_user_features2 & PPC_FEATURE2_VEC_CRYPTO))
-		return -ENODEV;
-
 	for (alg_it = algs; *alg_it; alg_it++) {
 	for (alg_it = algs; *alg_it; alg_it++) {
 		ret = crypto_register_alg(*alg_it);
 		ret = crypto_register_alg(*alg_it);
 		printk(KERN_INFO "crypto_register_alg '%s' = %d\n",
 		printk(KERN_INFO "crypto_register_alg '%s' = %d\n",
@@ -78,7 +76,7 @@ void __exit p8_exit(void)
 	crypto_unregister_shash(&p8_ghash_alg);
 	crypto_unregister_shash(&p8_ghash_alg);
 }
 }
 
 
-module_init(p8_init);
+module_cpu_feature_match(PPC_MODULE_FEATURE_VEC_CRYPTO, p8_init);
 module_exit(p8_exit);
 module_exit(p8_exit);
 
 
 MODULE_AUTHOR("Marcelo Cerri<mhcerri@br.ibm.com>");
 MODULE_AUTHOR("Marcelo Cerri<mhcerri@br.ibm.com>");