Sun Jul 31 18:39:00 2011 UTC ()
simple_lock to mutex conversion.


(jakllsch)
diff -r1.142 -r1.143 src/sys/dev/ic/ncr53c9x.c
diff -r1.54 -r1.55 src/sys/dev/ic/ncr53c9xvar.h

cvs diff -r1.142 -r1.143 src/sys/dev/ic/ncr53c9x.c (expand / switch to context diff)
--- src/sys/dev/ic/ncr53c9x.c 2011/07/04 16:06:17 1.142
+++ src/sys/dev/ic/ncr53c9x.c 2011/07/31 18:39:00 1.143
@@ -1,4 +1,4 @@
-/*	$NetBSD: ncr53c9x.c,v 1.142 2011/07/04 16:06:17 joerg Exp $	*/
+/*	$NetBSD: ncr53c9x.c,v 1.143 2011/07/31 18:39:00 jakllsch Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2002 The NetBSD Foundation, Inc.
@@ -70,7 +70,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ncr53c9x.c,v 1.142 2011/07/04 16:06:17 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ncr53c9x.c,v 1.143 2011/07/31 18:39:00 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -194,7 +194,7 @@
 	struct scsipi_adapter *adapt = &sc->sc_adapter;
 	struct scsipi_channel *chan = &sc->sc_channel;
 
-	simple_lock_init(&sc->sc_lock);
+	mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_BIO);
 
 	callout_init(&sc->sc_watchdog, 0);
 
@@ -341,6 +341,8 @@
 	if (sc->sc_omess)
 		free(sc->sc_omess, M_DEVBUF);
 
+	mutex_destroy(&sc->sc_lock);
+
 	return 0;
 }
 
@@ -857,13 +859,12 @@
 	struct scsipi_periph *periph;
 	struct ncr53c9x_softc *sc;
 	struct ncr53c9x_ecb *ecb;
-	int s, flags;
+	int flags;
 
 	NCR_TRACE(("[ncr53c9x_scsipi_request] "));
 
 	sc = device_private(chan->chan_adapter->adapt_dev);
-	s = splbio();
-	simple_lock(&sc->sc_lock);
+	mutex_enter(&sc->sc_lock);
 
 	switch (req) {
 	case ADAPTER_REQ_RUN_XFER:
@@ -886,8 +887,7 @@
 			printf("%s: unable to allocate ecb\n",
 			    device_xname(sc->sc_dev));
 			xs->error = XS_RESOURCE_SHORTAGE;
-			simple_unlock(&sc->sc_lock);
-			splx(s);
+			mutex_exit(&sc->sc_lock);
 			scsipi_done(xs);
 			return;
 		}
@@ -972,8 +972,7 @@
 		break;
 	}
 
-	simple_unlock(&sc->sc_lock);
-	splx(s);
+	mutex_exit(&sc->sc_lock);
 }
 
 void
@@ -1011,9 +1010,9 @@
 	NCR_TRACE(("[ncr53c9x_poll] "));
 	while (count) {
 		if (NCRDMA_ISINTR(sc)) {
-			simple_unlock(&sc->sc_lock);
+			mutex_exit(&sc->sc_lock);
 			ncr53c9x_intr(sc);
-			simple_lock(&sc->sc_lock);
+			mutex_enter(&sc->sc_lock);
 		}
 #if alternatively
 		if (NCR_READ_REG(sc, NCR_STAT) & NCRSTAT_INT)
@@ -1036,16 +1035,14 @@
     int flag, struct proc *p)
 {
 	struct ncr53c9x_softc *sc;
-	int s, error = 0;
+	int error = 0;
 
 	sc = device_private(chan->chan_adapter->adapt_dev);
 	switch (cmd) {
 	case SCBUSIORESET:
-		s = splbio();
-		simple_lock(&sc->sc_lock);
+		mutex_enter(&sc->sc_lock);
 		ncr53c9x_init(sc, 1);
-		simple_unlock(&sc->sc_lock);
-		splx(s);
+		mutex_exit(&sc->sc_lock);
 		break;
 	default:
 		error = ENOTTY;
@@ -1279,9 +1276,9 @@
 
 	ncr53c9x_free_ecb(sc, ecb);
 	ti->cmds++;
-	simple_unlock(&sc->sc_lock);
+	mutex_exit(&sc->sc_lock);
 	scsipi_done(xs);
-	simple_lock(&sc->sc_lock);
+	mutex_enter(&sc->sc_lock);
 }
 
 void
@@ -2090,7 +2087,7 @@
 	if (!NCRDMA_ISINTR(sc))
 		return 0;
 
-	simple_lock(&sc->sc_lock);
+	mutex_enter(&sc->sc_lock);
 again:
 	/* and what do the registers say... */
 	ncr53c9x_readregs(sc);
