|
@@ -22,6 +22,7 @@
|
|
|
#include <linux/interrupt.h>
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/scatterlist.h>
|
|
|
+#include <asm/cpu_device_id.h>
|
|
|
#include <asm/i387.h>
|
|
|
|
|
|
struct padlock_sha_desc {
|
|
@@ -526,6 +527,12 @@ static struct shash_alg sha256_alg_nano = {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+static struct x86_cpu_id padlock_sha_ids[] = {
|
|
|
+ X86_FEATURE_MATCH(X86_FEATURE_PHE),
|
|
|
+ {}
|
|
|
+};
|
|
|
+MODULE_DEVICE_TABLE(x86cpu, padlock_sha_ids);
|
|
|
+
|
|
|
static int __init padlock_init(void)
|
|
|
{
|
|
|
int rc = -ENODEV;
|
|
@@ -533,15 +540,8 @@ static int __init padlock_init(void)
|
|
|
struct shash_alg *sha1;
|
|
|
struct shash_alg *sha256;
|
|
|
|
|
|
- if (!cpu_has_phe) {
|
|
|
- printk(KERN_NOTICE PFX "VIA PadLock Hash Engine not detected.\n");
|
|
|
- return -ENODEV;
|
|
|
- }
|
|
|
-
|
|
|
- if (!cpu_has_phe_enabled) {
|
|
|
- printk(KERN_NOTICE PFX "VIA PadLock detected, but not enabled. Hmm, strange...\n");
|
|
|
+ if (!x86_match_cpu(padlock_sha_ids) || !cpu_has_phe_enabled)
|
|
|
return -ENODEV;
|
|
|
- }
|
|
|
|
|
|
/* Register the newly added algorithm module if on *
|
|
|
* VIA Nano processor, or else just do as before */
|