Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Aug 2007 13:28:18 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 124593 for review
Message-ID:  <200708031328.l73DSI8I095612@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=124593

Change 124593 by zec@zec_tca51 on 2007/08/03 13:27:32

	IFC @ 124552

Affected files ...

.. //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#6 integrate
.. //depot/projects/vimage/src/sys/amd64/amd64/mp_machdep.c#7 integrate
.. //depot/projects/vimage/src/sys/arm/arm/trap.c#4 integrate
.. //depot/projects/vimage/src/sys/arm/at91/at91rm92reg.h#2 integrate
.. //depot/projects/vimage/src/sys/arm/at91/kb920x_machdep.c#5 integrate
.. //depot/projects/vimage/src/sys/arm/at91/ohci_atmelarm.c#3 integrate
.. //depot/projects/vimage/src/sys/arm/conf/KB920X#3 integrate
.. //depot/projects/vimage/src/sys/conf/kern.pre.mk#6 integrate
.. //depot/projects/vimage/src/sys/conf/options.ia64#2 integrate
.. //depot/projects/vimage/src/sys/contrib/pf/net/if_pfsync.c#7 integrate
.. //depot/projects/vimage/src/sys/dev/acpica/acpi_hpet.c#6 integrate
.. //depot/projects/vimage/src/sys/dev/acpica/acpi_timer.c#4 integrate
.. //depot/projects/vimage/src/sys/dev/aic7xxx/aic7xxx.c#3 integrate
.. //depot/projects/vimage/src/sys/dev/aic7xxx/aic_osm_lib.c#3 integrate
.. //depot/projects/vimage/src/sys/dev/an/if_an.c#3 integrate
.. //depot/projects/vimage/src/sys/dev/arcmsr/arcmsr.c#7 integrate
.. //depot/projects/vimage/src/sys/dev/bce/if_bce.c#9 integrate
.. //depot/projects/vimage/src/sys/dev/bce/if_bcefw.h#4 integrate
.. //depot/projects/vimage/src/sys/dev/bce/if_bcereg.h#6 integrate
.. //depot/projects/vimage/src/sys/dev/nmdm/nmdm.c#2 integrate
.. //depot/projects/vimage/src/sys/dev/pci/pci.c#9 integrate
.. //depot/projects/vimage/src/sys/dev/usb/umodem.c#4 integrate
.. //depot/projects/vimage/src/sys/i386/i386/local_apic.c#6 integrate
.. //depot/projects/vimage/src/sys/i386/i386/mp_machdep.c#7 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/db_machdep.c#3 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/exception.S#4 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/interrupt.c#4 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/machdep.c#7 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/mp_machdep.c#3 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/nexus.c#3 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/pmap.c#5 integrate
.. //depot/projects/vimage/src/sys/ia64/ia64/sapic.c#2 integrate
.. //depot/projects/vimage/src/sys/ia64/include/atomic.h#2 integrate
.. //depot/projects/vimage/src/sys/ia64/include/intr.h#3 integrate
.. //depot/projects/vimage/src/sys/ia64/include/md_var.h#2 integrate
.. //depot/projects/vimage/src/sys/ia64/include/sapicvar.h#2 integrate
.. //depot/projects/vimage/src/sys/net/bpf.c#10 integrate
.. //depot/projects/vimage/src/sys/net/if_bridge.c#6 integrate
.. //depot/projects/vimage/src/sys/net/if_bridgevar.h#5 integrate
.. //depot/projects/vimage/src/sys/net/if_lagg.c#8 integrate
.. //depot/projects/vimage/src/sys/net/if_lagg.h#6 integrate
.. //depot/projects/vimage/src/sys/netgraph/netgraph.h#3 integrate
.. //depot/projects/vimage/src/sys/netgraph/ng_ppp.c#7 integrate
.. //depot/projects/vimage/src/sys/netgraph/ng_ppp.h#3 integrate
.. //depot/projects/vimage/src/sys/netinet/ip_carp.c#4 integrate
.. //depot/projects/vimage/src/sys/netinet/ip_dummynet.c#4 integrate
.. //depot/projects/vimage/src/sys/netinet/ip_fw2.c#21 edit
.. //depot/projects/vimage/src/sys/netinet/ip_mroute.c#5 integrate
.. //depot/projects/vimage/src/sys/netinet/tcp_fsm.h#3 integrate
.. //depot/projects/vimage/src/sys/netinet/tcp_input.c#20 integrate
.. //depot/projects/vimage/src/sys/netinet/tcp_subr.c#25 edit
.. //depot/projects/vimage/src/sys/netinet/tcp_syncache.c#16 edit
.. //depot/projects/vimage/src/sys/netinet/tcp_timer.h#5 integrate
.. //depot/projects/vimage/src/sys/netinet/tcp_usrreq.c#11 integrate
.. //depot/projects/vimage/src/sys/netinet/tcp_var.h#14 edit
.. //depot/projects/vimage/src/sys/netipx/spx_debug.c#4 integrate
.. //depot/projects/vimage/src/sys/netipx/spx_debug.h#4 integrate
.. //depot/projects/vimage/src/sys/pc98/cbus/clock.c#5 integrate
.. //depot/projects/vimage/src/sys/pci/viapm.c#3 integrate
.. //depot/projects/vimage/src/sys/powerpc/powerpc/trap.c#4 integrate
.. //depot/projects/vimage/src/sys/sys/mutex.h#7 integrate

