From owner-svn-src-stable@FreeBSD.ORG Wed Sep 26 09:22:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7127B106566B; Wed, 26 Sep 2012 09:22:29 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 01C0C8FC0A; Wed, 26 Sep 2012 09:22:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8Q9MSuN098605; Wed, 26 Sep 2012 09:22:28 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8Q9MSCM098594; Wed, 26 Sep 2012 09:22:28 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201209260922.q8Q9MSCM098594@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 26 Sep 2012 09:22:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r240950 - in stable/9/sys: amd64/conf conf dev/random i386/conf modules/random X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Sep 2012 09:22:29 -0000 Author: kib Date: Wed Sep 26 09:22:28 2012 New Revision: 240950 URL: http://svn.freebsd.org/changeset/base/240950 Log: MFC r240135: Add support for new Intel on-CPU Bull Mountain random number generator. MFC r240455: Rename the IVY_RNG option to RDRAND_RNG. Added: stable/9/sys/dev/random/ivy.c - copied, changed from r240135, head/sys/dev/random/ivy.c Deleted: stable/9/sys/dev/random/nehemiah.h Modified: stable/9/sys/amd64/conf/GENERIC stable/9/sys/conf/files.amd64 stable/9/sys/conf/files.i386 stable/9/sys/conf/options.amd64 stable/9/sys/conf/options.i386 stable/9/sys/dev/random/nehemiah.c stable/9/sys/dev/random/probe.c stable/9/sys/i386/conf/GENERIC stable/9/sys/modules/random/Makefile Directory Properties: stable/9/sys/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/amd64/conf/GENERIC ============================================================================== --- stable/9/sys/amd64/conf/GENERIC Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/amd64/conf/GENERIC Wed Sep 26 09:22:28 2012 (r240950) @@ -272,6 +272,8 @@ device wpi # Intel 3945ABG wireless NI # Pseudo devices. device loop # Network loopback device random # Entropy device +options PADLOCK_RNG # VIA Padlock RNG +options RDRAND_RNG # Intel Bull Mountain RNG device ether # Ethernet support device vlan # 802.1Q VLAN support device tun # Packet tunnel. Modified: stable/9/sys/conf/files.amd64 ============================================================================== --- stable/9/sys/conf/files.amd64 Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/conf/files.amd64 Wed Sep 26 09:22:28 2012 (r240950) @@ -216,7 +216,8 @@ dev/lindev/lindev.c optional lindev 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/random/ivy.c optional random rdrand_rng +dev/random/nehemiah.c optional random padlock_rng dev/qlxgb/qla_dbg.c optional qlxgb pci dev/qlxgb/qla_hw.c optional qlxgb pci dev/qlxgb/qla_ioctl.c optional qlxgb pci Modified: stable/9/sys/conf/files.i386 ============================================================================== --- stable/9/sys/conf/files.i386 Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/conf/files.i386 Wed Sep 26 09:22:28 2012 (r240950) @@ -226,7 +226,8 @@ dev/nfe/if_nfe.c optional nfe pci dev/nve/if_nve.c optional nve pci dev/nvram/nvram.c optional nvram isa dev/pcf/pcf_isa.c optional pcf -dev/random/nehemiah.c optional random +dev/random/ivy.c optional random rdrand_rng +dev/random/nehemiah.c optional random padlock_rng dev/sbni/if_sbni.c optional sbni dev/sbni/if_sbni_isa.c optional sbni isa dev/sbni/if_sbni_pci.c optional sbni pci Modified: stable/9/sys/conf/options.amd64 ============================================================================== --- stable/9/sys/conf/options.amd64 Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/conf/options.amd64 Wed Sep 26 09:22:28 2012 (r240950) @@ -68,3 +68,7 @@ XENHVM opt_global.h # options for the Intel C600 SAS driver (isci) ISCI_LOGGING opt_isci.h + +# hw random number generators for random(4) +PADLOCK_RNG opt_cpu.h +RDRAND_RNG opt_cpu.h Modified: stable/9/sys/conf/options.i386 ============================================================================== --- stable/9/sys/conf/options.i386 Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/conf/options.i386 Wed Sep 26 09:22:28 2012 (r240950) @@ -123,3 +123,7 @@ XENHVM opt_global.h # options for the Intel C600 SAS driver (isci) ISCI_LOGGING opt_isci.h + +# hw random number generators for random(4) +PADLOCK_RNG opt_cpu.h +RDRAND_RNG opt_cpu.h Copied and modified: stable/9/sys/dev/random/ivy.c (from r240135, head/sys/dev/random/ivy.c) ============================================================================== --- head/sys/dev/random/ivy.c Wed Sep 5 13:18:51 2012 (r240135, copy source) +++ stable/9/sys/dev/random/ivy.c Wed Sep 26 09:22:28 2012 (r240950) @@ -30,7 +30,7 @@ __FBSDID("$FreeBSD$"); #include "opt_cpu.h" -#ifdef IVY_RNG +#ifdef RDRAND_RNG #include #include Modified: stable/9/sys/dev/random/nehemiah.c ============================================================================== --- stable/9/sys/dev/random/nehemiah.c Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/dev/random/nehemiah.c Wed Sep 26 09:22:28 2012 (r240950) @@ -28,6 +28,10 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_cpu.h" + +#ifdef PADLOCK_RNG + #include #include #include @@ -203,3 +207,5 @@ random_nehemiah_read(void *buf, int c) mtx_unlock(&random_nehemiah_mtx); return (c); } + +#endif Modified: stable/9/sys/dev/random/probe.c ============================================================================== --- stable/9/sys/dev/random/probe.c Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/dev/random/probe.c Wed Sep 26 09:22:28 2012 (r240950) @@ -28,12 +28,17 @@ #include __FBSDID("$FreeBSD$"); +#if defined(__amd64__) || (defined(__i386__) && !defined(PC98)) +#include "opt_cpu.h" +#endif + #include #include +#include +#include #include #include #include -#include #include #if defined(__amd64__) || (defined(__i386__) && !defined(PC98)) @@ -45,7 +50,15 @@ __FBSDID("$FreeBSD$"); #include #include -#include + +#if defined(__amd64__) || (defined(__i386__) && !defined(PC98)) +#ifdef PADLOCK_RNG +extern struct random_systat random_nehemiah; +#endif +#ifdef RDRAND_RNG +extern struct random_systat random_ivy; +#endif +#endif void random_ident_hardware(struct random_systat *systat) @@ -56,8 +69,25 @@ random_ident_hardware(struct random_syst /* Then go looking for hardware */ #if defined(__amd64__) || (defined(__i386__) && !defined(PC98)) +#ifdef PADLOCK_RNG if (via_feature_rng & VIA_HAS_RNG) { - *systat = random_nehemiah; + int enable; + + enable = 1; + TUNABLE_INT_FETCH("hw.nehemiah_rng_enable", &enable); + if (enable) + *systat = random_nehemiah; } #endif +#ifdef RDRAND_RNG + if (cpu_feature2 & CPUID2_RDRAND) { + int enable; + + enable = 1; + TUNABLE_INT_FETCH("hw.ivy_rng_enable", &enable); + if (enable) + *systat = random_ivy; + } +#endif +#endif } Modified: stable/9/sys/i386/conf/GENERIC ============================================================================== --- stable/9/sys/i386/conf/GENERIC Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/i386/conf/GENERIC Wed Sep 26 09:22:28 2012 (r240950) @@ -285,6 +285,8 @@ device wpi # Intel 3945ABG wireless NI # Pseudo devices. device loop # Network loopback device random # Entropy device +options PADLOCK_RNG # VIA Padlock RNG +options RDRAND_RNG # Intel Bull Mountain RNG device ether # Ethernet support device vlan # 802.1Q VLAN support device tun # Packet tunnel. Modified: stable/9/sys/modules/random/Makefile ============================================================================== --- stable/9/sys/modules/random/Makefile Wed Sep 26 08:57:12 2012 (r240949) +++ stable/9/sys/modules/random/Makefile Wed Sep 26 09:22:28 2012 (r240950) @@ -8,10 +8,11 @@ KMOD= random SRCS= randomdev.c probe.c .if ${MACHINE} == "amd64" || ${MACHINE} == "i386" SRCS+= nehemiah.c +SRCS+= ivy.c .endif SRCS+= randomdev_soft.c yarrow.c hash.c SRCS+= rijndael-alg-fst.c rijndael-api-fst.c sha2.c -SRCS+= bus_if.h device_if.h vnode_if.h +SRCS+= bus_if.h device_if.h vnode_if.h opt_cpu.h CFLAGS+= -I${.CURDIR}/../..