PERFORCE change 143324 for review

Julian Elischer julian at FreeBSD.org
Wed Jun 11 22:37:15 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=143324

Change 143324 by julian at julian_trafmon1 on 2008/06/11 22:36:48

	IFC at 143323

Affected files ...

.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/ndis/subr_ndis.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/files#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/ata-all.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/ata-chipset.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/ata-pci.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndis.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndisvar.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ixgbe/ixgbe.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ixgbe/tcp_lro.c#2 delete
.. //depot/projects/vimage-commit2/src/sys/dev/ixgbe/tcp_lro.h#2 delete
.. //depot/projects/vimage-commit2/src/sys/dev/nmdm/nmdm.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/smc/if_smc.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/smc/if_smcvar.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/snp/snp.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/vkbd/vkbd.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/cd9660/cd9660_vnops.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/acpica/acpi_machdep.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_conf.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/ixgbe/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_tap.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_tun.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_lro.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_lro.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/powerpc/booke/pmap.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/security/audit/audit_pipe.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/conf.h#2 integrate

Differences ...

==== //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c#2 (text+ko) ====

@@ -18,7 +18,7 @@
  *
  * CDDL HEADER END
  *
- * $FreeBSD: src/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c,v 1.4 2008/06/01 01:46:37 jb Exp $
+ * $FreeBSD: src/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c,v 1.5 2008/06/11 18:55:19 ed Exp $
  */
 
 /*
@@ -16445,6 +16445,7 @@
 
 static struct cdevsw dtrace_cdevsw = {
 	.d_version	= D_VERSION,
+	.d_flags	= D_NEEDMINOR,
 	.d_close	= dtrace_close,
 	.d_ioctl	= dtrace_ioctl,
 	.d_open		= dtrace_open,

==== //depot/projects/vimage-commit2/src/sys/compat/ndis/subr_ndis.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.112 2008/05/15 04:29:28 weongyo Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.113 2008/06/11 07:55:07 weongyo Exp $");
 
 /*
  * This file implements a translation layer between the BSD networking
@@ -1018,7 +1018,7 @@
 	sc = device_get_softc(dev);
 	ifp = sc->ifp;
 
-	if (ifp->if_flags & IFF_DEBUG) {
+	if (ifp != NULL && ifp->if_flags & IFF_DEBUG) {
 		error = pe_get_message((vm_offset_t)drv->dro_driverstart,
 		    code, &str, &i, &flags);
 		if (error == 0) {
@@ -1036,7 +1036,7 @@
 	device_printf (dev, "NDIS ERROR: %x (%s)\n", code,
 	    str == NULL ? "unknown error" : str);
 
-	if (ifp->if_flags & IFF_DEBUG) {
+	if (ifp != NULL && ifp->if_flags & IFF_DEBUG) {
 		device_printf (dev, "NDIS NUMERRORS: %x\n", numerrors);
 		va_start(ap, numerrors);
 		for (i = 0; i < numerrors; i++)

==== //depot/projects/vimage-commit2/src/sys/conf/files#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1307 2008/06/06 05:00:49 benno Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1308 2008/06/11 22:10:10 jfv Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1946,6 +1946,7 @@
 netinet/tcp_debug.c		optional tcpdebug
 netinet/tcp_hostcache.c		optional inet
 netinet/tcp_input.c		optional inet
+netinet/tcp_lro.c		optional inet
 netinet/tcp_output.c		optional inet
 netinet/tcp_offload.c		optional inet
 netinet/tcp_reass.c		optional inet

==== //depot/projects/vimage-commit2/src/sys/dev/ata/ata-all.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.288 2008/05/26 08:58:48 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.289 2008/06/11 06:44:58 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -129,6 +129,10 @@
     ATA_RESET(dev);
     ATA_LOCKING(dev, ATA_LF_UNLOCK);
 
+    /* allocate DMA resources if DMA HW present*/
+    if (ch->dma.alloc)
+	ch->dma.alloc(dev);
+
     /* setup interrupt delivery */
     rid = ATA_IRQ_RID;
     ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,