Differences ...

==== //depot/projects/vimage/src/sys/amd64/amd64/local_apic.c#6 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.40 2007/05/08 22:01:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.41 2007/08/02 21:17:58 peter Exp $");
 
 #include "opt_hwpmc_hooks.h"
 
@@ -1060,10 +1060,6 @@
 	if (retval != 0)
 		printf("%s: Failed to setup the local APIC: returned %d\n",
 		    best_enum->apic_name, retval);
-#ifdef SMP
-	/* Last, setup the cpu topology now that we have probed CPUs */
-	mp_topology();
-#endif
 }
 SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_FIRST, apic_setup_local, NULL)
 

==== //depot/projects/vimage/src/sys/amd64/amd64/mp_machdep.c#7 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.286 2007/06/04 23:56:07 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.287 2007/08/02 21:17:58 peter Exp $");
 
 #include "opt_cpu.h"
 #include "opt_kstack_pages.h"
@@ -186,26 +186,14 @@
 mp_topology(void)
 {
 	struct cpu_group *group;
-	u_int regs[4];
-	int logical_cpus;
 	int apic_id;
 	int groups;
 	int cpu;
 
 	/* Build the smp_topology map. */
 	/* Nothing to do if there is no HTT support. */
-	if ((cpu_feature & CPUID_HTT) == 0)
+	if (hyperthreading_cpus <= 1)
 		return;
-	logical_cpus = (cpu_procinfo & CPUID_HTT_CORES) >> 16;
-	if (logical_cpus <= 1)
-		return;
-	/* Nothing to do if reported cores are physical cores. */
-	if (strcmp(cpu_vendor, "GenuineIntel") == 0 && cpu_high >= 4) {
-		cpuid_count(4, 0, regs);
-		if ((regs[0] & 0x1f) != 0 &&
-		    logical_cpus <= ((regs[0] >> 26) & 0x3f) + 1)
-			return;
-	}
 	group = &mp_groups[0];
 	groups = 1;
 	for (cpu = 0, apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) {
@@ -215,7 +203,8 @@
 		 * If the current group has members and we're not a logical
 		 * cpu, create a new group.
 		 */
-		if (group->cg_count != 0 && (apic_id % logical_cpus) == 0) {
+		if (group->cg_count != 0 &&
+		    (apic_id % hyperthreading_cpus) == 0) {
 			group++;
 			groups++;
 		}
@@ -420,6 +409,9 @@
 	}
 
 	set_interrupt_apic_ids();
+
+	/* Last, setup the cpu topology now that we have probed CPUs */
+	mp_topology();
 }
 
 

==== //depot/projects/vimage/src/sys/arm/arm/trap.c#4 (text+ko) ====

@@ -82,7 +82,7 @@
 #include "opt_ktrace.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.34 2007/06/04 21:38:45 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.35 2007/07/31 17:09:05 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -943,7 +943,7 @@
 	case 0: 
 #ifdef __ARMEB__
 		if ((insn & 0x000fffff) == SYS___syscall &&
-		    (code != SYS_lseek)) {
+		    code != SYS_freebsd6_lseek && code != SYS_lseek) {
 			/*
 			 * 64-bit return, 32-bit syscall. Fixup byte order
 			 */ 

==== //depot/projects/vimage/src/sys/arm/at91/at91rm92reg.h#2 (text) ====

@@ -22,7 +22,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/* $FreeBSD: src/sys/arm/at91/at91rm92reg.h,v 1.4 2006/08/28 20:05:00 cognet Exp $ */
+/* $FreeBSD: src/sys/arm/at91/at91rm92reg.h,v 1.5 2007/07/31 17:43:18 imp Exp $ */
 
 #ifndef AT91RM92REG_H_
 #define AT91RM92REG_H_
@@ -336,7 +336,8 @@
 #define AT91RM92_TC1C1_BASE	0xffa4040
 #define AT91RM92_TC1C2_BASE	0xffa4080
 
-#define AT91RM92_OHCI_BASE	0x00300000
+#define AT91RM92_OHCI_BASE	0xdfe00000
+#define AT91RM92_OHCI_PA_BASE	0x00300000
 #define AT91RM92_OHCI_SIZE	0x00100000
 
 #define AT91C_MASTER_CLOCK	60000000

==== //depot/projects/vimage/src/sys/arm/at91/kb920x_machdep.c#5 (text) ====

@@ -48,7 +48,7 @@
 #include "opt_at91.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.22 2007/05/23 13:20:50 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.23 2007/07/31 17:43:18 imp Exp $");
 
 #define _ARM32_BUS_DMA_PRIVATE
 #include <sys/param.h>
@@ -165,14 +165,14 @@
 	 * initialization is done. However, the AT91 resource allocation
 	 * system doesn't know how to use pmap_mapdev() yet.
 	 */
-#if 0
+#if 1
 	{
 		/*
 		 * Add the ohci controller, and anything else that might be
 		 * on this chip select for a VA/PA mapping.
 		 */
 		AT91RM92_OHCI_BASE,
-		AT91RM92_OHCI_BASE,
+		AT91RM92_OHCI_PA_BASE,
 		AT91RM92_OHCI_SIZE,
 		VM_PROT_READ|VM_PROT_WRITE,                             
 		PTE_NOCACHE,

==== //depot/projects/vimage/src/sys/arm/at91/ohci_atmelarm.c#3 (text) ====

@@ -23,12 +23,14 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.2 2007/03/01 09:10:55 piso Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/ohci_atmelarm.c,v 1.3 2007/07/31 17:43:18 imp Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
+#include <sys/lock.h>
 #include <sys/module.h>
+#include <sys/mutex.h>
 #include <sys/bus.h>
 #include <sys/queue.h>
 #include <machine/bus.h>
@@ -99,6 +101,30 @@
 	}
 	device_set_ivars(sc->sc_ohci.sc_bus.bdev, &sc->sc_ohci.sc_bus);
 
+	/* Allocate a parent dma tag for DMA maps */
+	err = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
+	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+	    BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0,
+	    NULL, NULL, &sc->sc_ohci.sc_bus.parent_dmatag);
+	if (err) {
+		device_printf(dev, "Could not allocate parent DMA tag (%d)\n",
+		    err);
+		err = ENXIO;
+		goto error;
+	}
+
+	/* Allocate a dma tag for transfer buffers */
+	err = bus_dma_tag_create(sc->sc_ohci.sc_bus.parent_dmatag, 1, 0,
+	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+	    BUS_SPACE_MAXSIZE_32BIT, USB_DMA_NSEG, BUS_SPACE_MAXSIZE_32BIT, 0,
+	    busdma_lock_mutex, &Giant, &sc->sc_ohci.sc_bus.buffer_dmatag);
+	if (err) {
+		device_printf(dev, "Could not allocate transfer tag (%d)\n",
+		    err);
+		err = ENXIO;
+		goto error;
+	}
+
 	err = bus_setup_intr(dev, sc->sc_ohci.irq_res, INTR_TYPE_BIO, NULL, 
 	    ohci_intr, sc, &sc->sc_ohci.ih);
 	if (err) {
@@ -158,6 +184,12 @@
 		bus_teardown_intr(dev, sc->sc_ohci.irq_res, sc->sc_ohci.ih);
 		sc->sc_ohci.ih = NULL;
 	}
+
+	if (sc->sc_ohci.sc_bus.parent_dmatag != NULL)
+		bus_dma_tag_destroy(sc->sc_ohci.sc_bus.parent_dmatag);
+	if (sc->sc_ohci.sc_bus.buffer_dmatag != NULL)
+		bus_dma_tag_destroy(sc->sc_ohci.sc_bus.buffer_dmatag);
+
 	if (sc->sc_ohci.sc_bus.bdev) {
 		device_delete_child(dev, sc->sc_ohci.sc_bus.bdev);
 		sc->sc_ohci.sc_bus.bdev = NULL;

==== //depot/projects/vimage/src/sys/arm/conf/KB920X#3 (text) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first 
 # in NOTES.
 #
-# $FreeBSD: src/sys/arm/conf/KB920X,v 1.12 2007/03/23 23:47:59 imp Exp $
+# $FreeBSD: src/sys/arm/conf/KB920X,v 1.13 2007/07/31 17:45:54 imp Exp $
 
 machine		arm
 ident		KB920X
@@ -93,3 +93,47 @@
 device		icee
 
 device		bpf
+# USB support
+device          ohci            # OHCI localbus->USB interface
+device          usb             # USB Bus (required)
+#device         udbp            # USB Double Bulk Pipe devices
+device          ugen            # Generic
+device          uhid            # "Human Interface Devices"
+device          ulpt            # Printer
+device          umass           # Disks/Mass storage - Requires scbus and da
+device          ural            # Ralink Technology RT2500USB wireless NICs
+device          rum             # Ralink Technology RT2501USB wireless NICs
+device          urio            # Diamond Rio 500 MP3 player
+device          uscanner        # Scanners
+# USB Ethernet, requires miibus
+device		miibus
+device          aue             # ADMtek USB Ethernet
+device          axe             # ASIX Electronics USB Ethernet
+device          cdce            # Generic USB over Ethernet
+device          cue             # CATC USB Ethernet
+device          kue             # Kawasaki LSI USB Ethernet
+device          rue             # RealTek RTL8150 USB Ethernet
+device		udav
+# usb serial
+device          ucom
+device          uark
+device          ubsa
+device          ubser
+device          uftdi
+device          uipaq
+device          uplcom
+device          uvisor
+device          uvscom
+# SCSI peripherals
+device          scbus           # SCSI bus (required for SCSI)
+device          da              # Direct Access (disks)
+device          cd              # CD
+device          pass            # Passthrough device (direct SCSI access)
+# Wireless NIC cards
+device          wlan            # 802.11 support
+device          wlan_wep        # 802.11 WEP support
+device          wlan_ccmp       # 802.11 CCMP support
+device          wlan_tkip       # 802.11 TKIP support
+device          wlan_amrr       # AMRR transmit rate control algorithm
+device          wlan_scan_ap    # 802.11 AP mode scanning
+device          wlan_scan_sta   # 802.11 STA mode scanning

==== //depot/projects/vimage/src/sys/conf/kern.pre.mk#6 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.90 2007/07/12 00:01:53 jfv Exp $
+# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.91 2007/07/31 03:15:32 marcel Exp $
 
 # Part of a unified Makefile for building kernels.  This part contains all
 # of the definitions that need to be before %BEFORE_DEPEND.
@@ -88,7 +88,7 @@
 CFLAGS+= --param inline-unit-growth=100
 CFLAGS+= --param large-function-growth=1000
 .if ${MACHINE_ARCH} == "amd64" || ${MACHINE} == "i386" || \
-    ${MACHINE_ARCH} == "sparc64"
+    ${MACHINE_ARCH} == "ia64" || ${MACHINE_ARCH} == "sparc64"
 WERROR?= -Werror
 .endif
 .endif

==== //depot/projects/vimage/src/sys/conf/options.ia64#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options.ia64,v 1.27 2006/04/24 23:31:50 marcel Exp $
+# $FreeBSD: src/sys/conf/options.ia64,v 1.28 2007/07/30 22:42:33 marcel Exp $
 # Options specific to the ia64 platform kernels
 
 ITANIUM			opt_global.h
@@ -11,6 +11,8 @@
 
 COMPAT_IA32		opt_compat.h
 
+EXCEPTION_TRACING	opt_xtrace.h
+
 VGA_ALT_SEQACCESS	opt_vga.h
 VGA_DEBUG		opt_vga.h
 VGA_NO_FONT_LOADING	opt_vga.h

==== //depot/projects/vimage/src/sys/contrib/pf/net/if_pfsync.c#7 (text+ko) ====

@@ -34,7 +34,7 @@
 #include "opt_pf.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/contrib/pf/net/if_pfsync.c,v 1.35 2007/07/03 12:16:07 mlaier Exp $");
+__FBSDID("$FreeBSD: src/sys/contrib/pf/net/if_pfsync.c,v 1.36 2007/07/28 07:31:29 rwatson Exp $");
 
 #ifdef DEV_BPF
 #define	NBPFILTER	DEV_BPF
@@ -282,12 +282,12 @@
 	ifp->if_hdrlen = PFSYNC_HDRLEN;
 	pfsync_setmtu(pfsyncif, ETHERMTU);
 #ifdef __FreeBSD__
-	callout_init(&pfsyncif->sc_tmo, NET_CALLOUT_MPSAFE);
+	callout_init(&pfsyncif->sc_tmo, CALLOUT_MPSAFE);
 #ifdef PFSYNC_TDB
-	callout_init(&pfsyncif->sc_tdb_tmo, NET_CALLOUT_MPSAFE);
+	callout_init(&pfsyncif->sc_tdb_tmo, CALLOUT_MPSAFE);
 #endif
-	callout_init(&pfsyncif->sc_bulk_tmo, NET_CALLOUT_MPSAFE);
-	callout_init(&pfsyncif->sc_bulkfail_tmo, NET_CALLOUT_MPSAFE);
+	callout_init(&pfsyncif->sc_bulk_tmo, CALLOUT_MPSAFE);
+	callout_init(&pfsyncif->sc_bulkfail_tmo, CALLOUT_MPSAFE);
 #else
 	timeout_set(&pfsyncif->sc_tmo, pfsync_timeout, pfsyncif);
 	timeout_set(&pfsyncif->sc_tdb_tmo, pfsync_tdb_timeout, pfsyncif);

==== //depot/projects/vimage/src/sys/dev/acpica/acpi_hpet.c#6 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_hpet.c,v 1.10 2007/07/22 20:45:27 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_hpet.c,v 1.11 2007/07/30 15:21:26 njl Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -70,7 +70,7 @@
 	.tc_get_timecount =	hpet_get_timecount,
 	.tc_counter_mask =	~0u,
 	.tc_name =		"HPET",
-	.tc_quality =		2000,
+	.tc_quality =		900,
 };
 
 static u_int

==== //depot/projects/vimage/src/sys/dev/acpica/acpi_timer.c#4 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_timer.c,v 1.41 2007/06/04 18:25:03 dwmalone Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_timer.c,v 1.42 2007/07/30 15:21:26 njl Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -96,7 +96,7 @@
 	0,				/* no default counter_mask */
 	0,				/* no default frequency */
 	"ACPI",				/* name */
-	1000				/* quality */
+	-1				/* quality (chosen later) */
 };
 
 static u_int
