summaryrefslogtreecommitdiff
path: root/sys/dev/ic
diff options
context:
space:
mode:
authorriastradh <riastradh@NetBSD.org>2022-03-19 11:55:03 +0000
committerriastradh <riastradh@NetBSD.org>2022-03-19 11:55:03 +0000
commitfa5a7cd4feae6182b6f5f4e96eb094546fa352ea (patch)
treed5a343a59180b85a9efeeb5f727cbe5b8c1f3502 /sys/dev/ic
parentb2f23986bc461ea1f2c7b9f45d032fc63b597ba3 (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.c7
-rw-r--r--sys/dev/ic/amdccpvar.h3
-rw-r--r--sys/dev/ic/rng200.c7
-rw-r--r--sys/dev/ic/rng200var.h3
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;
};