diff options
| author | riastradh <riastradh@NetBSD.org> | 2022-03-19 11:55:03 +0000 |
|---|---|---|
| committer | riastradh <riastradh@NetBSD.org> | 2022-03-19 11:55:03 +0000 |
| commit | fa5a7cd4feae6182b6f5f4e96eb094546fa352ea (patch) | |
| tree | d5a343a59180b85a9efeeb5f727cbe5b8c1f3502 /sys/dev/ic | |
| parent | b2f23986bc461ea1f2c7b9f45d032fc63b597ba3 (diff) | |
rnd(9): Omit needless locks in various HWRNG drivers.
Now that the rnd(9) API guarantees serial callbacks, we can simplify
everything a bit more.
(Some drivers like hifn(4) and sun8icrypto(4) still use locks to
coordinate with other parts of the driver to submit requests to and
process responses from the device.)
Diffstat (limited to 'sys/dev/ic')
| -rw-r--r-- | sys/dev/ic/amdccp.c | 7 | ||||
| -rw-r--r-- | sys/dev/ic/amdccpvar.h | 3 | ||||
| -rw-r--r-- | sys/dev/ic/rng200.c | 7 | ||||
| -rw-r--r-- | sys/dev/ic/rng200var.h | 3 |
4 files changed, 5 insertions, 15 deletions
diff --git a/sys/dev/ic/amdccp.c b/sys/dev/ic/amdccp.c index 6d3071c40b3..702fd5b2277 100644 --- a/sys/dev/ic/amdccp.c +++ b/sys/dev/ic/amdccp.c @@ -1,4 +1,4 @@ -/* $NetBSD: amdccp.c,v 1.4 2022/03/19 11:37:06 riastradh Exp $ */ +/* $NetBSD: amdccp.c,v 1.5 2022/03/19 11:55:03 riastradh Exp $ */ /* * Copyright (c) 2018 Jonathan A. Kollasch @@ -28,7 +28,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdccp.c,v 1.4 2022/03/19 11:37:06 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdccp.c,v 1.5 2022/03/19 11:55:03 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -45,7 +45,6 @@ void amdccp_common_attach(struct amdccp_softc *sc) { - mutex_init(&sc->sc_rndlock, MUTEX_DEFAULT, IPL_SOFTSERIAL); 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); @@ -74,7 +73,6 @@ amdccp_rnd_callback(size_t bytes_wanted, void *priv) uint32_t buf[128]; size_t cnt; - mutex_enter(&sc->sc_rndlock); while (bytes_wanted) { const size_t nbytes = MIN(bytes_wanted, sizeof(buf)); const size_t nwords = howmany(nbytes, sizeof(buf[0])); @@ -95,5 +93,4 @@ amdccp_rnd_callback(size_t bytes_wanted, void *priv) bytes_wanted -= MIN(bytes_wanted, cntby); } explicit_memset(buf, 0, sizeof(buf)); - mutex_exit(&sc->sc_rndlock); } diff --git a/sys/dev/ic/amdccpvar.h b/sys/dev/ic/amdccpvar.h index 92698f94a9a..e95a56eac81 100644 --- a/sys/dev/ic/amdccpvar.h +++ b/sys/dev/ic/amdccpvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: amdccpvar.h,v 1.1 2018/10/19 21:09:10 jakllsch Exp $ */ +/* $NetBSD: amdccpvar.h,v 1.2 2022/03/19 11:55:03 riastradh Exp $ */ /* * Copyright (c) 2018 Jonathan A. Kollasch @@ -38,7 +38,6 @@ struct amdccp_softc { bus_space_tag_t sc_bst; bus_space_handle_t sc_bsh; - kmutex_t sc_rndlock; krndsource_t sc_rndsource; }; diff --git a/sys/dev/ic/rng200.c b/sys/dev/ic/rng200.c index f16e26f8f63..692f0480c3d 100644 --- a/sys/dev/ic/rng200.c +++ b/sys/dev/ic/rng200.c @@ -1,4 +1,4 @@ -/* $NetBSD: rng200.c,v 1.3 2022/03/19 11:37:06 riastradh Exp $ */ +/* $NetBSD: rng200.c,v 1.4 2022/03/19 11:55:03 riastradh Exp $ */ /* * Copyright (c) 2019 The NetBSD Foundation, Inc. @@ -79,7 +79,6 @@ rng200_get(size_t bytes_wanted, void *priv) uint32_t w, data; unsigned count; - mutex_enter(&sc->sc_lock); while (bytes_wanted) { w = READ4(sc, RNG200_STATUS); @@ -98,15 +97,12 @@ rng200_get(size_t bytes_wanted, void *priv) bytes_wanted -= MIN(bytes_wanted, sizeof(data)); } explicit_memset(&data, 0, sizeof(data)); - mutex_exit(&sc->sc_lock); } void rng200_attach(struct rng200_softc *sc) { - mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_SOFTSERIAL); - 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); @@ -117,6 +113,5 @@ rng200_detach(struct rng200_softc *sc) { rnd_detach_source(&sc->sc_rndsource); - mutex_destroy(&sc->sc_lock); } diff --git a/sys/dev/ic/rng200var.h b/sys/dev/ic/rng200var.h index fe00d799ee5..3fc770e3eaf 100644 --- a/sys/dev/ic/rng200var.h +++ b/sys/dev/ic/rng200var.h @@ -1,4 +1,4 @@ -/* $NetBSD: rng200var.h,v 1.1 2019/09/01 14:44:14 mlelstv Exp $ */ +/* $NetBSD: rng200var.h,v 1.2 2022/03/19 11:55:03 riastradh Exp $ */ /* * Copyright (c) 2019 The NetBSD Foundation, Inc. @@ -41,7 +41,6 @@ struct rng200_softc { bus_space_tag_t sc_bst; bus_space_handle_t sc_bsh; - kmutex_t sc_lock; krndsource_t sc_rndsource; const char *sc_name; }; |
