Module Name:    src
Committed By:   riastradh
Date:           Thu Apr 30 03:40:54 UTC 2020

Modified Files:
        src/sys/arch/arm/amlogic: meson_rng.c
        src/sys/arch/arm/broadcom: bcm2835_rng.c
        src/sys/arch/arm/nvidia: tegra124_car.c tegra210_car.c
        src/sys/arch/arm/omap: am335x_trng.c
        src/sys/arch/arm/sunxi: sun8i_crypto.c
        src/sys/arch/arm/ti: ti_rng.c
        src/sys/arch/mips/ingenic: ingenic_rng.c
        src/sys/arch/x86/x86: cpu_rng.c
        src/sys/dev/ic: amdccp.c rng200.c
        src/sys/dev/pci: amdpm.c hifn7751.c ubsec.c viornd.c
        src/sys/dev/usb: ualea.c
        src/sys/rump/librump/rumpkern: hyperentropy.c
Removed Files:
        src/sys/sys: rndpool.h

Log Message:
rnd_attach_source calls the callback itself now.

No need for every driver to explicitly call it to prime the pool.

Eliminate now-unused <sys/rndpool.h>.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/amlogic/meson_rng.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/broadcom/bcm2835_rng.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/nvidia/tegra124_car.c
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/nvidia/tegra210_car.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/omap/am335x_trng.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/sunxi/sun8i_crypto.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/ti/ti_rng.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/mips/ingenic/ingenic_rng.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/x86/x86/cpu_rng.c
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/ic/amdccp.c src/sys/dev/ic/rng200.c
cvs rdiff -u -r1.40 -r1.41 src/sys/dev/pci/amdpm.c
cvs rdiff -u -r1.66 -r1.67 src/sys/dev/pci/hifn7751.c
cvs rdiff -u -r1.49 -r1.50 src/sys/dev/pci/ubsec.c
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/pci/viornd.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/usb/ualea.c
cvs rdiff -u -r1.15 -r1.16 src/sys/rump/librump/rumpkern/hyperentropy.c
cvs rdiff -u -r1.4 -r0 src/sys/sys/rndpool.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/amlogic/meson_rng.c
diff -u src/sys/arch/arm/amlogic/meson_rng.c:1.2 src/sys/arch/arm/amlogic/meson_rng.c:1.3
--- src/sys/arch/arm/amlogic/meson_rng.c:1.2	Sun Apr 21 14:13:55 2019
+++ src/sys/arch/arm/amlogic/meson_rng.c	Thu Apr 30 03:40:52 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: meson_rng.c,v 1.2 2019/04/21 14:13:55 jmcneill Exp $ */
+/* $NetBSD: meson_rng.c,v 1.3 2020/04/30 03:40:52 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015-2019 Jared D. McNeill <[email protected]>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: meson_rng.c,v 1.2 2019/04/21 14:13:55 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: meson_rng.c,v 1.3 2020/04/30 03:40:52 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -35,7 +35,6 @@ __KERNEL_RCSID(0, "$NetBSD: meson_rng.c,
 #include <sys/systm.h>
 #include <sys/kernel.h>
 #include <sys/mutex.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <dev/fdt/fdtvar.h>
@@ -107,8 +106,6 @@ meson_rng_attach(device_t parent, device
 	rndsource_setcb(&sc->sc_rndsource, meson_rng_get, sc);
 	rnd_attach_source(&sc->sc_rndsource, device_xname(self), RND_TYPE_RNG,
 	    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-
-	meson_rng_get(RND_POOLBITS / NBBY, sc);
 }
 
 static void

Index: src/sys/arch/arm/broadcom/bcm2835_rng.c
diff -u src/sys/arch/arm/broadcom/bcm2835_rng.c:1.13 src/sys/arch/arm/broadcom/bcm2835_rng.c:1.14
--- src/sys/arch/arm/broadcom/bcm2835_rng.c:1.13	Sun Dec 10 21:38:26 2017
+++ src/sys/arch/arm/broadcom/bcm2835_rng.c	Thu Apr 30 03:40:52 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835_rng.c,v 1.13 2017/12/10 21:38:26 skrll Exp $ */
+/*	$NetBSD: bcm2835_rng.c,v 1.14 2020/04/30 03:40:52 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,14 +30,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_rng.c,v 1.13 2017/12/10 21:38:26 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_rng.c,v 1.14 2020/04/30 03:40:52 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
 #include <sys/kernel.h>
 #include <sys/bus.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <arm/broadcom/bcm2835reg.h>
@@ -122,9 +121,6 @@ bcmrng_attach(device_t parent, device_t 
 	rndsource_setcb(&sc->sc_rndsource, &bcmrng_get, sc);
 	rnd_attach_source(&sc->sc_rndsource, device_xname(self), RND_TYPE_RNG,
 	    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-
-	/* get some initial entropy ASAP */
-	bcmrng_get(RND_POOLBITS / NBBY, sc);
 }
 
 static void