@@ -185,9 +185,11 @@
     if (j == 10) {
 	acpi_timer_timecounter.tc_name = "ACPI-fast";
 	acpi_timer_timecounter.tc_get_timecount = acpi_timer_get_timecount;
+	acpi_timer_timecounter.tc_quality = 1000;
     } else {
 	acpi_timer_timecounter.tc_name = "ACPI-safe";
 	acpi_timer_timecounter.tc_get_timecount = acpi_timer_get_timecount_safe;
+	acpi_timer_timecounter.tc_quality = 850;
     }
     tc_init(&acpi_timer_timecounter);
 

==== //depot/projects/vimage/src/sys/dev/aic7xxx/aic7xxx.c#3 (text+ko) ====

@@ -46,7 +46,7 @@
 #include "aicasm/aicasm_insformat.h"
 #else
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic7xxx.c,v 1.111 2007/04/19 18:53:52 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic7xxx.c,v 1.112 2007/07/31 20:11:02 scottl Exp $");
 #include <dev/aic7xxx/aic7xxx_osm.h>
 #include <dev/aic7xxx/aic7xxx_inline.h>
 #include <dev/aic7xxx/aicasm/aicasm_insformat.h>
@@ -6932,7 +6932,6 @@
 	struct ahc_softc *ahc;
 
 	ahc = scb->ahc_softc;