==== //depot/projects/vimage-commit2/src/sys/dev/ata/ata-chipset.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.219 2008/04/21 10:51:38 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.220 2008/06/11 08:48:25 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -1059,10 +1059,10 @@
     struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
     struct ata_channel *ch = device_get_softc(dev);
     int offset = ch->unit << 7;
+    int timeout = 0;
 #ifdef AHCI_PM
     struct ata_ahci_cmd_tab *ctp =
 	(struct ata_ahci_cmd_tab *)(ch->dma.work + ATA_AHCI_CT_OFFSET);
-    int timeout = 0;
 
     /* kick controller into sane state if needed */
     ata_ahci_restart(dev);
@@ -1091,7 +1091,7 @@
 
     ata_udelay(150000);
 
-    timeout = 0;
+#endif
     do {
 	    DELAY(1000);
 	    if (timeout++ > 1000) {
@@ -1101,7 +1101,7 @@
     } while (ATA_INL(ctlr->r_res2, ATA_AHCI_P_TFD + offset) & ATA_S_BUSY);
     if (bootverbose)
 	device_printf(dev, "BUSY wait time=%dms\n", timeout);
-#endif
+
     return ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset);
 }
 

==== //depot/projects/vimage-commit2/src/sys/dev/ata/ata-pci.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.127 2008/04/21 10:51:38 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.128 2008/06/11 06:44:58 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -611,7 +611,6 @@
 ata_pcichannel_attach(device_t dev)
 {
     struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
-    struct ata_channel *ch = device_get_softc(dev);
     int error;
 
     if (ctlr->dmainit)
@@ -620,11 +619,7 @@
     if ((error = ctlr->allocate(dev)))
 	return error;
 
-    if ((error = ata_attach(dev)))
-	return error;
-
-    ch->dma.alloc(dev);
-    return 0;
+    return ata_attach(dev);
 }
 
 static int

==== //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndis.c#2 (text+ko) ====

@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.141 2008/06/03 00:55:48 cokane Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.142 2008/06/11 13:40:15 cokane Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -533,7 +533,8 @@
 
 	sc = device_get_softc(dev);
 
-	KeInitializeSpinLock(&sc->ndis_spinlock);
+	mtx_init(&sc->ndis_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK,
+	    MTX_DEF);
 	KeInitializeSpinLock(&sc->ndis_rxlock);
 	InitializeListHead(&sc->ndis_shlist);
 	callout_init(&sc->ndis_stat_callout, CALLOUT_MPSAFE);
@@ -1644,7 +1645,6 @@
 	struct ndis_softc	*sc;
 
 	sc = xsc;
-	NDIS_LOCK(sc);
 
 	if (sc->ndis_hang_timer && --sc->ndis_hang_timer == 0) {
 		IoQueueWorkItem(sc->ndis_tickitem,
@@ -1666,7 +1666,6 @@
 	}
 
 	callout_reset(&sc->ndis_stat_callout, hz, ndis_tick, sc);
-	NDIS_UNLOCK(sc);
 }
 
 static void

==== //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndisvar.h#2 (text+ko) ====

@@ -29,7 +29,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/if_ndis/if_ndisvar.h,v 1.32 2008/06/03 00:55:48 cokane Exp $
+ * $FreeBSD: src/sys/dev/if_ndis/if_ndisvar.h,v 1.33 2008/06/11 13:40:15 cokane Exp $
  */
 
 #define NDIS_DEFAULT_NODENAME	"FreeBSD NDIS node"
@@ -129,7 +129,7 @@
 	struct resource		*ndis_res_cm;	/* common mem (pccard) */
 	struct resource_list	ndis_rl;
 	int			ndis_rescnt;
-	kspin_lock		ndis_spinlock;
+	struct mtx		ndis_mtx;
 	uint8_t			ndis_irql;
 	device_t		ndis_dev;
 	int			ndis_unit;
@@ -185,7 +185,5 @@
 	int			ndis_hang_timer;
 };
 