Index: src/sys/arch/arm/nvidia/tegra124_car.c
diff -u src/sys/arch/arm/nvidia/tegra124_car.c:1.19 src/sys/arch/arm/nvidia/tegra124_car.c:1.20
--- src/sys/arch/arm/nvidia/tegra124_car.c:1.19	Sun Oct 13 06:11:31 2019
+++ src/sys/arch/arm/nvidia/tegra124_car.c	Thu Apr 30 03:40:52 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra124_car.c,v 1.19 2019/10/13 06:11:31 skrll Exp $ */
+/* $NetBSD: tegra124_car.c,v 1.20 2020/04/30 03:40:52 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <[email protected]>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.19 2019/10/13 06:11:31 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra124_car.c,v 1.20 2020/04/30 03:40:52 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -35,7 +35,6 @@ __KERNEL_RCSID(0, "$NetBSD: tegra124_car
 #include <sys/intr.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 #include <sys/atomic.h>
 #include <sys/kmem.h>
@@ -919,7 +918,6 @@ tegra124_car_rnd_attach(device_t self)
 	rndsource_setcb(&sc->sc_rndsource, tegra124_car_rnd_callback, sc);
 	rnd_attach_source(&sc->sc_rndsource, device_xname(sc->sc_dev),
 	    RND_TYPE_RNG, RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-	tegra124_car_rnd_callback(RND_POOLBITS / NBBY, sc);
 }
 
 static void

Index: src/sys/arch/arm/nvidia/tegra210_car.c
diff -u src/sys/arch/arm/nvidia/tegra210_car.c:1.25 src/sys/arch/arm/nvidia/tegra210_car.c:1.26
--- src/sys/arch/arm/nvidia/tegra210_car.c:1.25	Sun Oct 13 06:11:31 2019
+++ src/sys/arch/arm/nvidia/tegra210_car.c	Thu Apr 30 03:40:52 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: tegra210_car.c,v 1.25 2019/10/13 06:11:31 skrll Exp $ */
+/* $NetBSD: tegra210_car.c,v 1.26 2020/04/30 03:40:52 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill <[email protected]>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.25 2019/10/13 06:11:31 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tegra210_car.c,v 1.26 2020/04/30 03:40:52 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -35,7 +35,6 @@ __KERNEL_RCSID(0, "$NetBSD: tegra210_car
 #include <sys/intr.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 #include <sys/atomic.h>
 #include <sys/kmem.h>

Index: src/sys/arch/arm/omap/am335x_trng.c
diff -u src/sys/arch/arm/omap/am335x_trng.c:1.2 src/sys/arch/arm/omap/am335x_trng.c:1.3
--- src/sys/arch/arm/omap/am335x_trng.c:1.2	Sat Dec 17 15:24:35 2016
+++ src/sys/arch/arm/omap/am335x_trng.c	Thu Apr 30 03:40:52 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: am335x_trng.c,v 1.2 2016/12/17 15:24:35 riastradh Exp $ */
+/* $NetBSD: am335x_trng.c,v 1.3 2020/04/30 03:40:52 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <[email protected]>
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: am335x_trng.c,v 1.2 2016/12/17 15:24:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: am335x_trng.c,v 1.3 2020/04/30 03:40:52 riastradh Exp $");
 
 #include "opt_omap.h"
 
@@ -36,7 +36,6 @@ __KERNEL_RCSID(0, "$NetBSD: am335x_trng.
 #include <sys/conf.h>
 #include <sys/mutex.h>
 #include <sys/bus.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <arm/omap/am335x_prcm.h>
@@ -119,8 +118,6 @@ trng_attach(device_t parent, device_t se
 
 	aprint_naive("\n");
 	aprint_normal("\n");
-
-	trng_callback(RND_POOLBITS / NBBY, sc);
 }
 
 static void

Index: src/sys/arch/arm/sunxi/sun8i_crypto.c
diff -u src/sys/arch/arm/sunxi/sun8i_crypto.c:1.12 src/sys/arch/arm/sunxi/sun8i_crypto.c:1.13
--- src/sys/arch/arm/sunxi/sun8i_crypto.c:1.12	Thu Feb  6 19:52:09 2020
+++ src/sys/arch/arm/sunxi/sun8i_crypto.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: sun8i_crypto.c,v 1.12 2020/02/06 19:52:09 riastradh Exp $	*/
+/*	$NetBSD: sun8i_crypto.c,v 1.13 2020/04/30 03:40:53 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -43,7 +43,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: sun8i_crypto.c,v 1.12 2020/02/06 19:52:09 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: sun8i_crypto.c,v 1.13 2020/04/30 03:40:53 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -55,7 +55,6 @@ __KERNEL_RCSID(1, "$NetBSD: sun8i_crypto
 #include <sys/kernel.h>
 #include <sys/kmem.h>
 #include <sys/mutex.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 #include <sys/sysctl.h>
 #include <sys/workqueue.h>

Index: src/sys/arch/arm/ti/ti_rng.c
diff -u src/sys/arch/arm/ti/ti_rng.c:1.2 src/sys/arch/arm/ti/ti_rng.c:1.3
--- src/sys/arch/arm/ti/ti_rng.c:1.2	Tue Oct 29 22:19:13 2019
+++ src/sys/arch/arm/ti/ti_rng.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: ti_rng.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $ */
+/* $NetBSD: ti_rng.c,v 1.3 2020/04/30 03:40:53 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Jared D. McNeill <[email protected]>
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ti_rng.c,v 1.2 2019/10/29 22:19:13 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ti_rng.c,v 1.3 2020/04/30 03:40:53 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -34,7 +34,6 @@ __KERNEL_RCSID(0, "$NetBSD: ti_rng.c,v 1
 #include <sys/conf.h>
 #include <sys/mutex.h>
 #include <sys/bus.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <dev/fdt/fdtvar.h>
@@ -119,8 +118,6 @@ ti_rng_attach(device_t parent, device_t 
 
 	aprint_naive("\n");
 	aprint_normal(": RNG\n");
-
-	ti_rng_callback(RND_POOLBITS / NBBY, sc);
 }
 
 static void

Index: src/sys/arch/mips/ingenic/ingenic_rng.c
diff -u src/sys/arch/mips/ingenic/ingenic_rng.c:1.4 src/sys/arch/mips/ingenic/ingenic_rng.c:1.5
--- src/sys/arch/mips/ingenic/ingenic_rng.c:1.4	Wed Feb 17 20:12:42 2016
+++ src/sys/arch/mips/ingenic/ingenic_rng.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ingenic_rng.c,v 1.4 2016/02/17 20:12:42 macallan Exp $ */
+/*	$NetBSD: ingenic_rng.c,v 1.5 2020/04/30 03:40:53 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 Michael McConville
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ingenic_rng.c,v 1.4 2016/02/17 20:12:42 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ingenic_rng.c,v 1.5 2020/04/30 03:40:53 riastradh Exp $");
 
 /*
  * adapted from Jared McNeill's amlogic_rng.c
@@ -40,7 +40,6 @@ __KERNEL_RCSID(0, "$NetBSD: ingenic_rng.
 #include <sys/kernel.h>
 #include <sys/mutex.h>
 #include <sys/bus.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <mips/ingenic/ingenic_var.h>
@@ -103,8 +102,6 @@ ingenic_rng_attach(device_t parent, devi
 	rndsource_setcb(&sc->sc_rndsource, ingenic_rng_get, sc);
 	rnd_attach_source(&sc->sc_rndsource, device_xname(self), RND_TYPE_RNG,
 	    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-
-	ingenic_rng_get(RND_POOLBITS / NBBY, sc);
 }
 
 static void

Index: src/sys/arch/x86/x86/cpu_rng.c
diff -u src/sys/arch/x86/x86/cpu_rng.c:1.12 src/sys/arch/x86/x86/cpu_rng.c:1.13
--- src/sys/arch/x86/x86/cpu_rng.c:1.12	Thu Apr 30 03:30:10 2020
+++ src/sys/arch/x86/x86/cpu_rng.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu_rng.c,v 1.12 2020/04/30 03:30:10 riastradh Exp $ */
+/* $NetBSD: cpu_rng.c,v 1.13 2020/04/30 03:40:53 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -48,7 +48,6 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/cpu.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 #include <sys/sha2.h>
 
@@ -250,27 +249,26 @@ cpu_rng(enum cpu_rng_mode mode, uint64_t
 static void
 cpu_rng_get(size_t nbytes, void *cookie)
 {
-	const unsigned N = howmany(RND_POOLBITS, 64);
+	const unsigned N = howmany(256, 64);
 	uint64_t buf[2*N];
 	unsigned i, nbits = 0;
 
-	/*
-	 * Draw a sample large enough to (a) fill the pool if it had
-	 * full entropy, and (b) run a repeated-output test; then test
-	 * it.  If RND_POOLBITS is at least 256, the fraction of
-	 * outputs this rejects in correct operation is 1/2^256, which
-	 * is close enough to zero that we round it to having no effect
-	 * on the number of bits of entropy.
-	 */
-	for (i = 0; i < __arraycount(buf); i++)
-		nbits += cpu_rng(cpu_rng_mode, &buf[i]);
-	if (consttime_memequal(buf, buf + N, N)) {
-		printf("cpu_rng %s: failed repetition test\n",
-		    cpu_rng_name[cpu_rng_mode]);
-		nbits = 0;
+	for (; nbytes; nbytes -= MIN(nbytes, sizeof buf)) {
+		/*
+		 * The fraction of outputs this rejects in correct
+		 * operation is 1/2^256, which is close enough to zero
+		 * that we round it to having no effect on the number
+		 * of bits of entropy.
+		 */
+		for (i = 0; i < __arraycount(buf); i++)
+			nbits += cpu_rng(cpu_rng_mode, &buf[i]);
+		if (consttime_memequal(buf, buf + N, N)) {
+			printf("cpu_rng %s: failed repetition test\n",
+			    cpu_rng_name[cpu_rng_mode]);
+			nbits = 0;
+		}
+		rnd_add_data_sync(&cpu_rng_source, buf, sizeof buf, nbits);
 	}
-
-	rnd_add_data_sync(&cpu_rng_source, buf, sizeof buf, nbits);
 }
 
 void