@@ -2624,7 +2621,7 @@
 		if (sc->sc_state == NCR_IDLE) {
 			printf("%s: stray interrupt\n",
 			    device_xname(sc->sc_dev));
-			simple_unlock(&sc->sc_lock);
+			mutex_exit(&sc->sc_lock);
 			return 0;
 		}
 		break;
@@ -2815,7 +2812,7 @@
 	}
 
 out:
-	simple_unlock(&sc->sc_lock);
+	mutex_exit(&sc->sc_lock);
 	return 1;
 
 reset:
@@ -2899,7 +2896,6 @@
 	struct scsipi_periph *periph = xs->xs_periph;
 	struct ncr53c9x_softc *sc;
 	struct ncr53c9x_tinfo *ti;
-	int s;
 
 	sc = device_private(periph->periph_channel->chan_adapter->adapt_dev);
 	ti = &sc->sc_tinfo[periph->periph_target];
@@ -2919,8 +2915,7 @@
 	printf("TRACE: %s.", ecb->trace);
 #endif
 
-	s = splbio();
-	simple_lock(&sc->sc_lock);
+	mutex_enter(&sc->sc_lock);
 
 	if (ecb->flags & ECB_ABORT) {
 		/* abort timed out */
@@ -2946,8 +2941,7 @@
 		}
 	}
 
-	simple_unlock(&sc->sc_lock);
-	splx(s);
+	mutex_exit(&sc->sc_lock);
 }
 
 void
@@ -2956,12 +2950,11 @@
 	struct ncr53c9x_softc *sc = arg;
 	struct ncr53c9x_tinfo *ti;
 	struct ncr53c9x_linfo *li;
-	int t, s;
+	int t;
 	/* Delete any structures that have not been used in 10min. */
 	time_t old = time_second - (10 * 60);
 
-	s = splbio();
-	simple_lock(&sc->sc_lock);
+	mutex_enter(&sc->sc_lock);
 	for (t = 0; t < sc->sc_ntarg; t++) {
 		ti = &sc->sc_tinfo[t];
 		li = LIST_FIRST(&ti->luns);
@@ -2980,7 +2973,6 @@
 			li = LIST_NEXT(li, link);
 		}
 	}
-	simple_unlock(&sc->sc_lock);
-	splx(s);
+	mutex_exit(&sc->sc_lock);
 	callout_reset(&sc->sc_watchdog, 60 * hz, ncr53c9x_watch, sc);
 }

cvs diff -r1.54 -r1.55 src/sys/dev/ic/ncr53c9xvar.h (expand / switch to context diff)
--- src/sys/dev/ic/ncr53c9xvar.h 2009/09/07 13:31:44 1.54
+++ src/sys/dev/ic/ncr53c9xvar.h 2011/07/31 18:39:00 1.55
@@ -1,4 +1,4 @@
-/*	$NetBSD: ncr53c9xvar.h,v 1.54 2009/09/07 13:31:44 tsutsui Exp $	*/
+/*	$NetBSD: ncr53c9xvar.h,v 1.55 2011/07/31 18:39:00 jakllsch Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
 #ifndef _DEV_IC_NCR53C9XVAR_H_
 #define _DEV_IC_NCR53C9XVAR_H_
 
-#include <sys/simplelock.h>
+#include <sys/mutex.h>
 
 /* Set this to 1 for normal debug, or 2 for per-target tracing. */
 /* #define NCR53C9X_DEBUG		1 */
@@ -335,7 +335,7 @@
 	int sc_minsync;		/* Minimum sync period / 4 */
 	int sc_maxxfer;		/* Maximum transfer size */
 
-	struct simplelock sc_lock;/* driver mutex */
+	kmutex_t sc_lock;	/* driver mutex */
 };
 
 /* values for sc_state */