From 4fd58e10b2747a0287ebc067ae1d538d6a525faa Mon Sep 17 00:00:00 2001
From: Michael Reifenberger <mr@FreeBSD.org>
Date: Thu, 13 Jul 2006 09:15:14 +0000
Subject: [PATCH] Use the already stored VIA RNG probe information instead of
 probing again. Adjust style(9) somewhat in probe.c

Reviewed by:	pjd
MFC after:	1 week
---
 sys/crypto/via/padlock.c | 21 +++++----------------
 sys/dev/random/probe.c   |  2 +-
 2 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/sys/crypto/via/padlock.c b/sys/crypto/via/padlock.c
index 01eb916ce77a..95351af42e59 100644
--- a/sys/crypto/via/padlock.c
+++ b/sys/crypto/via/padlock.c
@@ -58,6 +58,8 @@ __FBSDID("$FreeBSD$");
 #if defined(__i386__) && !defined(PC98)
 #include <machine/cpufunc.h>
 #include <machine/cputypes.h>
+#include <machine/md_var.h>
+#include <machine/specialreg.h>
 #endif
 
 #include <opencrypto/cryptodev.h>
@@ -160,24 +162,11 @@ padlock_init(void)
 {
 	struct padlock_softc *sc;
 #if defined(__i386__) && !defined(PC98)
-	u_int regs[4];
-	int has_ace = 0;
-
-	if (cpu_class < CPUCLASS_586)
-		return (EINVAL);
-	do_cpuid(1, regs);
-	if ((regs[0] & 0xf) >= 3) {
-		do_cpuid(0xc0000000, regs);
-		if (regs[0] == 0xc0000001) {
-			do_cpuid(0xc0000001, regs);
-			if ((regs[3] & 0xc0) == 0xc0)
-				has_ace = 1;
-		}
-	}
-	if (!has_ace) {
+	if (!(via_feature_xcrypt & VIA_HAS_AES)) {
 		printf("PADLOCK: No ACE support.\n");
 		return (EINVAL);
-	}
+	} else
+		printf("PADLOCK: HW support loaded.\n");
 #else
 	return (EINVAL);
 #endif
diff --git a/sys/dev/random/probe.c b/sys/dev/random/probe.c
index 55b197498c28..5d6bd6717c50 100644
--- a/sys/dev/random/probe.c
+++ b/sys/dev/random/probe.c
@@ -56,7 +56,7 @@ random_ident_hardware(struct random_systat *systat)
 
 	/* Then go looking for hardware */
 #if defined(__i386__) && !defined(PC98)
-	if( via_feature_rng & VIA_HAS_RNG ) {
+	if(via_feature_rng & VIA_HAS_RNG) {
 		*systat = random_nehemiah;
 	}
 #endif