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,