-	ahc_lock(ahc);
 	if ((scb->flags & SCB_ACTIVE) != 0) {
 		if ((scb->flags & SCB_TIMEDOUT) == 0) {
 			LIST_INSERT_HEAD(&ahc->timedout_scbs, scb,
@@ -6941,7 +6940,6 @@
 		}
 		ahc_wakeup_recovery_thread(ahc);
 	}
-	ahc_unlock(ahc);
 }
 
 /*

==== //depot/projects/vimage/src/sys/dev/aic7xxx/aic_osm_lib.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic_osm_lib.c,v 1.5 2007/04/17 06:26:25 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic_osm_lib.c,v 1.6 2007/07/31 20:11:03 scottl Exp $");
 
 static void	aic_recovery_thread(void *arg);
 
@@ -120,9 +120,7 @@
 		if ((aic->flags & AIC_SHUTDOWN_RECOVERY) != 0)
 			break;
 
-		aic_unlock(aic);
 		aic_recover_commands(aic);
-		aic_lock(aic);
 	}
 	aic->platform_data->recovery_thread = NULL;
 	wakeup(aic->platform_data);

==== //depot/projects/vimage/src/sys/dev/an/if_an.c#3 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/an/if_an.c,v 1.81 2007/06/08 01:21:20 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/an/if_an.c,v 1.82 2007/08/02 02:20:19 avatar Exp $");
 
 /*
  * The Aironet 4500/4800 series cards come in PCMCIA, ISA and PCI form.
@@ -1914,7 +1914,9 @@
 		error = 0;
 		break;
 	case SIOCGAIRONET:
+		AN_UNLOCK(sc);
 		error = copyin(ifr->ifr_data, &sc->areq, sizeof(sc->areq));
+		AN_LOCK(sc);
 		if (error != 0)
 			break;
 #ifdef ANCACHE
@@ -1940,12 +1942,16 @@
 			error = EINVAL;
 			break;
 		}
+		AN_UNLOCK(sc);
 		error = copyout(&sc->areq, ifr->ifr_data, sizeof(sc->areq));
+		AN_LOCK(sc);
 		break;
 	case SIOCSAIRONET:
 		if ((error = priv_check(td, PRIV_DRIVER)))
 			goto out;
+		AN_UNLOCK(sc);
 		error = copyin(ifr->ifr_data, &sc->areq, sizeof(sc->areq));
+		AN_LOCK(sc);
 		if (error != 0)
 			break;
 		an_setdef(sc, &sc->areq);
@@ -1953,7 +1959,9 @@
 	case SIOCGPRIVATE_0:              /* used by Cisco client utility */
 		if ((error = priv_check(td, PRIV_DRIVER)))
 			goto out;