-#define NDIS_LOCK(_sc)		KeAcquireSpinLock(&(_sc)->ndis_spinlock, \
-				    &(_sc)->ndis_irql);
-#define NDIS_UNLOCK(_sc)	KeReleaseSpinLock(&(_sc)->ndis_spinlock, \
-				    (_sc)->ndis_irql);
+#define NDIS_LOCK(_sc)		mtx_lock(&(_sc)->ndis_mtx)
+#define NDIS_UNLOCK(_sc)	mtx_unlock(&(_sc)->ndis_mtx)

==== //depot/projects/vimage-commit2/src/sys/dev/ixgbe/ixgbe.h#2 (text+ko) ====

@@ -30,7 +30,7 @@
   POSSIBILITY OF SUCH DAMAGE.
 
 ******************************************************************************/
-/*$FreeBSD: src/sys/dev/ixgbe/ixgbe.h,v 1.4 2008/05/16 18:46:30 jfv Exp $*/
+/*$FreeBSD: src/sys/dev/ixgbe/ixgbe.h,v 1.5 2008/06/11 22:29:47 jfv Exp $*/
 
 #ifndef _IXGBE_H_
 #define _IXGBE_H_
@@ -63,6 +63,7 @@
 #include <netinet/ip.h>
 #include <netinet/ip6.h>
 #include <netinet/tcp.h>
+#include <netinet/tcp_lro.h>
 #include <netinet/udp.h>
 
 #include <machine/in_cksum.h>
@@ -83,7 +84,6 @@
 #include <sys/pcpu.h>
 
 #include "ixgbe_api.h"
-#include "tcp_lro.h"
 
 /* Tunables */
 

==== //depot/projects/vimage-commit2/src/sys/dev/nmdm/nmdm.c#2 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.39 2007/08/01 21:38:11 emax Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.40 2008/06/11 18:55:19 ed Exp $");
 
 /*
  * Pseudo-nulmodem driver
@@ -68,7 +68,7 @@
 	.d_open =	nmdmopen,
 	.d_close =	nmdmclose,
 	.d_name =	"nmdn",
-	.d_flags =	D_TTY | D_PSEUDO | D_NEEDGIANT,
+	.d_flags =	D_TTY | D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
 };
 
 #define BUFSIZ 		100		/* Chunk size iomoved to/from user */

==== //depot/projects/vimage-commit2/src/sys/dev/smc/if_smc.c#2 (text+ko) ====

@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2006 Benno Rice.  All rights reserved.
+ * Copyright (c) 2008 Benno Rice.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/smc/if_smc.c,v 1.1 2008/06/06 05:00:49 benno Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/smc/if_smc.c,v 1.3 2008/06/11 07:26:02 benno Exp $");
 
 /*
  * Driver for SMSC LAN91C111, may work for older variants.
@@ -76,6 +76,14 @@
 #include <dev/mii/mii.h>
 #include <dev/mii/miivar.h>
 
+#define	SMC_LOCK(sc)		mtx_lock(&(sc)->smc_mtx)
+#define	SMC_UNLOCK(sc)		mtx_unlock(&(sc)->smc_mtx)
+#define	SMC_ASSERT_LOCKED(sc)	mtx_assert(&(sc)->smc_mtx, MA_OWNED)
+
+#define	SMC_INTR_PRIORITY	0
+#define	SMC_RX_PRIORITY		5
+#define	SMC_TX_PRIORITY		10
+
 devclass_t	smc_devclass;
 
 static const char *smc_chip_ids[16] = {
@@ -104,6 +112,7 @@
 static void	smc_mii_mediachg(struct smc_softc *);
 static int	smc_mii_mediaioctl(struct smc_softc *, struct ifreq *, u_long);
 
+static void	smc_task_intr(void *, int);
 static void	smc_task_rx(void *, int);
 static void	smc_task_tx(void *, int);
 
@@ -117,7 +126,7 @@
 smc_select_bank(struct smc_softc *sc, uint16_t bank)
 {
 
-	bus_space_write_2(sc->smc_bst, sc->smc_bsh, BSR, bank & BSR_BANK_MASK);
+	bus_write_2(sc->smc_reg, BSR, bank & BSR_BANK_MASK);
 }
 
 /* Never call this when not in bank 2. */
