Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/macppc/dev port-macppc/56289: kernel spinout on mac...



details: https://anonhg.NetBSD.org/src/rev/0ca5d32993ee
branches: trunk
changeset: 380033:0ca5d32993ee
user: jmcneill <jmcneill%NetBSD.org@localhost>
date: Fri Jul 02 10:14:07 2021 +0000
description:
port-macppc/56289: kernel spinout on macppc when runing ATF tests with LOCKDEBUG
Move call to snapper_set_rate from trigger_output to commit_settings,
since the intr lock is not held when calling the latter.
diffstat:
 sys/arch/macppc/dev/snapper.c | 25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)
diffs (82 lines):
diff -r ab777c6c2aa7 -r 0ca5d32993ee sys/arch/macppc/dev/snapper.c
--- a/sys/arch/macppc/dev/snapper.c Fri Jul 02 07:15:35 2021 +0000
+++ b/sys/arch/macppc/dev/snapper.c Fri Jul 02 10:14:07 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: snapper.c,v 1.59 2021年04月26日 14:01:47 thorpej Exp $ */
+/* $NetBSD: snapper.c,v 1.60 2021年07月02日 10:14:07 jmcneill Exp $ */
 /* Id: snapper.c,v 1.11 2002年10月31日 17:42:13 tsubai Exp */
 /* Id: i2s.c,v 1.12 2005年01月15日 14:32:35 tsubai Exp */
 
@@ -35,7 +35,7 @@
 */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: snapper.c,v 1.59 2021年04月26日 14:01:47 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: snapper.c,v 1.60 2021年07月02日 10:14:07 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/audioio.h>
@@ -133,6 +133,7 @@ static int snapper_query_format(void *, 
 static int snapper_set_format(void *, int,
 const audio_params_t *, const audio_params_t *,
 audio_filter_reg_t *, audio_filter_reg_t *);
+static int snapper_commit_settings(void *);
 static int snapper_round_blocksize(void *, int, int, const audio_params_t *);
 static int snapper_halt_output(void *);
 static int snapper_halt_input(void *);
@@ -232,6 +233,7 @@ CFATTACH_DECL_NEW(snapper, sizeof(struct
 const struct audio_hw_if snapper_hw_if = {
 .query_format = snapper_query_format,
 .set_format = snapper_set_format,
+ .commit_settings = snapper_commit_settings,
 .round_blocksize = snapper_round_blocksize,
 .halt_output = snapper_halt_output,
 .halt_input = snapper_halt_input,
@@ -1013,6 +1015,17 @@ snapper_set_format(void *h, int setmode,
 }
 
 static int
+snapper_commit_settings(void *h)
+{
+ struct snapper_softc *sc;
+
+ DPRINTF("commit_settings\n");
+ sc = h;
+
+ return snapper_set_rate(sc);
+}
+
+static int
 snapper_round_blocksize(void *h, int size, int mode,
 const audio_params_t *param)
 {
@@ -1408,14 +1421,10 @@ snapper_trigger_output(void *h, void *st
 struct dbdma_command *cmd;
 vaddr_t va;
 int i, len, intmode;
- int res;
 
 DPRINTF("trigger_output %p %p 0x%x\n", start, end, bsize);
 sc = h;
 
- if ((res = snapper_set_rate(sc)) != 0)
- return res;
-
 cmd = sc->sc_odmacmd;
 sc->sc_ointr = intr;
 sc->sc_oarg = arg;
@@ -1463,14 +1472,10 @@ snapper_trigger_input(void *h, void *sta
 struct dbdma_command *cmd;
 vaddr_t va;
 int i, len, intmode;
- int res;
 
 DPRINTF("trigger_input %p %p 0x%x\n", start, end, bsize);
 sc = h;
 
- if ((res = snapper_set_rate(sc)) != 0)
- return res;
-
 cmd = sc->sc_idmacmd;
 sc->sc_iintr = intr;
 sc->sc_iarg = arg;


Home | Main Index | Thread Index | Old Index

AltStyle によって変換されたページ (->オリジナル) /