Index: src/sys/dev/ic/amdccp.c
diff -u src/sys/dev/ic/amdccp.c:1.1 src/sys/dev/ic/amdccp.c:1.2
--- src/sys/dev/ic/amdccp.c:1.1	Fri Oct 19 21:09:10 2018
+++ src/sys/dev/ic/amdccp.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: amdccp.c,v 1.1 2018/10/19 21:09:10 jakllsch Exp $ */
+/* $NetBSD: amdccp.c,v 1.2 2020/04/30 03:40:53 riastradh Exp $ */
 
 /*
  * Copyright (c) 2018 Jonathan A. Kollasch
@@ -28,13 +28,12 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: amdccp.c,v 1.1 2018/10/19 21:09:10 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amdccp.c,v 1.2 2020/04/30 03:40:53 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
 #include <sys/bus.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <dev/ic/amdccpvar.h>
@@ -49,7 +48,6 @@ amdccp_common_attach(struct amdccp_softc
 	rndsource_setcb(&sc->sc_rndsource, amdccp_rnd_callback, sc);
 	rnd_attach_source(&sc->sc_rndsource, device_xname(sc->sc_dev),
 	    RND_TYPE_RNG, RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-	amdccp_rnd_callback(RND_POOLBITS / NBBY, sc);
 }
 
 static uint32_t
Index: src/sys/dev/ic/rng200.c
diff -u src/sys/dev/ic/rng200.c:1.1 src/sys/dev/ic/rng200.c:1.2
--- src/sys/dev/ic/rng200.c:1.1	Sun Sep  1 14:44:14 2019
+++ src/sys/dev/ic/rng200.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: rng200.c,v 1.1 2019/09/01 14:44:14 mlelstv Exp $	*/
+/*	$NetBSD: rng200.c,v 1.2 2020/04/30 03:40:53 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -36,7 +36,6 @@
 #include <sys/param.h>
 #include <sys/bus.h>
 #include <sys/mutex.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <dev/ic/rng200var.h>
@@ -111,8 +110,6 @@ rng200_attach(struct rng200_softc *sc)
 	rndsource_setcb(&sc->sc_rndsource, rng200_get, sc);
 	rnd_attach_source(&sc->sc_rndsource, sc->sc_name,
 		RND_TYPE_RNG, RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-
-	rng200_get(RND_POOLBITS / NBBY, sc);
 }
 
 void

Index: src/sys/dev/pci/amdpm.c
diff -u src/sys/dev/pci/amdpm.c:1.40 src/sys/dev/pci/amdpm.c:1.41
--- src/sys/dev/pci/amdpm.c:1.40	Thu Apr 30 03:24:15 2020
+++ src/sys/dev/pci/amdpm.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: amdpm.c,v 1.40 2020/04/30 03:24:15 riastradh Exp $	*/
+/*	$NetBSD: amdpm.c,v 1.41 2020/04/30 03:40:53 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: amdpm.c,v 1.40 2020/04/30 03:24:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amdpm.c,v 1.41 2020/04/30 03:40:53 riastradh Exp $");
 
 #include "opt_amdpm.h"
 
@@ -39,7 +39,6 @@ __KERNEL_RCSID(0, "$NetBSD: amdpm.c,v 1.
 #include <sys/kernel.h>
 #include <sys/device.h>
 #include <sys/callout.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 #include <sys/mutex.h>
 
@@ -207,8 +206,6 @@ amdpm_attach(device_t parent, device_t s
 			rnd_attach_source(&sc->sc_rnd_source,
 			    device_xname(self), RND_TYPE_RNG,
 			    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-			sc->sc_rnd_need = RND_POOLBITS / NBBY;
-			amdpm_rnd_callout(sc);
 		}
 	}
 }

Index: src/sys/dev/pci/hifn7751.c
diff -u src/sys/dev/pci/hifn7751.c:1.66 src/sys/dev/pci/hifn7751.c:1.67
--- src/sys/dev/pci/hifn7751.c:1.66	Thu Apr 30 03:24:15 2020
+++ src/sys/dev/pci/hifn7751.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hifn7751.c,v 1.66 2020/04/30 03:24:15 riastradh Exp $	*/
+/*	$NetBSD: hifn7751.c,v 1.67 2020/04/30 03:40:53 riastradh Exp $	*/
 /*	$FreeBSD: hifn7751.c,v 1.5.2.7 2003/10/08 23:52:00 sam Exp $ */
 /*	$OpenBSD: hifn7751.c,v 1.140 2003/08/01 17:55:54 deraadt Exp $	*/
 