+		AN_UNLOCK(sc);
 		error = copyin(ifr->ifr_data, &l_ioctl, sizeof(l_ioctl));
+		AN_LOCK(sc);
 		if (error)
 			goto out;
 		mode = l_ioctl.command;
@@ -1969,18 +1977,24 @@
 		}
 		if (!error) {
 			/* copy out the updated command info */
+			AN_UNLOCK(sc);
 			error = copyout(&l_ioctl, ifr->ifr_data, sizeof(l_ioctl));
+			AN_LOCK(sc);
 		}
 		break;
 	case SIOCGPRIVATE_1:              /* used by Cisco client utility */
 		if ((error = priv_check(td, PRIV_DRIVER)))
 			goto out;
+		AN_UNLOCK(sc);
 		error = copyin(ifr->ifr_data, &l_ioctl, sizeof(l_ioctl));
+		AN_LOCK(sc);
 		if (error)
 			goto out;
 		l_ioctl.command = 0;
 		error = AIROMAGIC;
+		AN_UNLOCK(sc);
 		(void) copyout(&error, l_ioctl.data, sizeof(error));
+		AN_LOCK(sc);
 	        error = 0;
 		break;
 	case SIOCG80211:
@@ -2030,8 +2044,10 @@
 			ireq->i_len = len;
 			bzero(tmpstr, IEEE80211_NWID_LEN);
 			bcopy(tmpptr, tmpstr, len);
+			AN_UNLOCK(sc);
 			error = copyout(tmpstr, ireq->i_data,
 			    IEEE80211_NWID_LEN);
+			AN_LOCK(sc);
 			break;
 		case IEEE80211_IOC_NUMSSIDS:
 			sc->areq.an_len = sizeof(sc->areq);
@@ -2105,7 +2121,9 @@
 			 */
 			bzero(tmpstr, len);
 			ireq->i_len = len;
+			AN_UNLOCK(sc);
 			error = copyout(tmpstr, ireq->i_data, len);
+			AN_LOCK(sc);
 			break;
 		case IEEE80211_IOC_NUMWEPKEYS:
 			ireq->i_val = 9; /* include home key */
@@ -2183,8 +2201,10 @@
 			tmpptr = config->an_nodename;
 			bzero(tmpstr, IEEE80211_NWID_LEN);
 			bcopy(tmpptr, tmpstr, ireq->i_len);
+			AN_UNLOCK(sc);
 			error = copyout(tmpstr, ireq->i_data,
 			    IEEE80211_NWID_LEN);
+			AN_LOCK(sc);
 			break;
 		case IEEE80211_IOC_CHANNEL:
 			sc->areq.an_type = AN_RID_STATUS;
@@ -2268,9 +2288,11 @@
 				error = EINVAL;
 				break;
 			} else {
+				AN_UNLOCK(sc);
 				error = copyin(ireq->i_data,
 				    ssids->an_entry[ireq->i_val].an_ssid, 
 				    ireq->i_len);
+				AN_LOCK(sc);
 				ssids->an_entry[ireq->i_val].an_len 
 				    = ireq->i_len;
 				break;
@@ -2305,7 +2327,9 @@
 				error = EINVAL;
 				break;
 			}
