Module Name: src
Committed By: skrll
Date: Thu Mar 20 06:48:54 UTC 2014
Modified Files:
src/sys/arch/arm/ixp12x0: ixp12x0_intr.c
src/sys/arch/arm/xscale: ixp425_if_npe.c ixp425_npe.c ixp425_npevar.h
src/sys/arch/xen/include: xbdvar.h
src/sys/coda: coda_vnops.c
src/sys/dev/mca: ed_mca.c edc_mca.c edvar.h
src/sys/dev/pci: cy82c693.c
src/sys/dev/pci/cxgb: cxgb_osdep.h
src/sys/net: if_tap.c if_tun.c
Log Message:
Mechanically replace simplelock with kmutex_t.
To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/ixp12x0/ixp12x0_intr.c
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/arm/xscale/ixp425_if_npe.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/xscale/ixp425_npe.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/xscale/ixp425_npevar.h
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/xen/include/xbdvar.h
cvs rdiff -u -r1.95 -r1.96 src/sys/coda/coda_vnops.c
cvs rdiff -u -r1.54 -r1.55 src/sys/dev/mca/ed_mca.c
cvs rdiff -u -r1.48 -r1.49 src/sys/dev/mca/edc_mca.c
cvs rdiff -u -r1.16 -r1.17 src/sys/dev/mca/edvar.h
cvs rdiff -u -r1.8 -r1.9 src/sys/dev/pci/cy82c693.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/pci/cxgb/cxgb_osdep.h
cvs rdiff -u -r1.73 -r1.74 src/sys/net/if_tap.c
cvs rdiff -u -r1.116 -r1.117 src/sys/net/if_tun.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/arch/arm/ixp12x0/ixp12x0_intr.c
diff -u src/sys/arch/arm/ixp12x0/ixp12x0_intr.c:1.27 src/sys/arch/arm/ixp12x0/ixp12x0_intr.c:1.28
--- src/sys/arch/arm/ixp12x0/ixp12x0_intr.c:1.27 Sun Mar 2 13:23:32 2014
+++ src/sys/arch/arm/ixp12x0/ixp12x0_intr.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ixp12x0_intr.c,v 1.27 2014/03/02 13:23:32 joerg Exp $ */
+/* $NetBSD: ixp12x0_intr.c,v 1.28 2014/03/20 06:48:54 skrll Exp $ */
/*
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixp12x0_intr.c,v 1.27 2014/03/02 13:23:32 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixp12x0_intr.c,v 1.28 2014/03/20 06:48:54 skrll Exp $");
/*
* Interrupt support for the Intel ixp12x0
@@ -39,7 +39,6 @@ __KERNEL_RCSID(0, "$NetBSD: ixp12x0_intr
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
-#include <sys/simplelock.h>
#include <sys/termios.h>
#include <sys/bus.h>
#include <sys/intr.h>
Index: src/sys/arch/arm/xscale/ixp425_if_npe.c
diff -u src/sys/arch/arm/xscale/ixp425_if_npe.c:1.24 src/sys/arch/arm/xscale/ixp425_if_npe.c:1.25
--- src/sys/arch/arm/xscale/ixp425_if_npe.c:1.24 Mon Feb 24 10:47:46 2014
+++ src/sys/arch/arm/xscale/ixp425_if_npe.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ixp425_if_npe.c,v 1.24 2014/02/24 10:47:46 martin Exp $ */
+/* $NetBSD: ixp425_if_npe.c,v 1.25 2014/03/20 06:48:54 skrll Exp $ */
/*-
* Copyright (c) 2006 Sam Leffler. All rights reserved.
@@ -28,7 +28,7 @@
#if 0
__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/if_npe.c,v 1.1 2006/11/19 23:55:23 sam Exp $");
#endif
-__KERNEL_RCSID(0, "$NetBSD: ixp425_if_npe.c,v 1.24 2014/02/24 10:47:46 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixp425_if_npe.c,v 1.25 2014/03/20 06:48:54 skrll Exp $");
/*
* Intel XScale NPE Ethernet driver.
@@ -57,7 +57,6 @@ __KERNEL_RCSID(0, "$NetBSD: ixp425_if_np
#include <sys/socket.h>
#include <sys/endian.h>
#include <sys/ioctl.h>
-#include <sys/simplelock.h>
#include <sys/syslog.h>
#include <sys/bus.h>
Index: src/sys/arch/arm/xscale/ixp425_npe.c
diff -u src/sys/arch/arm/xscale/ixp425_npe.c:1.9 src/sys/arch/arm/xscale/ixp425_npe.c:1.10
--- src/sys/arch/arm/xscale/ixp425_npe.c:1.9 Sun Oct 14 14:20:58 2012
+++ src/sys/arch/arm/xscale/ixp425_npe.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ixp425_npe.c,v 1.9 2012/10/14 14:20:58 msaitoh Exp $ */
+/* $NetBSD: ixp425_npe.c,v 1.10 2014/03/20 06:48:54 skrll Exp $ */
/*-
* Copyright (c) 2006 Sam Leffler, Errno Consulting
@@ -62,7 +62,7 @@
#if 0
__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npe.c,v 1.1 2006/11/19 23:55:23 sam Exp $");
#endif
-__KERNEL_RCSID(0, "$NetBSD: ixp425_npe.c,v 1.9 2012/10/14 14:20:58 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixp425_npe.c,v 1.10 2014/03/20 06:48:54 skrll Exp $");
/*
* Intel XScale Network Processing Engine (NPE) support.
@@ -86,7 +86,7 @@ __KERNEL_RCSID(0, "$NetBSD: ixp425_npe.c
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
-#include <sys/simplelock.h>
+#include <sys/mutex.h>
#include <sys/time.h>
#include <sys/proc.h>
@@ -274,7 +274,7 @@ ixpnpe_attach(device_t parent, device_t
sc->sc_dt = ixa->ixa_dt;
sc->sc_unit = ixa->ixa_npe;
- simple_lock_init(&sc->sc_lock);
+ mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_VM);
/* XXX: Check features to ensure this NPE is enabled */
@@ -353,13 +353,13 @@ ixpnpe_stopandreset(struct ixpnpe_softc
{
int error;
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
error = npe_cpu_stop(sc); /* stop NPE */
if (error == 0)
error = npe_cpu_reset(sc); /* reset it */
if (error == 0)
sc->started = 0; /* mark stopped */
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
DPRINTF(sc->sc_dev, "%s: error %d\n", __func__, error);
return error;
@@ -386,9 +386,9 @@ ixpnpe_start(struct ixpnpe_softc *sc)
{
int ret;
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
ret = ixpnpe_start_locked(sc);
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
return (ret);
}
@@ -397,11 +397,11 @@ ixpnpe_stop(struct ixpnpe_softc *sc)
{
int error;
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
error = npe_cpu_stop(sc);
if (error == 0)
sc->started = 0;
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
DPRINTF(sc->sc_dev, "%s: error %d\n", __func__, error);
return error;
@@ -489,7 +489,7 @@ ixpnpe_init(struct ixpnpe_softc *sc, con
* currently loaded images. If a critical error occured
* during download, record that the NPE has an invalid image
*/
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
error = npe_load_image(sc, imageCodePtr, 1 /*VERIFY*/);
if (error == 0) {
sc->validImage = 1;
@@ -498,7 +498,7 @@ ixpnpe_init(struct ixpnpe_softc *sc, con
sc->validImage = 0;
}
sc->functionalityId = IX_NPEDL_FUNCTIONID_FROM_IMAGEID_GET(imageId);
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
done:
DPRINTF(sc->sc_dev, "%s: error %d\n", __func__, error);
return error;
@@ -1405,11 +1405,11 @@ ixpnpe_sendandrecvmsg(struct ixpnpe_soft
{
int error;
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
error = ixpnpe_sendmsg_locked(sc, send);
if (error == 0)
error = ixpnpe_recvmsg_locked(sc, recv);
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
return error;
}
@@ -1421,9 +1421,9 @@ ixpnpe_sendmsg(struct ixpnpe_softc *sc,
{
int error;
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
error = ixpnpe_sendmsg_locked(sc, msg);
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
return error;
}
@@ -1433,12 +1433,12 @@ ixpnpe_recvmsg(struct ixpnpe_softc *sc,
{
int error;
- simple_lock(&sc->sc_lock);
+ mutex_enter(&sc->sc_lock);
if (sc->sc_msgwaiting)
memcpy(msg, sc->sc_msg, sizeof(sc->sc_msg));
/* NB: sc_msgwaiting != 1 means the ack fetch failed */
error = sc->sc_msgwaiting != 1 ? EIO : 0;
- simple_unlock(&sc->sc_lock);
+ mutex_exit(&sc->sc_lock);
return error;
}
Index: src/sys/arch/arm/xscale/ixp425_npevar.h
diff -u src/sys/arch/arm/xscale/ixp425_npevar.h:1.4 src/sys/arch/arm/xscale/ixp425_npevar.h:1.5
--- src/sys/arch/arm/xscale/ixp425_npevar.h:1.4 Sun Oct 14 14:20:58 2012
+++ src/sys/arch/arm/xscale/ixp425_npevar.h Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ixp425_npevar.h,v 1.4 2012/10/14 14:20:58 msaitoh Exp $ */
+/* $NetBSD: ixp425_npevar.h,v 1.5 2014/03/20 06:48:54 skrll Exp $ */
/*-
* Copyright (c) 2006 Sam Leffler. All rights reserved.
@@ -89,7 +89,7 @@ struct ixpnpe_softc {
bus_size_t sc_size; /* size of mapped register window */
int sc_unit;
void *sc_ih; /* interrupt handler */
- struct simplelock sc_lock; /* mailbox lock */
+ kmutex_t sc_lock; /* mailbox lock */
uint32_t sc_msg[2]; /* reply msg collected in ixpnpe_intr */
int sc_msgwaiting; /* sc_msg holds valid data */
Index: src/sys/arch/xen/include/xbdvar.h
diff -u src/sys/arch/xen/include/xbdvar.h:1.14 src/sys/arch/xen/include/xbdvar.h:1.15
--- src/sys/arch/xen/include/xbdvar.h:1.14 Thu Feb 2 19:43:01 2012
+++ src/sys/arch/xen/include/xbdvar.h Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: xbdvar.h,v 1.14 2012/02/02 19:43:01 tls Exp $ */
+/* $NetBSD: xbdvar.h,v 1.15 2014/03/20 06:48:54 skrll Exp $ */
/*
*
@@ -30,14 +30,11 @@
#ifndef _XEN_XBDVAR_H_
#define _XEN_XBDVAR_H_
-#include <sys/simplelock.h>
-
struct xbd_softc {
device_t sc_dev; /* base device glue */
struct dk_softc sc_dksc; /* generic disk interface */
unsigned long sc_xd_device; /* cookie identifying device */
struct dk_intf *sc_di; /* pseudo-disk interface */
- struct simplelock sc_slock; /* our lock */
int sc_shutdown; /* about to be removed */
krndsource_t sc_rnd_source;
};
Index: src/sys/coda/coda_vnops.c
diff -u src/sys/coda/coda_vnops.c:1.95 src/sys/coda/coda_vnops.c:1.96
--- src/sys/coda/coda_vnops.c:1.95 Thu Feb 27 16:51:37 2014
+++ src/sys/coda/coda_vnops.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: coda_vnops.c,v 1.95 2014/02/27 16:51:37 hannken Exp $ */
+/* $NetBSD: coda_vnops.c,v 1.96 2014/03/20 06:48:54 skrll Exp $ */
/*
*
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.95 2014/02/27 16:51:37 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: coda_vnops.c,v 1.96 2014/03/20 06:48:54 skrll Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1936,7 +1936,7 @@ coda_getpages(void *v)
* XXX Perhaps we should not fully open the file, but
* simply obtain a container file.
*/
- /* XXX Is it ok to do this while holding the simplelock? */
+ /* XXX Is it ok to do this while holding the mutex? */
cerror = VOP_OPEN(vp, FREAD, cred);
if (cerror) {
Index: src/sys/dev/mca/ed_mca.c
diff -u src/sys/dev/mca/ed_mca.c:1.54 src/sys/dev/mca/ed_mca.c:1.55
--- src/sys/dev/mca/ed_mca.c:1.54 Sun Mar 16 05:20:28 2014
+++ src/sys/dev/mca/ed_mca.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: ed_mca.c,v 1.54 2014/03/16 05:20:28 dholland Exp $ */
+/* $NetBSD: ed_mca.c,v 1.55 2014/03/20 06:48:54 skrll Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ed_mca.c,v 1.54 2014/03/16 05:20:28 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ed_mca.c,v 1.55 2014/03/20 06:48:54 skrll Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -158,7 +158,7 @@ ed_mca_attach(device_t parent, device_t
edc_add_disk(sc, ed);
bufq_alloc(&ed->sc_q, "disksort", BUFQ_SORT_RAWBLOCK);
- simple_lock_init(&ed->sc_q_lock);
+ mutex_init(&ed->sc_q_lock, MUTEX_DEFAULT, IPL_VM);
if (ed_get_params(ed, &drv_flags)) {
printf(": IDENTIFY failed, no disk found\n");
@@ -257,9 +257,9 @@ edmcastrategy(struct buf *bp)
bp->b_rawblkno = blkno;
/* Queue transfer on drive, activate drive and controller if idle. */
- simple_lock(&ed->sc_q_lock);
+ mutex_enter(&ed->sc_q_lock);
bufq_put(ed->sc_q, bp);
- simple_unlock(&ed->sc_q_lock);
+ mutex_exit(&ed->sc_q_lock);
/* Ring the worker thread */
wakeup(ed->edc_softc);
Index: src/sys/dev/mca/edc_mca.c
diff -u src/sys/dev/mca/edc_mca.c:1.48 src/sys/dev/mca/edc_mca.c:1.49
--- src/sys/dev/mca/edc_mca.c:1.48 Sat Oct 12 21:11:42 2013
+++ src/sys/dev/mca/edc_mca.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: edc_mca.c,v 1.48 2013/10/12 21:11:42 christos Exp $ */
+/* $NetBSD: edc_mca.c,v 1.49 2014/03/20 06:48:54 skrll Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: edc_mca.c,v 1.48 2013/10/12 21:11:42 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: edc_mca.c,v 1.49 2014/03/20 06:48:54 skrll Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -815,13 +815,13 @@ edcworker(void *arg)
}
/* Is there a buf for us ? */
- simple_lock(&ed->sc_q_lock);
+ mutex_enter(&ed->sc_q_lock);
if ((bp = bufq_get(ed->sc_q)) == NULL) {
- simple_unlock(&ed->sc_q_lock);
+ mutex_exit(&ed->sc_q_lock);
i++;
continue;
}
- simple_unlock(&ed->sc_q_lock);
+ mutex_exit(&ed->sc_q_lock);
/* Instrumentation. */
disk_busy(&ed->sc_dk);
Index: src/sys/dev/mca/edvar.h
diff -u src/sys/dev/mca/edvar.h:1.16 src/sys/dev/mca/edvar.h:1.17
--- src/sys/dev/mca/edvar.h:1.16 Sat Oct 27 17:18:26 2012
+++ src/sys/dev/mca/edvar.h Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: edvar.h,v 1.16 2012/10/27 17:18:26 chs Exp $ */
+/* $NetBSD: edvar.h,v 1.17 2014/03/20 06:48:54 skrll Exp $ */
/*
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include <sys/simplelock.h>
+#include <sys/mutex.h>
struct edc_mca_softc;
@@ -39,7 +39,7 @@ struct ed_softc {
/* General disk infos */
struct disk sc_dk;
struct bufq_state *sc_q;
- struct simplelock sc_q_lock;
+ kmutex_t sc_q_lock;
struct edc_mca_softc *edc_softc; /* pointer to our controller */
Index: src/sys/dev/pci/cy82c693.c
diff -u src/sys/dev/pci/cy82c693.c:1.8 src/sys/dev/pci/cy82c693.c:1.9
--- src/sys/dev/pci/cy82c693.c:1.8 Mon Apr 19 18:24:27 2010
+++ src/sys/dev/pci/cy82c693.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: cy82c693.c,v 1.8 2010/04/19 18:24:27 dyoung Exp $ */
+/* $NetBSD: cy82c693.c,v 1.9 2014/03/20 06:48:54 skrll Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -35,16 +35,13 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cy82c693.c,v 1.8 2010/04/19 18:24:27 dyoung Exp $");
-
-#include "opt_multiprocessor.h"
-#include "opt_lockdebug.h"
+__KERNEL_RCSID(0, "$NetBSD: cy82c693.c,v 1.9 2014/03/20 06:48:54 skrll Exp $");
#include <sys/param.h>
#include <sys/device.h>
#include <sys/systm.h>
#include <sys/bus.h>
-#include <sys/simplelock.h>
+#include <sys/once.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
@@ -52,40 +49,43 @@ __KERNEL_RCSID(0, "$NetBSD: cy82c693.c,v
#include <dev/pci/cy82c693reg.h>
#include <dev/pci/cy82c693var.h>
+ONCE_DECL(cyhc_once);
+
static struct cy82c693_handle cyhc_handle;
static int cyhc_initialized;
-static struct simplelock cyhc_slock = SIMPLELOCK_INITIALIZER;
+static kmutex_t cyhc_slock;
+
+static int
+cy82c693_onceinit(void)
+{
+
+ mutex_init(&cyhc_slock, MUTEX_DEFAULT, IPL_HIGH);
-#define CYHC_LOCK(s) \
-do { \
- s = splhigh(); \
- simple_lock(&cyhc_slock); \
-} while (0)
-
-#define CYHC_UNLOCK(s) \
-do { \
- simple_unlock(&cyhc_slock); \
- splx(s); \
-} while (0)
+ return 0;
+}
const struct cy82c693_handle *
cy82c693_init(bus_space_tag_t iot)
{
bus_space_handle_t ioh;
- int s;
+ int err;
- CYHC_LOCK(s);
+ err = RUN_ONCE(&cyhc_once, cy82c693_onceinit);
+ if (err)
+ return NULL;
+
+ mutex_spin_enter(&cyhc_slock);
if (cyhc_initialized) {
- CYHC_UNLOCK(s);
+ mutex_spin_exit(&cyhc_slock);;
KASSERT(bus_space_is_equal(iot, cyhc_handle.cyhc_iot));
- return (&cyhc_handle);
+ return &cyhc_handle;
}
if (bus_space_map(iot, CYHC_CONFIG_ADDR, 2, 0, &ioh) != 0) {
- CYHC_UNLOCK(s);
- return (NULL);
+ mutex_spin_exit(&cyhc_slock);;
+ return NULL;
}
cyhc_handle.cyhc_iot = iot;
@@ -93,46 +93,44 @@ cy82c693_init(bus_space_tag_t iot)
cyhc_initialized = 1;
- CYHC_UNLOCK(s);
+ mutex_spin_exit(&cyhc_slock);;
- return (&cyhc_handle);
+ return &cyhc_handle;
}
u_int8_t
cy82c693_read(const struct cy82c693_handle *cyhc, int reg)
{
- int s;
- u_int8_t rv;
+ uint8_t rv;
- CYHC_LOCK(s);
+ mutex_spin_enter(&cyhc_slock);
if (cyhc_initialized == 0) {
- CYHC_UNLOCK(s);
+ mutex_spin_exit(&cyhc_slock);;
panic("cy82c693_read");
}
bus_space_write_1(cyhc->cyhc_iot, cyhc->cyhc_ioh, 0, reg);
rv = bus_space_read_1(cyhc->cyhc_iot, cyhc->cyhc_ioh, 1);
- CYHC_UNLOCK(s);
+ mutex_spin_exit(&cyhc_slock);;
- return (rv);
+ return rv;
}
void
cy82c693_write(const struct cy82c693_handle *cyhc, int reg, u_int8_t val)
{
- int s;
- CYHC_LOCK(s);
+ mutex_spin_enter(&cyhc_slock);
if (cyhc_initialized == 0) {
- CYHC_UNLOCK(s);
+ mutex_spin_exit(&cyhc_slock);;
panic("cy82c693_write");
}
bus_space_write_1(cyhc->cyhc_iot, cyhc->cyhc_ioh, 0, reg);
bus_space_write_1(cyhc->cyhc_iot, cyhc->cyhc_ioh, 1, val);
- CYHC_UNLOCK(s);
+ mutex_spin_exit(&cyhc_slock);;
}
Index: src/sys/dev/pci/cxgb/cxgb_osdep.h
diff -u src/sys/dev/pci/cxgb/cxgb_osdep.h:1.3 src/sys/dev/pci/cxgb/cxgb_osdep.h:1.4
--- src/sys/dev/pci/cxgb/cxgb_osdep.h:1.3 Wed Jan 23 23:31:27 2013
+++ src/sys/dev/pci/cxgb/cxgb_osdep.h Thu Mar 20 06:48:54 2014
@@ -47,8 +47,6 @@ typedef char *caddr_t;
#include <netinet/in.h>
#include <netinet/ip.h>
-#include <sys/simplelock.h>
-
#include <sys/kthread.h>
#include <sys/workqueue.h>
@@ -69,12 +67,12 @@ void cxgb_make_task(void *);
void m_cljset(struct mbuf *m, void *cl, int type);
-#define mtx simplelock
-#define mtx_init(a, b, c, d) { (a)->lock_data = __SIMPLELOCK_UNLOCKED; }
+#define mtx kmutex_t
+#define mtx_init(a, b, c, d) { mutex_init(a, MUTEX_DEFAULT, IPL_HIGH) }
#define mtx_destroy(a)
-#define mtx_lock(a) simple_lock(a)
-#define mtx_unlock(a) simple_unlock(a)
-#define mtx_trylock(a) simple_lock_try(a)
+#define mtx_lock(a) mutex_spin_enter(a)
+#define mtx_unlock(a) mutex_spin_exit(a)
+#define mtx_trylock(a) mutex_tryenter(a)
#define MA_OWNED 1
#define MA_NOTOWNED 0
#define mtx_assert(a, w)
Index: src/sys/net/if_tap.c
diff -u src/sys/net/if_tap.c:1.73 src/sys/net/if_tap.c:1.74
--- src/sys/net/if_tap.c:1.73 Sun Mar 16 05:20:30 2014
+++ src/sys/net/if_tap.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: if_tap.c,v 1.73 2014/03/16 05:20:30 dholland Exp $ */
+/* $NetBSD: if_tap.c,v 1.74 2014/03/20 06:48:54 skrll Exp $ */
/*
* Copyright (c) 2003, 2004, 2008, 2009 The NetBSD Foundation.
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.73 2014/03/16 05:20:30 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.74 2014/03/20 06:48:54 skrll Exp $");
#if defined(_KERNEL_OPT)
@@ -60,7 +60,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1
#endif
#include <sys/kauth.h>
#include <sys/mutex.h>
-#include <sys/simplelock.h>
#include <sys/intr.h>
#include <sys/stat.h>
@@ -112,7 +111,7 @@ struct tap_softc {
struct selinfo sc_rsel;
pid_t sc_pgid; /* For async. IO */
kmutex_t sc_rdlock;
- struct simplelock sc_kqlock;
+ kmutex_t sc_kqlock;
void *sc_sih;
struct timespec sc_atime;
struct timespec sc_mtime;
@@ -367,11 +366,10 @@ tap_attach(device_t parent, device_t sel
* the same moment and both try and dequeue a single packet.
*
* The queue for event listeners (used by kqueue(9), see below) has
- * to be protected, too, but we don't need the same level of
- * complexity for that lock, so a simple spinning lock is fine.
+ * to be protected too, so use a spin lock.
*/
mutex_init(&sc->sc_rdlock, MUTEX_DEFAULT, IPL_NONE);
- simple_lock_init(&sc->sc_kqlock);
+ mutex_init(&sc->sc_kqlock, MUTEX_DEFAULT, IPL_VM);
selinit(&sc->sc_rsel);
}
@@ -1188,9 +1186,9 @@ tap_dev_poll(int unit, int events, struc
if (m != NULL)
revents |= events & (POLLIN|POLLRDNORM);
else {
- simple_lock(&sc->sc_kqlock);
+ mutex_spin_enter(&sc->sc_kqlock);
selrecord(l, &sc->sc_rsel);
- simple_unlock(&sc->sc_kqlock);
+ mutex_spin_exit(&sc->sc_kqlock);
}
}
revents |= events & (POLLOUT|POLLWRNORM);
@@ -1238,9 +1236,9 @@ tap_dev_kqfilter(int unit, struct knote
}
kn->kn_hook = sc;
- simple_lock(&sc->sc_kqlock);
+ mutex_spin_enter(&sc->sc_kqlock);
SLIST_INSERT_HEAD(&sc->sc_rsel.sel_klist, kn, kn_selnext);
- simple_unlock(&sc->sc_kqlock);
+ mutex_spin_exit(&sc->sc_kqlock);
KERNEL_UNLOCK_ONE(NULL);
return (0);
}
@@ -1251,9 +1249,9 @@ tap_kqdetach(struct knote *kn)
struct tap_softc *sc = (struct tap_softc *)kn->kn_hook;
KERNEL_LOCK(1, NULL);
- simple_lock(&sc->sc_kqlock);
+ mutex_spin_enter(&sc->sc_kqlock);
SLIST_REMOVE(&sc->sc_rsel.sel_klist, kn, knote, kn_selnext);
- simple_unlock(&sc->sc_kqlock);
+ mutex_spin_exit(&sc->sc_kqlock);
KERNEL_UNLOCK_ONE(NULL);
}
Index: src/sys/net/if_tun.c
diff -u src/sys/net/if_tun.c:1.116 src/sys/net/if_tun.c:1.117
--- src/sys/net/if_tun.c:1.116 Sun Mar 16 05:20:30 2014
+++ src/sys/net/if_tun.c Thu Mar 20 06:48:54 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: if_tun.c,v 1.116 2014/03/16 05:20:30 dholland Exp $ */
+/* $NetBSD: if_tun.c,v 1.117 2014/03/20 06:48:54 skrll Exp $ */
/*
* Copyright (c) 1988, Julian Onions <[email protected]>
@@ -15,7 +15,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.116 2014/03/16 05:20:30 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1.117 2014/03/20 06:48:54 skrll Exp $");
#include "opt_inet.h"
@@ -35,7 +35,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_tun.c,v 1
#include <sys/signalvar.h>
#include <sys/conf.h>
#include <sys/kauth.h>
-#include <sys/simplelock.h>
#include <sys/mutex.h>
#include <sys/cpu.h>
@@ -67,7 +66,7 @@ void tunattach(int);
static LIST_HEAD(, tun_softc) tun_softc_list;
static LIST_HEAD(, tun_softc) tunz_softc_list;
-static struct simplelock tun_softc_lock;
+static kmutex_t tun_softc_lock;
static int tun_ioctl(struct ifnet *, u_long, void *);
static int tun_output(struct ifnet *, struct mbuf *,
@@ -114,7 +113,7 @@ void
tunattach(int unused)
{
- simple_lock_init(&tun_softc_lock);
+ mutex_init(&tun_softc_lock, MUTEX_DEFAULT, IPL_NET);
LIST_INIT(&tun_softc_list);
LIST_INIT(&tunz_softc_list);
if_clone_attach(&tun_cloner);
@@ -122,7 +121,6 @@ tunattach(int unused)
/*
* Find driver instance from dev_t.
- * Call at splnet().
* Returns with tp locked (if found).
*/
static struct tun_softc *
@@ -131,20 +129,19 @@ tun_find_unit(dev_t dev)
struct tun_softc *tp;
int unit = minor(dev);
- simple_lock(&tun_softc_lock);
+ mutex_enter(&tun_softc_lock);
LIST_FOREACH(tp, &tun_softc_list, tun_list)
if (unit == tp->tun_unit)
break;
if (tp)
mutex_enter(&tp->tun_lock);
- simple_unlock(&tun_softc_lock);
+ mutex_exit(&tun_softc_lock);
return (tp);
}
/*
* Find zombie driver instance by unit number.
- * Call at splnet().
* Remove tp from list and return it unlocked (if found).
*/
static struct tun_softc *
@@ -152,13 +149,13 @@ tun_find_zunit(int unit)
{
struct tun_softc *tp;
- simple_lock(&tun_softc_lock);
+ mutex_enter(&tun_softc_lock);
LIST_FOREACH(tp, &tunz_softc_list, tun_list)
if (unit == tp->tun_unit)
break;
if (tp)
LIST_REMOVE(tp, tun_list);
- simple_unlock(&tun_softc_lock);
+ mutex_exit(&tun_softc_lock);
#ifdef DIAGNOSTIC
if (tp != NULL && (tp->tun_flags & (TUN_INITED|TUN_OPEN)) != TUN_OPEN)
printf("tun%d: inconsistent flags: %x\n", unit, tp->tun_flags);
@@ -191,9 +188,9 @@ tun_clone_create(struct if_clone *ifc, i
tp->tun_osih = softint_establish(SOFTINT_CLOCK, tun_o_softintr, tp);
tp->tun_isih = softint_establish(SOFTINT_CLOCK, tun_i_softintr, tp);
- simple_lock(&tun_softc_lock);
+ mutex_enter(&tun_softc_lock);
LIST_INSERT_HEAD(&tun_softc_list, tp, tun_list);
- simple_unlock(&tun_softc_lock);
+ mutex_exit(&tun_softc_lock);
return (0);
}
@@ -232,13 +229,12 @@ static int
tun_clone_destroy(struct ifnet *ifp)
{
struct tun_softc *tp = (void *)ifp;
- int s, zombie = 0;
+ int zombie = 0;
IF_PURGE(&ifp->if_snd);
ifp->if_flags &= ~IFF_RUNNING;
- s = splnet();
- simple_lock(&tun_softc_lock);
+ mutex_enter(&tun_softc_lock);
mutex_enter(&tp->tun_lock);
LIST_REMOVE(tp, tun_list);
if (tp->tun_flags & TUN_OPEN) {
@@ -247,7 +243,7 @@ tun_clone_destroy(struct ifnet *ifp)
tp->tun_flags &= ~TUN_INITED;
LIST_INSERT_HEAD(&tunz_softc_list, tp, tun_list);
}
- simple_unlock(&tun_softc_lock);
+ mutex_exit(&tun_softc_lock);
if (tp->tun_flags & TUN_RWAIT) {
tp->tun_flags &= ~TUN_RWAIT;
@@ -256,7 +252,6 @@ tun_clone_destroy(struct ifnet *ifp)
selnotify(&tp->tun_rsel, 0, 0);
mutex_exit(&tp->tun_lock);
- splx(s);
if (tp->tun_flags & TUN_ASYNC && tp->tun_pgid)
fownsignal(tp->tun_pgid, SIGIO, POLL_HUP, 0, NULL);
@@ -285,14 +280,13 @@ tunopen(dev_t dev, int flag, int mode, s
{
struct ifnet *ifp;
struct tun_softc *tp;
- int s, error;
+ int error;
error = kauth_authorize_network(l->l_cred, KAUTH_NETWORK_INTERFACE_TUN,
KAUTH_REQ_NETWORK_INTERFACE_TUN_ADD, NULL, NULL, NULL);
if (error)
return (error);
- s = splnet();
tp = tun_find_unit(dev);
if (tp == NULL) {
@@ -315,7 +309,6 @@ tunopen(dev_t dev, int flag, int mode, s
out:
mutex_exit(&tp->tun_lock);
out_nolock:
- splx(s);
return (error);
}
@@ -327,11 +320,9 @@ int
tunclose(dev_t dev, int flag, int mode,
struct lwp *l)
{
- int s;
struct tun_softc *tp;
struct ifnet *ifp;
- s = splnet();
if ((tp = tun_find_zunit(minor(dev))) != NULL) {
/* interface was "destroyed" before the close */
seldestroy(&tp->tun_rsel);
@@ -380,7 +371,6 @@ tunclose(dev_t dev, int flag, int mode,
}
}
out_nolock:
- splx(s);
return (0);
}