@@ -125,10 +134,10 @@
 smc_mmu_wait(struct smc_softc *sc)
 {
 
-	KASSERT((bus_space_read_2(sc->smc_bst, sc->smc_bsh, BSR) &
+	KASSERT((bus_read_2(sc->smc_reg, BSR) &
 	    BSR_BANK_MASK) == 2, ("%s: smc_mmu_wait called when not in bank 2",
 	    device_get_nameunit(sc->smc_dev)));
-	while (bus_space_read_2(sc->smc_bst, sc->smc_bsh, MMUCR) & MMUCR_BUSY)
+	while (bus_read_2(sc->smc_reg, MMUCR) & MMUCR_BUSY)
 		;
 }
 
@@ -136,28 +145,28 @@
 smc_read_1(struct smc_softc *sc, bus_addr_t offset)
 {
 
-	return (bus_space_read_1(sc->smc_bst, sc->smc_bsh, offset));
+	return (bus_read_1(sc->smc_reg, offset));
 }
 
 static __inline void
 smc_write_1(struct smc_softc *sc, bus_addr_t offset, uint8_t val)
 {
 
-	bus_space_write_1(sc->smc_bst, sc->smc_bsh, offset, val);
+	bus_write_1(sc->smc_reg, offset, val);
 }
 
 static __inline uint16_t
 smc_read_2(struct smc_softc *sc, bus_addr_t offset)
 {
 
-	return (bus_space_read_2(sc->smc_bst, sc->smc_bsh, offset));
+	return (bus_read_2(sc->smc_reg, offset));
 }
 
 static __inline void
 smc_write_2(struct smc_softc *sc, bus_addr_t offset, uint16_t val)
 {
 
-	bus_space_write_2(sc->smc_bst, sc->smc_bsh, offset, val);
+	bus_write_2(sc->smc_reg, offset, val);
 }
 
 static __inline void
@@ -165,7 +174,7 @@
     bus_size_t count)
 {
 
-	bus_space_read_multi_2(sc->smc_bst, sc->smc_bsh, offset, datap, count);
+	bus_read_multi_2(sc->smc_reg, offset, datap, count);
 }
 
 static __inline void
@@ -173,7 +182,7 @@
     bus_size_t count)
 {
 
-	bus_space_write_multi_2(sc->smc_bst, sc->smc_bsh, offset, datap, count);
+	bus_write_multi_2(sc->smc_reg, offset, datap, count);
 }
 
 int
@@ -183,8 +192,6 @@
 	uint16_t		val;
 	struct smc_softc	*sc;
 	struct resource		*reg;
-	bus_space_tag_t		bst;
-	bus_space_handle_t	bsh;
 
 	sc = device_get_softc(dev);
 	rid = 0;
@@ -202,11 +209,8 @@
 		return (ENXIO);
 	}
 
-	bst = rman_get_bustag(reg);
-	bsh = rman_get_bushandle(reg);
-
 	/* Check for the identification value in the BSR. */