+			AN_UNLOCK(sc);
 			error = copyin(ireq->i_data, tmpstr, 13);
+			AN_LOCK(sc);
 			if (error != 0)
 				break;
 			/*
@@ -2387,8 +2411,10 @@
 				break;
 			}
 			bzero(config->an_nodename, 16);
+			AN_UNLOCK(sc);
 			error = copyin(ireq->i_data,
 			    config->an_nodename, ireq->i_len);
+			AN_LOCK(sc);
 			break;
 		case IEEE80211_IOC_CHANNEL:
 			/*
@@ -2430,7 +2456,9 @@
 			an_setdef(sc, &sc->areq);
 		break;
 	default:
+		AN_UNLOCK(sc);
 		error = ether_ioctl(ifp, command, data);
+		AN_LOCK(sc);
 		break;
 	}
 out:
@@ -3159,6 +3187,7 @@
 {
 	unsigned short  rid;
 	struct an_softc *sc;
+	int error;
 
 	switch (l_ioctl->command) {
 	case AIROGCAP:
@@ -3210,24 +3239,30 @@
 
 	l_ioctl->len = sc->areq.an_len - 4;	/* just data */
 
+	AN_UNLOCK(sc);
 	/* the data contains the length at first */
 	if (copyout(&(sc->areq.an_len), l_ioctl->data,
 		    sizeof(sc->areq.an_len))) {
-		return -EFAULT;
+		error = -EFAULT;
+		goto lock_exit;
 	}
 	/* Just copy the data back */
 	if (copyout(&(sc->areq.an_val), l_ioctl->data + 2,
 		    l_ioctl->len)) {
-		return -EFAULT;
+		error = -EFAULT;
+		goto lock_exit;
 	}
-	return 0;
+	error = 0;
+lock_exit:
+	AN_LOCK(sc);
+	return (error);
 }
 
 static int
 writerids(struct ifnet *ifp, struct aironet_ioctl *l_ioctl)
 {
 	struct an_softc *sc;
-	int             rid, command;
+	int             rid, command, error;
 
 	sc = ifp->if_softc;
 	rid = 0;
@@ -3269,16 +3304,20 @@
 		an_read_record(sc, (struct an_ltv_gen *)&sc->areq);
 		l_ioctl->len = sc->areq.an_len - 4;	/* just data */
 
+		AN_UNLOCK(sc);
 		/* the data contains the length at first */
-		if (copyout(&(sc->areq.an_len), l_ioctl->data,
-			    sizeof(sc->areq.an_len))) {
+		error = copyout(&(sc->areq.an_len), l_ioctl->data,
+			    sizeof(sc->areq.an_len));
+		if (error) {
+			AN_LOCK(sc);
 			return -EFAULT;
 		}
 		/* Just copy the data */
-		if (copyout(&(sc->areq.an_val), l_ioctl->data + 2,
-			    l_ioctl->len)) {
+		error = copyout(&(sc->areq.an_val), l_ioctl->data + 2,
+			    l_ioctl->len);
+		AN_LOCK(sc);
+		if (error)
 			return -EFAULT;
-		}
 		return 0;
 		break;
 	case AIROPWEPKEY:
@@ -3304,10 +3343,13 @@
 		sc->areq.an_type = rid;
 
 		/* Just copy the data back */
-		if (copyin((l_ioctl->data) + 2, &sc->areq.an_val,
-		       l_ioctl->len)) {
+		AN_UNLOCK(sc);
+		error = copyin((l_ioctl->data) + 2, &sc->areq.an_val,
+		       l_ioctl->len);
+		AN_LOCK(sc);
+		if (error)
 			return -EFAULT;
-		}
+
 		an_cmd(sc, AN_CMD_DISABLE, 0);
 		an_write_record(sc, (struct an_ltv_gen *)&sc->areq);
 		an_cmd(sc, AN_CMD_ENABLE, 0);
@@ -3603,7 +3645,9 @@
 			return ENOBUFS;
 		break;
 	case AIROFLSHGCHR:	/* Get char from aux */
+		AN_UNLOCK(sc);
 		status = copyin(l_ioctl->data, &sc->areq, l_ioctl->len);
+		AN_LOCK(sc);
 		if (status)
 			return status;
 		z = *(int *)&sc->areq;
@@ -3612,7 +3656,9 @@
 		else
 			return -1;
 	case AIROFLSHPCHR:	/* Send char to card. */
+		AN_UNLOCK(sc);
 		status = copyin(l_ioctl->data, &sc->areq, l_ioctl->len);
+		AN_LOCK(sc);
 		if (status)
 			return status;
 		z = *(int *)&sc->areq;
@@ -3627,7 +3673,9 @@
 			       l_ioctl->len, FLASH_SIZE);
 			return -EINVAL;
 		}
+		AN_UNLOCK(sc);
 		status = copyin(l_ioctl->data, sc->an_flash_buffer, l_ioctl->len);
+		AN_LOCK(sc);
 		if (status)
 			return status;
 

==== //depot/projects/vimage/src/sys/dev/arcmsr/arcmsr.c#7 (text+ko) ====

@@ -56,7 +56,7 @@
 **                                                       and cause g_vfs_done() read write error
 
 ******************************************************************************************
