>Number:         163974
>Category:       kern
>Synopsis:       Via RNG not enabled on amd64
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 09 22:00:26 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Stefan Krüger
>Release:        FreeBSD 9.0-REL
>Organization:
>Environment:
FreeBSD fbsd9.some.lan 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  9 21:46:25 
UTC 2012     r...@fbsd9.some.lan:/usr/obj/usr/src/sys/NANO  amd64
>Description:
The random kernel module on FreeBSD/amd64 doesn't support 64bit VIA CPUs 
hardware rng because the conf/Makefile/c files still assume Via CPUs are 32bit 
only.
>How-To-Repeat:
Boot FreeBSD/amd64 on a 64bit Via Nano CPU and notice that the hw rng is not 
used.
>Fix:


Patch attached with submission follows:

--- conf/files.amd64.orig       2012-01-09 22:08:51.000000000 +0100
+++ conf/files.amd64    2012-01-09 22:10:23.000000000 +0100
@@ -208,6 +208,7 @@
 dev/nfe/if_nfe.c               optional        nfe pci
 dev/nve/if_nve.c               optional        nve pci
 dev/nvram/nvram.c              optional        nvram isa
+dev/random/nehemiah.c          optional        random
 dev/qlxgb/qla_dbg.c            optional        qlxgb pci
 dev/qlxgb/qla_hw.c             optional        qlxgb pci
 dev/qlxgb/qla_ioctl.c          optional        qlxgb pci
--- modules/random/Makefile.orig        2012-01-09 22:07:22.000000000 +0100
+++ modules/random/Makefile     2012-01-09 22:07:27.000000000 +0100
@@ -6,7 +6,7 @@
 
 KMOD=  random
 SRCS=  randomdev.c probe.c
-.if ${MACHINE} == "i386"
+.if ${MACHINE} == "i386" || ${MACHINE} == "amd64"
 SRCS+= nehemiah.c
 .endif
 SRCS+= randomdev_soft.c yarrow.c hash.c
--- dev/random/probe.c.orig     2012-01-09 21:55:26.000000000 +0100
+++ dev/random/probe.c  2012-01-09 21:55:43.000000000 +0100
@@ -36,7 +36,7 @@
 #include <sys/stdint.h>
 #include <sys/sysctl.h>
 
-#if defined(__i386__) && !defined(PC98)
+#if defined(__amd64__) || (defined(__i386__) && !defined(PC98))
 #include <machine/cpufunc.h>
 #include <machine/cputypes.h>
 #include <machine/md_var.h>
@@ -55,7 +55,7 @@
        *systat = random_yarrow;
 
        /* Then go looking for hardware */
-#if defined(__i386__) && !defined(PC98)
+#if defined(__amd64__) || (defined(__i386__) && !defined(PC98))
        if (via_feature_rng & VIA_HAS_RNG) {
                *systat = random_nehemiah;
        }


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to