-	val = bus_space_read_2(bst, bsh, BSR);
+	val = bus_read_2(reg, BSR);
 	if ((val & BSR_IDENTIFY_MASK) != BSR_IDENTIFY) {
 		if (bootverbose)
 			device_printf(dev, "identification value not in BSR\n");
@@ -218,8 +222,8 @@
 	 * Try switching banks and make sure we still get the identification
 	 * value.
 	 */
-	bus_space_write_2(bst, bsh, BSR, 0);
-	val = bus_space_read_2(bst, bsh, BSR);
+	bus_write_2(reg, BSR, 0);
+	val = bus_read_2(reg, BSR);
 	if ((val & BSR_IDENTIFY_MASK) != BSR_IDENTIFY) {
 		if (bootverbose)
 			device_printf(dev,
@@ -230,8 +234,8 @@
 
 #if 0
 	/* Check the BAR. */
-	bus_space_write_2(bst, bsh, BSR, 1);
-	val = bus_space_read_2(bst, bsh, BAR);
+	bus_write_2(reg, BSR, 1);
+	val = bus_read_2(reg, BAR);
 	val = BAR_ADDRESS(val);
 	if (rman_get_start(reg) != val) {
 		if (bootverbose)
@@ -244,8 +248,8 @@
 #endif
 
 	/* Compare REV against known chip revisions. */
-	bus_space_write_2(bst, bsh, BSR, 3);
-	val = bus_space_read_2(bst, bsh, REV);
+	bus_write_2(reg, BSR, 3);
+	val = bus_read_2(reg, REV);
 	val = (val & REV_CHIP_MASK) >> REV_CHIP_SHIFT;
 	if (smc_chip_ids[val] == NULL) {
 		if (bootverbose)
@@ -284,7 +288,7 @@
 		goto done;
 	}
 
-	mtx_init(&sc->smc_mtx, device_get_nameunit(dev), NULL, MTX_SPIN);
+	mtx_init(&sc->smc_mtx, device_get_nameunit(dev), NULL, MTX_DEF);
 
 	type = SYS_RES_IOPORT;
 	if (sc->smc_usemem)
@@ -305,9 +309,6 @@
 		goto done;
 	}
 
-	sc->smc_bst = rman_get_bustag(sc->smc_reg);
-	sc->smc_bsh = rman_get_bushandle(sc->smc_reg);
-
 	SMC_LOCK(sc);
 	smc_reset(sc);
 	SMC_UNLOCK(sc);
@@ -356,6 +357,7 @@
 	ether_ifattach(ifp, eaddr);
 
 	/* Set up taskqueue */
+	TASK_INIT(&sc->smc_intr, SMC_INTR_PRIORITY, smc_task_intr, ifp);
 	TASK_INIT(&sc->smc_rx, SMC_RX_PRIORITY, smc_task_rx, ifp);
 	TASK_INIT(&sc->smc_tx, SMC_TX_PRIORITY, smc_task_tx, ifp);
 	sc->smc_tq = taskqueue_create_fast("smc_taskq", M_NOWAIT,
@@ -369,7 +371,7 @@
 
 	/* Wire up interrupt */
 	error = bus_setup_intr(dev, sc->smc_irq,
-	    INTR_TYPE_NET|INTR_MPSAFE, smc_intr, NULL, ifp, &sc->smc_ih);
+	    INTR_TYPE_NET|INTR_MPSAFE, smc_intr, NULL, sc, &sc->smc_ih);
 	if (error != 0)
 		goto done;
 
@@ -389,9 +391,6 @@
 
 	callout_stop(&sc->smc_watchdog);
 
-	if (mtx_initialized(&sc->smc_mtx))
-		SMC_LOCK(sc);
-
 #ifdef DEVICE_POLLING
 	if (sc->smc_ifp->if_capenable & IFCAP_POLLING)
 		ether_poll_deregister(sc->smc_ifp);
@@ -461,9 +460,7 @@
 	/*
 	 * Grab the next packet.  If it's too big, drop it.
 	 */
-	SMC_UNLOCK(sc);
 	IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
-	SMC_LOCK(sc);
 	len = m_length(m, NULL);
 	len += (len & 1);
 	if (len > ETHER_MAX_LEN - ETHER_CRC_LEN) {
@@ -603,7 +600,7 @@
 	 */
 	smc_mmu_wait(sc);
 	smc_write_2(sc, MMUCR, MMUCR_CMD_ENQUEUE);
-	callout_reset(&sc->smc_watchdog, hz * 2, smc_watchdog, ifp);
+	callout_reset(&sc->smc_watchdog, hz * 2, smc_watchdog, sc);
 
 	/*
 	 * Finish up.
@@ -751,7 +748,7 @@
 	SMC_UNLOCK(sc);
 
 	if (cmd == POLL_AND_CHECK_STATUS)
-		smc_intr(ifp);
+		taskqueue_enqueue_fast(sc->smc_tq, &sc->smc_intr);
 }
 #endif
 
@@ -759,9 +756,20 @@
 smc_intr(void *context)
 {
 	struct smc_softc	*sc;
+	
+	sc = (struct smc_softc *)context;
+	taskqueue_enqueue_fast(sc->smc_tq, &sc->smc_intr);
+	return (FILTER_HANDLED);
+}
+
+static void
+smc_task_intr(void *context, int pending)
+{
+	struct smc_softc	*sc;
 	struct ifnet		*ifp;
 	u_int			status, packet, counter, tcr;
 
+	(void)pending;
 	ifp = (struct ifnet *)context;
 	sc = ifp->if_softc;
 
@@ -871,8 +879,6 @@
 		smc_write_1(sc, MSK, sc->smc_mask);
 
 	SMC_UNLOCK(sc);
-	
-	return (FILTER_HANDLED);
 }
 
 static u_int
@@ -1215,11 +1221,11 @@
 static void
 smc_watchdog(void *arg)
 {
-	struct ifnet	*ifp;
+	struct smc_softc	*sc;
 	
-	ifp = (struct ifnet *)arg;
-	if_printf(ifp, "watchdog timeout\n");
-	smc_intr(ifp);
+	sc = (struct smc_softc *)arg;
+	device_printf(sc->smc_dev, "watchdog timeout\n");
+	taskqueue_enqueue_fast(sc->smc_tq, &sc->smc_intr);
 }
 
 static void

==== //depot/projects/vimage-commit2/src/sys/dev/smc/if_smcvar.h#2 (text+ko) ====

@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2006 Benno Rice.  All rights reserved.
+ * Copyright (c) 2008 Benno Rice.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -21,7 +21,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/smc/if_smcvar.h,v 1.1 2008/06/06 05:00:49 benno Exp $
+ * $FreeBSD: src/sys/dev/smc/if_smcvar.h,v 1.3 2008/06/11 07:26:02 benno Exp $
  *
  */
 
@@ -36,10 +36,6 @@
 	u_int			smc_rev;
 	u_int			smc_mask;
 
-	/* Bus space glue */
-	bus_space_tag_t		smc_bst;
-	bus_space_handle_t	smc_bsh;
-
 	/* Resources */
 	int			smc_usemem;
 	int			smc_reg_rid;
@@ -50,6 +46,7 @@
 
 	/* Tasks */
 	struct taskqueue	*smc_tq;
+	struct task		smc_intr;
 	struct task		smc_rx;
 	struct task		smc_tx;
 	struct mbuf		*smc_pending;
@@ -69,13 +66,6 @@
 	void			*smc_read_arg;
 };
 
-#define	SMC_LOCK(sc)		mtx_lock_spin(&(sc)->smc_mtx)
-#define	SMC_UNLOCK(sc)		mtx_unlock_spin(&(sc)->smc_mtx)
-#define	SMC_ASSERT_LOCKED(sc)	mtx_assert(&(sc)->smc_mtx, MA_OWNED)
-
-#define	SMC_RX_PRIORITY		0
-#define	SMC_TX_PRIORITY		10
-
 int	smc_probe(device_t);
 int	smc_attach(device_t);
 int	smc_detach(device_t);

==== //depot/projects/vimage-commit2/src/sys/dev/snp/snp.c#2 (text+ko) ====

@@ -15,7 +15,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/snp/snp.c,v 1.107 2007/12/24 13:47:16 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/snp/snp.c,v 1.108 2008/06/11 18:55:19 ed Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -44,7 +44,7 @@
 
 static struct cdevsw snp_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_PSEUDO | D_NEEDGIANT,
+	.d_flags =	D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
 	.d_open =	snpopen,
 	.d_close =	snpclose,
 	.d_read =	snpread,

==== //depot/projects/vimage-commit2/src/sys/dev/vkbd/vkbd.c#2 (text+ko) ====

@@ -28,7 +28,7 @@
  * SUCH DAMAGE.
  *
  * $Id: vkbd.c,v 1.20 2004/11/15 23:53:30 max Exp $
- * $FreeBSD: src/sys/dev/vkbd/vkbd.c,v 1.12 2007/12/29 21:55:25 wkoszek Exp $
+ * $FreeBSD: src/sys/dev/vkbd/vkbd.c,v 1.13 2008/06/11 18:55:19 ed Exp $
  */
 
 #include "opt_compat.h"
@@ -158,7 +158,7 @@
 
 static struct cdevsw	vkbd_dev_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_PSEUDO | D_NEEDGIANT,
+	.d_flags =	D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
 	.d_open =	vkbd_dev_open,
 	.d_close =	vkbd_dev_close,
 	.d_read =	vkbd_dev_read,

==== //depot/projects/vimage-commit2/src/sys/fs/cd9660/cd9660_vnops.c#2 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/cd9660/cd9660_vnops.c,v 1.113 2007/02/15 22:08:34 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/cd9660/cd9660_vnops.c,v 1.114 2008/06/11 12:46:09 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -495,6 +495,7 @@
 	}
 	idp->eofflag = 1;
 	idp->curroff = uio->uio_offset;
+	idp->uio_off = uio->uio_offset;
 
 	if ((entryoffsetinblock = idp->curroff & bmask) &&
 	    (error = cd9660_blkatoff(vdp, (off_t)idp->curroff, NULL, &bp))) {

==== //depot/projects/vimage-commit2/src/sys/i386/acpica/acpi_machdep.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/acpica/acpi_machdep.c,v 1.38 2008/03/13 20:39:04 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/acpica/acpi_machdep.c,v 1.39 2008/06/11 18:55:19 ed Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -84,7 +84,7 @@
 
 static struct cdevsw apm_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_TRACKCLOSE,
+	.d_flags =	D_TRACKCLOSE | D_NEEDMINOR,
 	.d_open =	apmopen,
 	.d_close =	apmclose,
 	.d_write =	apmwrite,

==== //depot/projects/vimage-commit2/src/sys/kern/kern_conf.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_conf.c,v 1.215 2008/05/29 12:50:45 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_conf.c,v 1.216 2008/06/11 18:55:19 ed Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -566,10 +566,13 @@
 
 	mtx_assert(&devmtx, MA_OWNED);
 	udev = y;
-	LIST_FOREACH(si2, &csw->d_devs, si_list) {
-		if (si2->si_drv0 == udev) {
-			dev_free_devlocked(si);
-			return (si2);
+	if (csw->d_flags & D_NEEDMINOR) {
+		/* We may want to return an existing device */
+		LIST_FOREACH(si2, &csw->d_devs, si_list) {
+			if (si2->si_drv0 == udev) {
+				dev_free_devlocked(si);
+				return (si2);
+			}
 		}
 	}
 	si->si_drv0 = udev;
@@ -1016,6 +1019,8 @@
 	    ("Illegal extra bits (0x%x) in clone_create", extra));
 	KASSERT(*up <= CLONE_UNITMASK,
 	    ("Too high unit (0x%x) in clone_create", *up));
+	KASSERT(csw->d_flags & D_NEEDMINOR,
+	    ("clone_create() on cdevsw without minor numbers"));
 
 
 	/*

==== //depot/projects/vimage-commit2/src/sys/modules/ixgbe/Makefile#2 (text+ko) ====

@@ -1,8 +1,8 @@
-#$FreeBSD: src/sys/modules/ixgbe/Makefile,v 1.3 2008/05/16 18:46:30 jfv Exp $
+#$FreeBSD: src/sys/modules/ixgbe/Makefile,v 1.4 2008/06/11 22:18:50 jfv Exp $
 .PATH:  ${.CURDIR}/../../dev/ixgbe
 KMOD    = ixgbe
 SRCS    = device_if.h bus_if.h pci_if.h
-SRCS    += ixgbe.c tcp_lro.c
+SRCS    += ixgbe.c
 # Shared source
 SRCS    += ixgbe_common.c ixgbe_api.c ixgbe_phy.c ixgbe_82598.c
 CFLAGS+= -I${.CURDIR}/../../dev/ixgbe

==== //depot/projects/vimage-commit2/src/sys/net/if_tap.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 /*
- * $FreeBSD: src/sys/net/if_tap.c,v 1.72 2008/04/15 16:54:39 emax Exp $
+ * $FreeBSD: src/sys/net/if_tap.c,v 1.73 2008/06/11 18:55:19 ed Exp $
  * $Id: if_tap.c,v 0.21 2000/07/23 21:46:02 max Exp $
  */
 
@@ -132,7 +132,7 @@
 
 static struct cdevsw	tap_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_PSEUDO | D_NEEDGIANT,
+	.d_flags =	D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
 	.d_open =	tapopen,
 	.d_close =	tapclose,
 	.d_read =	tapread,

==== //depot/projects/vimage-commit2/src/sys/net/if_tun.c#2 (text+ko) ====

@@ -13,7 +13,7 @@
  * UCL. This driver is based much more on read/write/poll mode of
  * operation though.
  *
- * $FreeBSD: src/sys/net/if_tun.c,v 1.164 2007/10/24 19:03:57 rwatson Exp $
+ * $FreeBSD: src/sys/net/if_tun.c,v 1.165 2008/06/11 18:55:19 ed Exp $
  */
 
 #include "opt_atalk.h"
@@ -162,7 +162,7 @@
 
 static struct cdevsw tun_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_PSEUDO | D_NEEDGIANT,
+	.d_flags =	D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
 	.d_open =	tunopen,
 	.d_close =	tunclose,
 	.d_read =	tunread,

==== //depot/projects/vimage-commit2/src/sys/powerpc/booke/pmap.c#2 (text+ko) ====

@@ -39,7 +39,7 @@
   * Virtual address space layout:
   * -----------------------------
   * 0x0000_0000 - 0xbfff_efff	: user process
-  * 0xc000_0000 - 0xc1ff_ffff	: kerel reserved
+  * 0xc000_0000 - 0xc1ff_ffff	: kernel reserved
   *   0xc000_0000 - kernelend	: kernel code &data
   *   0xc1ff_c000 - 0xc200_0000	: kstack0
   * 0xc200_0000 - 0xffef_ffff	: KVA
@@ -50,7 +50,7 @@
   */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/powerpc/booke/pmap.c,v 1.3 2008/05/18 04:16:56 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/powerpc/booke/pmap.c,v 1.4 2008/06/11 20:05:25 wkoszek Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>

==== //depot/projects/vimage-commit2/src/sys/security/audit/audit_pipe.c#2 (text) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/security/audit/audit_pipe.c,v 1.15 2008/04/13 22:06:56 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/security/audit/audit_pipe.c,v 1.16 2008/06/11 18:55:19 ed Exp $");
 
 #include <sys/param.h>
 #include <sys/condvar.h>
@@ -177,7 +177,7 @@
 
 static struct cdevsw	audit_pipe_cdevsw = {
 	.d_version =	D_VERSION,
-	.d_flags =	D_PSEUDO | D_NEEDGIANT,
+	.d_flags =	D_PSEUDO | D_NEEDGIANT | D_NEEDMINOR,
 	.d_open =	audit_pipe_open,
 	.d_close =	audit_pipe_close,
 	.d_read =	audit_pipe_read,

==== //depot/projects/vimage-commit2/src/sys/sys/conf.h#2 (text+ko) ====

@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)conf.h	8.5 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/sys/conf.h,v 1.239 2008/05/29 12:50:46 ed Exp $
+ * $FreeBSD: src/sys/sys/conf.h,v 1.240 2008/06/11 18:55:19 ed Exp $
  */
 
 #ifndef _SYS_CONF_H_
@@ -71,7 +71,7 @@
 	gid_t		si_gid;
 	mode_t		si_mode;
 	struct ucred	*si_cred;	/* cached clone-time credential */
-	u_int		si_drv0;
+	int		si_drv0;
 	int		si_refcount;
 	LIST_ENTRY(cdev)	si_list;
 	LIST_ENTRY(cdev)	si_clone;
@@ -171,6 +171,7 @@
 #define D_MMAP_ANON	0x00100000	/* special treatment in vm_mmap.c */
 #define D_PSEUDO	0x00200000	/* make_dev() can return NULL */
 #define D_NEEDGIANT	0x00400000	/* driver want Giant */
+#define	D_NEEDMINOR	0x00800000	/* driver uses clone_create() */
 
 /*
  * Version numbers.


More information about the p4-projects mailing list