Module Name:    src
Committed By:   riastradh
Date:           Thu Apr 30 03:24:15 UTC 2020

Modified Files:
        src/sys/dev/pci: amdpm.c hifn7751.c ubsec.c

Log Message:
Don't attach rndsource until it's actually ready to run.


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/dev/pci/amdpm.c
cvs rdiff -u -r1.65 -r1.66 src/sys/dev/pci/hifn7751.c
cvs rdiff -u -r1.48 -r1.49 src/sys/dev/pci/ubsec.c

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

Modified files:

Index: src/sys/dev/pci/amdpm.c
diff -u src/sys/dev/pci/amdpm.c:1.39 src/sys/dev/pci/amdpm.c:1.40
--- src/sys/dev/pci/amdpm.c:1.39	Mon Apr 13 16:33:25 2015
+++ src/sys/dev/pci/amdpm.c	Thu Apr 30 03:24:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: amdpm.c,v 1.39 2015/04/13 16:33:25 riastradh Exp $	*/
+/*	$NetBSD: amdpm.c,v 1.40 2020/04/30 03:24:15 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.39 2015/04/13 16:33:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amdpm.c,v 1.40 2020/04/30 03:24:15 riastradh Exp $");
 
 #include "opt_amdpm.h"
 
@@ -191,11 +191,6 @@ amdpm_attach(device_t parent, device_t s
 			    "random number generator enabled (apprx. %dms)\n",
 			    i);
 			callout_init(&sc->sc_rnd_ch, CALLOUT_MPSAFE);
-			rndsource_setcb(&sc->sc_rnd_source,
-					amdpm_rnd_get, sc);
-			rnd_attach_source(&sc->sc_rnd_source,
-			    device_xname(self), RND_TYPE_RNG,
-			    RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
 #ifdef AMDPM_RND_COUNTERS
 			evcnt_attach_dynamic(&sc->sc_rnd_hits, EVCNT_TYPE_MISC,
 			    NULL, device_xname(self), "rnd hits");
@@ -207,6 +202,11 @@ amdpm_attach(device_t parent, device_t s
 				    "rnd data");
 			}
 #endif
+			rndsource_setcb(&sc->sc_rnd_source,
+					amdpm_rnd_get, sc);
+			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.65 src/sys/dev/pci/hifn7751.c:1.66
--- src/sys/dev/pci/hifn7751.c:1.65	Sat Feb 29 16:36:25 2020
+++ src/sys/dev/pci/hifn7751.c	Thu Apr 30 03:24:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hifn7751.c,v 1.65 2020/02/29 16:36:25 mlelstv Exp $	*/
+/*	$NetBSD: hifn7751.c,v 1.66 2020/04/30 03:24:15 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.65 2020/02/29 16:36:25 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hifn7751.c,v 1.66 2020/04/30 03:24:15 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -595,13 +595,6 @@ hifn_init_pubrng(struct hifn_softc *sc)
 		 */
 		DELAY(4000);
 
-#ifdef __NetBSD__
-		rndsource_setcb(&sc->sc_rnd_source, hifn_rng_get, sc);
-		rnd_attach_source(&sc->sc_rnd_source, device_xname(sc->sc_dv),
-				  RND_TYPE_RNG,
-				  RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
-#endif
-
 		if (hz >= 100)
 			sc->sc_rnghz = hz / 100;
 		else
@@ -611,6 +604,13 @@ hifn_init_pubrng(struct hifn_softc *sc)
 #else	/* !__OpenBSD__ */
 		callout_init(&sc->sc_rngto, CALLOUT_MPSAFE);
 #endif	/* !__OpenBSD__ */
+
+#ifdef __NetBSD__
+		rndsource_setcb(&sc->sc_rnd_source, hifn_rng_get, sc);
+		rnd_attach_source(&sc->sc_rnd_source, device_xname(sc->sc_dv),
+				  RND_TYPE_RNG,
+				  RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
+#endif
 	}
 
 	/* Enable public key engine, if available */

Index: src/sys/dev/pci/ubsec.c
diff -u src/sys/dev/pci/ubsec.c:1.48 src/sys/dev/pci/ubsec.c:1.49
--- src/sys/dev/pci/ubsec.c:1.48	Mon Mar 16 21:20:09 2020
+++ src/sys/dev/pci/ubsec.c	Thu Apr 30 03:24:15 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: ubsec.c,v 1.48 2020/03/16 21:20:09 pgoyette Exp $	*/
+/*	$NetBSD: ubsec.c,v 1.49 2020/04/30 03:24:15 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.48 2020/03/16 21:20:09 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ubsec.c,v 1.49 2020/04/30 03:24:15 riastradh Exp $");
 
 #undef UBSEC_DEBUG
 
@@ -501,11 +501,6 @@ ubsec_attach(device_t parent, device_t s
 			ubsec_dma_free(sc, &sc->sc_rng.rng_q.q_mcr);
 			goto skip_rng;
 		}
-
-		rndsource_setcb(&sc->sc_rnd_source, ubsec_rng_get, sc);
-		rnd_attach_source(&sc->sc_rnd_source, device_xname(sc->sc_dev),
-				  RND_TYPE_RNG,
-				  RND_FLAG_COLLECT_VALUE|RND_FLAG_HASCB);
 		if (hz >= 100)
 			sc->sc_rnghz = hz / 100;
 		else
@@ -516,8 +511,15 @@ ubsec_attach(device_t parent, device_t s
 #else
 		callout_init(&sc->sc_rngto, 0);
 		callout_setfunc(&sc->sc_rngto, ubsec_rng, sc);
+#endif
+		rndsource_setcb(&sc->sc_rnd_source, ubsec_rng_get, sc);
+		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)
 			aprint_normal_dev(self,

Reply via email to