-* $FreeBSD: src/sys/dev/arcmsr/arcmsr.c,v 1.23 2007/06/17 05:55:48 scottl Exp $
+* $FreeBSD: src/sys/dev/arcmsr/arcmsr.c,v 1.24 2007/07/31 20:16:50 scottl Exp $
 */
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -103,6 +103,7 @@
     #include <dev/pci/pcivar.h>
     #include <dev/pci/pcireg.h>
     #define ARCMSR_LOCK_INIT(l, s)	mtx_init(l, s, NULL, MTX_DEF|MTX_RECURSE)
+    #define ARCMSR_LOCK_DESTROY(l)	mtx_destroy(l)
     #define ARCMSR_LOCK_ACQUIRE(l)	mtx_lock(l)
     #define ARCMSR_LOCK_RELEASE(l)	mtx_unlock(l)
     #define ARCMSR_LOCK_TRY(l)		mtx_trylock(l)
@@ -113,6 +114,7 @@
     #include <pci/pcivar.h>
     #include <pci/pcireg.h>
     #define ARCMSR_LOCK_INIT(l, s)	simple_lock_init(l)
+    #define ARCMSR_LOCK_DESTROY(l)
     #define ARCMSR_LOCK_ACQUIRE(l)	simple_lock(l)
     #define ARCMSR_LOCK_RELEASE(l)	simple_unlock(l)
     #define ARCMSR_LOCK_TRY(l)		simple_lock_try(l)
@@ -417,7 +419,6 @@
 		bus_dmamap_sync(acb->dm_segs_dmat, srb->dm_segs_dmamap, op);
 		bus_dmamap_unload(acb->dm_segs_dmat, srb->dm_segs_dmamap);
 	}
-	ARCMSR_LOCK_ACQUIRE(&acb->workingQ_done_lock);
 	if(stand_flag==1) {
 		atomic_subtract_int(&acb->srboutstandingcount, 1);
 		if((acb->acb_flags & ACB_F_CAM_DEV_QFRZN) && (
@@ -431,7 +432,6 @@
 	acb->srbworkingQ[acb->workingsrb_doneindex]=srb;
 	acb->workingsrb_doneindex++;
 	acb->workingsrb_doneindex %= ARCMSR_MAX_FREESRB_NUM;
-	ARCMSR_LOCK_RELEASE(&acb->workingQ_done_lock);
 	xpt_done(pccb);
 	return;
 }
@@ -671,6 +671,18 @@
 **********************************************************************
 **********************************************************************
 */
+static void arcmsr_intr_handler(void *arg)
+{
+	struct AdapterControlBlock *acb=(struct AdapterControlBlock *)arg;
+
+	ARCMSR_LOCK_ACQUIRE(&acb->qbuffer_lock);
+	arcmsr_interrupt(acb);
+	ARCMSR_LOCK_RELEASE(&acb->qbuffer_lock);
+}
+/*
+**********************************************************************
+**********************************************************************
+*/
 static void arcmsr_interrupt(void *arg)
 {
 	struct AdapterControlBlock *acb=(struct AdapterControlBlock *)arg;
@@ -1035,7 +1047,6 @@
 	struct CommandControlBlock *srb=NULL;
 	u_int32_t workingsrb_startindex, workingsrb_doneindex;
 
-	ARCMSR_LOCK_ACQUIRE(&acb->workingQ_start_lock);
 	workingsrb_doneindex=acb->workingsrb_doneindex;
 	workingsrb_startindex=acb->workingsrb_startindex;
 	srb=acb->srbworkingQ[workingsrb_startindex];
@@ -1046,7 +1057,6 @@
 	} else {
 		srb=NULL;
 	}
-	ARCMSR_LOCK_RELEASE(&acb->workingQ_start_lock);
 	return(srb);
 }
 /*
@@ -1970,7 +1980,7 @@
 				/*maxsegsz*/	BUS_SPACE_MAXSIZE_32BIT,
 				/*flags*/	0,
 				/*lockfunc*/	busdma_lock_mutex,
-				/*lockarg*/	&Giant,
+				/*lockarg*/	&acb->qbuffer_lock,
 						&acb->dm_segs_dmat) != 0)
 #else
 	if(bus_dma_tag_create(  /*parent_dmat*/	acb->parent_dmat,
@@ -2114,9 +2124,10 @@
 		printf("arcmsr%d: cannot allocate softc\n", unit);
 		return (ENOMEM);
 	}
-	bzero(acb, sizeof(struct AdapterControlBlock));
+	ARCMSR_LOCK_INIT(&acb->qbuffer_lock, "arcmsr Q buffer lock");
 	if(arcmsr_initialize(dev)) {
 		printf("arcmsr%d: initialize failure!\n", unit);
+		ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 		return ENXIO;
 	}
 	/* After setting up the adapter, map our interrupt */
@@ -2124,8 +2135,9 @@
 	irqres=bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0ul, ~0ul, 1, RF_SHAREABLE | RF_ACTIVE);
 	if(irqres == NULL || 
 	bus_setup_intr(dev, irqres, INTR_TYPE_CAM|INTR_ENTROPY|INTR_MPSAFE
-  		, NULL, arcmsr_interrupt, acb, &acb->ih))  {
+  		, NULL, arcmsr_intr_handler, acb, &acb->ih))  {
 		arcmsr_free_resource(acb);
+		ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 		printf("arcmsr%d: unable to register interrupt handler!\n", unit);
 		return ENXIO;
 	}