@@ -48,7 +48,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v 1.66 2020/04/30 03:24:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v 1.67 2020/04/30 03:40:53 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -68,7 +68,6 @@ __KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v
 #else
 #include <opencrypto/cryptodev.h>
 #include <sys/cprng.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 #include <sys/sha1.h>
 #endif
@@ -439,7 +438,6 @@ hifn_attach(device_t parent, device_t se
 
 	if (sc->sc_flags & (HIFN_HAS_PUBLIC | HIFN_HAS_RNG)) {
 		hifn_init_pubrng(sc);
-		sc->sc_rng_need = RND_POOLBITS / NBBY;
 	}
 
 #ifdef	__OpenBSD__
@@ -620,9 +618,6 @@ hifn_init_pubrng(struct hifn_softc *sc)
 		WRITE_REG_1(sc, HIFN_1_DMA_IER, sc->sc_dmaier);
 	}
 
-	/* Call directly into the RNG once to prime the pool. */
-	hifn_rng(sc);   /* Sets callout/timeout at end */
-
 	return (0);
 }
 

Index: src/sys/dev/pci/ubsec.c
diff -u src/sys/dev/pci/ubsec.c:1.49 src/sys/dev/pci/ubsec.c:1.50
--- src/sys/dev/pci/ubsec.c:1.49	Thu Apr 30 03:24:15 2020
+++ src/sys/dev/pci/ubsec.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ubsec.c,v 1.49 2020/04/30 03:24:15 riastradh Exp $	*/
+/*	$NetBSD: ubsec.c,v 1.50 2020/04/30 03:40:53 riastradh Exp $	*/
 /* $FreeBSD: src/sys/dev/ubsec/ubsec.c,v 1.6.2.6 2003/01/23 21:06:43 sam Exp $ */
 /*	$OpenBSD: ubsec.c,v 1.143 2009/03/27 13:31:30 reyk Exp$	*/
 
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.49 2020/04/30 03:24:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.50 2020/04/30 03:40:53 riastradh Exp $");
 
 #undef UBSEC_DEBUG
 
