summaryrefslogtreecommitdiffstats
path: root/sys/dev/random
diff options
context:
space:
mode:
authormr <mr@FreeBSD.org>2006-07-12 20:29:11 +0000
committermr <mr@FreeBSD.org>2006-07-12 20:29:11 +0000
commit883bd6a55eef6005b2e79ccc0c939a365bebb656 (patch)
treec44f3dadd25bb61c7f8dc9e3b63d04f767abc3e3 /sys/dev/random
parentb5dc376dfafef047b34773f090765e211292250a (diff)
downloadFreeBSD-src-883bd6a55eef6005b2e79ccc0c939a365bebb656.zip
FreeBSD-src-883bd6a55eef6005b2e79ccc0c939a365bebb656.tar.gz
Use the already stored VIA RNG probe information
instead of probing again. MFC after: 1 week
Diffstat (limited to 'sys/dev/random')
-rw-r--r--sys/dev/random/probe.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/sys/dev/random/probe.c b/sys/dev/random/probe.c
index e5f15fe..55b1974 100644
--- a/sys/dev/random/probe.c
+++ b/sys/dev/random/probe.c
@@ -39,6 +39,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 <dev/random/randomdev.h>
@@ -48,25 +50,14 @@ __FBSDID("$FreeBSD$");
void
random_ident_hardware(struct random_systat *systat)
{
-#if defined(__i386__) && !defined(PC98)
- u_int regs[4];
-#endif
/* Set default to software */
*systat = random_yarrow;
/* Then go looking for hardware */
#if defined(__i386__) && !defined(PC98)
- if (cpu_class < CPUCLASS_586)
- return;
- do_cpuid(1, regs);
- if ((regs[0] & 0xf) >= 3) {
- do_cpuid(0xc0000000, regs);
- if (regs[0] == 0xc0000001) {
- do_cpuid(0xc0000001, regs);
- if ((regs[3] & 0x0c) == 0x0c)
- *systat = random_nehemiah;
- }
+ if( via_feature_rng & VIA_HAS_RNG ) {
+ *systat = random_nehemiah;
}
#endif
}
OpenPOWER on IntegriCloud