@@ -2142,23 +2154,27 @@
 	if(devq == NULL) {
 	    arcmsr_free_resource(acb);
 		bus_release_resource(dev, SYS_RES_IRQ, 0, acb->irqres);
+		ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 		printf("arcmsr%d: cam_simq_alloc failure!\n", unit);
 		return ENXIO;
 	}
 	acb->psim=cam_sim_alloc(arcmsr_action, arcmsr_poll,
-		"arcmsr", acb, unit, &Giant, 1,
+		"arcmsr", acb, unit, &acb->qbuffer_lock, 1,
 		ARCMSR_MAX_OUTSTANDING_CMD, devq);
 	if(acb->psim == NULL) {
 		arcmsr_free_resource(acb);
 		bus_release_resource(dev, SYS_RES_IRQ, 0, acb->irqres);
 		cam_simq_free(devq);
+		ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 		printf("arcmsr%d: cam_sim_alloc failure!\n", unit);
 		return ENXIO;
 	}
+	ARCMSR_LOCK_ACQUIRE(&acb->qbuffer_lock);
 	if(xpt_bus_register(acb->psim, dev, 0) != CAM_SUCCESS) {
 		arcmsr_free_resource(acb);
 		bus_release_resource(dev, SYS_RES_IRQ, 0, acb->irqres);
 		cam_sim_free(acb->psim, /*free_devq*/TRUE);
+		ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 		printf("arcmsr%d: xpt_bus_register failure!\n", unit);
 		return ENXIO;
 	}
@@ -2170,12 +2186,10 @@
 		bus_release_resource(dev, SYS_RES_IRQ, 0, acb->irqres);
 		xpt_bus_deregister(cam_sim_path(acb->psim));
 		cam_sim_free(acb->psim, /* free_simq */ TRUE);
+		ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 		printf("arcmsr%d: xpt_create_path failure!\n", unit);
 		return ENXIO;
 	}
-	ARCMSR_LOCK_INIT(&acb->workingQ_done_lock, "arcmsr done working Q lock");
-	ARCMSR_LOCK_INIT(&acb->workingQ_start_lock, "arcmsr start working Q lock");
-	ARCMSR_LOCK_INIT(&acb->qbuffer_lock, "arcmsr Q buffer lock");
 	/*
 	****************************************************
 	*/
@@ -2185,6 +2199,7 @@
 	csa.callback=arcmsr_async;
 	csa.callback_arg=acb->psim;
 	xpt_action((union ccb *)&csa);
+	ARCMSR_LOCK_RELEASE(&acb->qbuffer_lock);
 	/* Create the control device.  */
 	acb->ioctl_dev=make_dev(&arcmsr_cdevsw
 		, unit
@@ -2256,6 +2271,7 @@
 	struct AdapterControlBlock *acb=(struct AdapterControlBlock *)device_get_softc(dev);
 
 	/* stop adapter background rebuild */
+	ARCMSR_LOCK_ACQUIRE(&acb->qbuffer_lock);
 	arcmsr_stop_adapter_bgrb(acb);
 	arcmsr_flush_adapter_cache(acb);
 	/* disable all outbound interrupt */
@@ -2289,6 +2305,7 @@
 	atomic_set_int(&acb->srboutstandingcount, 0);
 	acb->workingsrb_doneindex=0;
 	acb->workingsrb_startindex=0;
+	ARCMSR_LOCK_RELEASE(&acb->qbuffer_lock);
 	return;
 }
 /*
@@ -2299,15 +2316,18 @@
 {
 	struct AdapterControlBlock *acb=(struct AdapterControlBlock *)device_get_softc(dev);
 
+	bus_teardown_intr(dev, acb->irqres, acb->ih);
 	arcmsr_shutdown(dev);
 	arcmsr_free_resource(acb);
 	bus_release_resource(dev, SYS_RES_MEMORY, PCIR_BAR(0), acb->sys_res_arcmsr);
-	bus_teardown_intr(dev, acb->irqres, acb->ih);
 	bus_release_resource(dev, SYS_RES_IRQ, 0, acb->irqres);
+	ARCMSR_LOCK_ACQUIRE(&acb->qbuffer_lock);
 	xpt_async(AC_LOST_DEVICE, acb->ppath, NULL);
 	xpt_free_path(acb->ppath);
 	xpt_bus_deregister(cam_sim_path(acb->psim));
 	cam_sim_free(acb->psim, TRUE);
+	ARCMSR_LOCK_RELEASE(&acb->qbuffer_lock);
+	ARCMSR_LOCK_DESTROY(&acb->qbuffer_lock);
 	return (0);
 }
 

==== //depot/projects/vimage/src/sys/dev/bce/if_bce.c#9 (text) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.33 2007/06/16 02:27:03 davidch Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.34 2007/07/31 00:06:04 davidch Exp $");
 
 /*
  * The following controllers are supported by this driver:
@@ -288,21 +288,22 @@
 static int  bce_get_buf				(struct bce_softc *, struct mbuf *, u16 *, u16 *, u32 *);
 
 static int  bce_init_tx_chain		(struct bce_softc *);
+static void bce_fill_rx_chain		(struct bce_softc *);
 static int  bce_init_rx_chain		(struct bce_softc *);
 static void bce_free_rx_chain		(struct bce_softc *);
 static void bce_free_tx_chain		(struct bce_softc *);
 

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708031328.l73DSI8I095612>