@@ -69,7 +69,6 @@ __KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.
 #else
  #include <sys/cprng.h>
  #include <sys/md5.h>
- #include <sys/rndpool.h>
  #include <sys/rndsource.h>
 #endif
 #include <sys/sha1.h>
@@ -426,7 +425,6 @@ ubsec_attach(device_t parent, device_t s
 		return;
 	}
 
-	sc->sc_rng_need = RND_POOLBITS / NBBY;
 	mutex_init(&sc->sc_mtx, MUTEX_DEFAULT, IPL_VM);
 
 	SIMPLEQ_INIT(&sc->sc_freequeue);
@@ -516,9 +514,6 @@ ubsec_attach(device_t parent, device_t s
 		rnd_attach_source(&sc->sc_rnd_source, device_xname(sc->sc_dev),
 				  RND_TYPE_RNG,
 				  RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-#ifdef __NetBSD__
-		callout_schedule(&sc->sc_rngto, sc->sc_rnghz);
-#endif
 
  skip_rng:
 		if (sc->sc_rnghz)

Index: src/sys/dev/pci/viornd.c
diff -u src/sys/dev/pci/viornd.c:1.12 src/sys/dev/pci/viornd.c:1.13
--- src/sys/dev/pci/viornd.c:1.12	Sun Jun 10 14:59:23 2018
+++ src/sys/dev/pci/viornd.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/* 	$NetBSD: viornd.c,v 1.12 2018/06/10 14:59:23 jakllsch Exp $ */
+/* 	$NetBSD: viornd.c,v 1.13 2020/04/30 03:40:53 riastradh Exp $ */
 /*	$OpenBSD: viornd.c,v 1.1 2014/01/21 21:14:58 sf Exp $	*/
 
 /*
@@ -198,7 +198,6 @@ viornd_attach(device_t parent, device_t 
 	rnd_attach_source(&sc->sc_rndsource, device_xname(sc->sc_dev),
 			  RND_TYPE_RNG,
 			  RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-	viornd_get(VIORND_BUFSIZE, sc);
 
 	return;
 

Index: src/sys/dev/usb/ualea.c
diff -u src/sys/dev/usb/ualea.c:1.10 src/sys/dev/usb/ualea.c:1.11
--- src/sys/dev/usb/ualea.c:1.10	Thu Apr 30 03:24:28 2020
+++ src/sys/dev/usb/ualea.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ualea.c,v 1.10 2020/04/30 03:24:28 riastradh Exp $	*/
+/*	$NetBSD: ualea.c,v 1.11 2020/04/30 03:40:53 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -30,14 +30,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ualea.c,v 1.10 2020/04/30 03:24:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ualea.c,v 1.11 2020/04/30 03:40:53 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/atomic.h>
 #include <sys/device_if.h>
 #include <sys/kmem.h>
 #include <sys/module.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <dev/usb/usb.h>
@@ -54,7 +53,6 @@ struct ualea_softc {
 	/*
 	 * Lock covers:
 	 * - sc_needed
-	 * - sc_attached
 	 * - sc_inflight
 	 * - usbd_transfer(sc_xfer)
 	 */
@@ -107,9 +105,6 @@ ualea_attach(device_t parent, device_t s
 	/* Initialize the softc.  */
 	sc->sc_dev = self;
 	mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_SOFTUSB);
-	rndsource_setcb(&sc->sc_rnd, ualea_get, sc);
-	rnd_attach_source(&sc->sc_rnd, device_xname(self), RND_TYPE_RNG,
-	    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
 
 	/* Get endpoint descriptor 0.  Make sure it's bulk-in.  */
 	ed = usbd_interface2endpoint_descriptor(uiaa->uiaa_iface, 0);
@@ -150,12 +145,10 @@ ualea_attach(device_t parent, device_t s
 	    ualea_xfer_done);
 
 	/* Success!  We are ready to run.  */
-	mutex_enter(&sc->sc_lock);
 	sc->sc_attached = true;
-	mutex_exit(&sc->sc_lock);
-
-	/* Get some initial entropy now.  */
-	ualea_get(RND_POOLBITS/NBBY, sc);
+	rndsource_setcb(&sc->sc_rnd, ualea_get, sc);
+	rnd_attach_source(&sc->sc_rnd, device_xname(self), RND_TYPE_RNG,
+	    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
 }
 
 static int
@@ -164,9 +157,8 @@ ualea_detach(device_t self, int flags)
 	struct ualea_softc *sc = device_private(self);
 
 	/* Prevent new use of xfer.  */
-	mutex_enter(&sc->sc_lock);
-	sc->sc_attached = false;
-	mutex_exit(&sc->sc_lock);
+	if (sc->sc_attached)
+		rnd_detach_source(&sc->sc_rnd);
 
 	/* Cancel pending xfer.  */
 	if (sc->sc_pipe)
@@ -178,7 +170,6 @@ ualea_detach(device_t self, int flags)
 		usbd_destroy_xfer(sc->sc_xfer);
 	if (sc->sc_pipe)
 		(void)usbd_close_pipe(sc->sc_pipe);
-	rnd_detach_source(&sc->sc_rnd);
 	mutex_destroy(&sc->sc_lock);
 
 	return 0;
@@ -217,22 +208,10 @@ ualea_get(size_t nbytes, void *cookie)
 	struct ualea_softc *sc = cookie;
 
 	mutex_enter(&sc->sc_lock);
-
-	/* Do nothing if not yet attached.  */
-	if (!sc->sc_attached)
-		goto out;
-
-	/* Update how many bytes we need.  */
 	sc->sc_needed = MAX(sc->sc_needed, nbytes);
-
-	/* Do nothing if xfer is already in flight.  */
-	if (sc->sc_inflight)
-		goto out;
-
-	/* Issue xfer.  */
-	ualea_xfer(sc);
-
-out:	mutex_exit(&sc->sc_lock);
+	if (!sc->sc_inflight)
+		ualea_xfer(sc);
+	mutex_exit(&sc->sc_lock);
 }
 
 static void

Index: src/sys/rump/librump/rumpkern/hyperentropy.c
diff -u src/sys/rump/librump/rumpkern/hyperentropy.c:1.15 src/sys/rump/librump/rumpkern/hyperentropy.c:1.16
--- src/sys/rump/librump/rumpkern/hyperentropy.c:1.15	Sat May 21 14:59:45 2016
+++ src/sys/rump/librump/rumpkern/hyperentropy.c	Thu Apr 30 03:40:53 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hyperentropy.c,v 1.15 2016/05/21 14:59:45 riastradh Exp $	*/
+/*	$NetBSD: hyperentropy.c,v 1.16 2020/04/30 03:40:53 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2014 Antti Kantee.  All Rights Reserved.
@@ -26,12 +26,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hyperentropy.c,v 1.15 2016/05/21 14:59:45 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hyperentropy.c,v 1.16 2020/04/30 03:40:53 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/kmem.h>
 #include <sys/mutex.h>
-#include <sys/rndpool.h>
 #include <sys/rndsource.h>
 
 #include <rump-sys/kern.h>
@@ -41,28 +40,27 @@ __KERNEL_RCSID(0, "$NetBSD: hyperentropy
 static kmutex_t rndsrc_lock;
 static krndsource_t rndsrc;
 
-#define MAXGET (RND_POOLBITS/NBBY)
 static void
 feedrandom(size_t bytes, void *cookie __unused)
 {
 	uint8_t *rnddata;
 	size_t n, nread;
 
-	rnddata = kmem_intr_alloc(MAXGET, KM_SLEEP);
+	rnddata = kmem_intr_alloc(bytes, KM_SLEEP);
 	n = 0;
-	while (n < MIN(MAXGET, bytes)) {
-		if (rumpuser_getrandom(rnddata + n, MIN(MAXGET, bytes) - n,
+	while (n < bytes) {
+		if (rumpuser_getrandom(rnddata + n, bytes - n,
 			RUMPUSER_RANDOM_HARD|RUMPUSER_RANDOM_NOWAIT, &nread)
 		    != 0)
 			break;
-		n += MIN(nread, MIN(MAXGET, bytes) - n);
+		n += MIN(nread, bytes - n);
 	}
 	if (n) {
 		mutex_enter(&rndsrc_lock);
 		rnd_add_data_sync(&rndsrc, rnddata, n, NBBY*n);
 		mutex_exit(&rndsrc_lock);
 	}
-	kmem_intr_free(rnddata, MAXGET);
+	kmem_intr_free(rnddata, bytes);
 }
 
 void
@@ -74,5 +72,4 @@ rump_hyperentropy_init(void)
 	rndsource_setcb(&rndsrc, &feedrandom, NULL);
 	rnd_attach_source(&rndsrc, "rump_hyperent", RND_TYPE_VM,
 	    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-	feedrandom(MAXGET, NULL);
 }

Reply via email to