PERFORCE change 81398 for review

Robert Watson rwatson at FreeBSD.org
Wed Aug 3 11:37:50 GMT 2005


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

Change 81398 by rwatson at rwatson_zoo on 2005/08/03 11:37:01

	Integrate netsmp:
	
	- stack_save()/subr_stack (cool!)
	
	Loop back:
	
	- if_addr_mtx and much IF_ADDR_LOCK()/IF_ADDR_UNLOCK() in protocols
	  and device drivers.

Affected files ...

.. //depot/projects/netsmp/src/sys/alpha/alpha/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/amd64/amd64/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/arm/arm/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/conf/files#4 integrate
.. //depot/projects/netsmp/src/sys/dev/aic7xxx/aicasm/Makefile#2 integrate
.. //depot/projects/netsmp/src/sys/dev/ath/if_ath.c#6 integrate
.. //depot/projects/netsmp/src/sys/dev/awi/awi.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/bfe/if_bfe.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/bge/if_bge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ed/if_ed.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/em/if_em.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/ex/if_ex.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/fe/if_fe.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/fxp/if_fxp.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/gem/if_gem.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/hme/if_hme.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ie/if_ie.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/if_ndis/if_ndis.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ixgb/if_ixgb.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/lge/if_lge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/lnc/if_lnc.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/my/if_my.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/nge/if_nge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/nve/if_nve.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/owi/if_owi.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/pdq/pdq_ifsubr.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/ray/if_ray.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/re/if_re.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/sn/if_sn.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/snc/dp83932.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/tx/if_tx.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/txp/if_txp.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_aue.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_axe.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_cue.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_kue.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_rue.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/usb/if_udav.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/vge/if_vge.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/wi/if_wi.c#4 integrate
.. //depot/projects/netsmp/src/sys/dev/wl/if_wl.c#3 integrate
.. //depot/projects/netsmp/src/sys/dev/xe/if_xe.c#3 integrate
.. //depot/projects/netsmp/src/sys/i386/i386/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/ia64/ia64/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_lock.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_malloc.c#3 integrate
.. //depot/projects/netsmp/src/sys/kern/kern_switch.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/subr_stack.c#1 branch
.. //depot/projects/netsmp/src/sys/kern/vfs_bio.c#3 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_default.c#2 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_subr.c#3 integrate
.. //depot/projects/netsmp/src/sys/kern/vfs_vnops.c#2 integrate
.. //depot/projects/netsmp/src/sys/net/if.c#7 integrate
.. //depot/projects/netsmp/src/sys/net/if_arcsubr.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/if_ethersubr.c#4 integrate
.. //depot/projects/netsmp/src/sys/net/if_fddisubr.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/if_iso88025subr.c#3 integrate
.. //depot/projects/netsmp/src/sys/net/if_var.h#5 integrate
.. //depot/projects/netsmp/src/sys/netgraph/netgraph.h#3 integrate
.. //depot/projects/netsmp/src/sys/netgraph/ng_parse.c#2 integrate
.. //depot/projects/netsmp/src/sys/netinet/in_var.h#6 integrate
.. //depot/projects/netsmp/src/sys/netinet6/in6_var.h#6 integrate
.. //depot/projects/netsmp/src/sys/netinet6/mld6.c#5 integrate
.. //depot/projects/netsmp/src/sys/pci/if_dc.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_de.c#5 integrate
.. //depot/projects/netsmp/src/sys/pci/if_pcn.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_rl.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sf.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sis.c#4 integrate
.. //depot/projects/netsmp/src/sys/pci/if_sk.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_ste.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_ti.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_tl.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_vr.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_wb.c#3 integrate
.. //depot/projects/netsmp/src/sys/pci/if_xl.c#4 integrate
.. //depot/projects/netsmp/src/sys/powerpc/powerpc/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/sparc64/sparc64/db_trace.c#2 integrate
.. //depot/projects/netsmp/src/sys/sys/lockmgr.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/mutex.h#2 integrate
.. //depot/projects/netsmp/src/sys/sys/stack.h#1 branch
.. //depot/projects/netsmp/src/sys/sys/vnode.h#2 integrate

Differences ...

==== //depot/projects/netsmp/src/sys/alpha/alpha/db_trace.c#2 (text+ko) ====

@@ -42,12 +42,14 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 /*__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.9 2000/12/13 03:16:36 mycroft Exp $");*/
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/db_trace.c,v 1.23 2004/11/27 06:51:32 das Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/db_trace.c,v 1.24 2005/08/03 04:27:38 jeff Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kdb.h>
+#include <sys/linker.h>
 #include <sys/proc.h>
+#include <sys/stack.h>
 #include <sys/sysent.h>
 
 #include <machine/db_machdep.h>
@@ -348,6 +350,45 @@
 		    count));
 }
 
+void
+stack_save(struct stack *st)
+{
+	struct prologue_info pi;
+	linker_symval_t symval;
+	c_linker_sym_t sym;
+	vm_offset_t callpc, frame;
+	long offset;
+	register_t pc, sp;
+
+	stack_zero(st);
+	__asm __volatile(
+		"	mov $30,%0 \n"
+		"	lda %1,1f \n"
+		"1:\n"
+		: "=r" (sp), "=r" (pc));
+	callpc = (vm_offset_t)pc;
+	frame = (vm_offset_t)sp;
+	while (1) {
+		/*
+		 * search_symbol/symbol_values are slow
+		 */
+		if (linker_ddb_search_symbol((caddr_t)callpc, &sym, &offset) != 0)
+			break;
+		if (linker_ddb_symbol_values(sym, &symval) != 0)
+			break;
+		if (callpc < (vm_offset_t)symval.value)
+			break;
+		if (stack_put(st, callpc) == -1)
+			break;
+		if (decode_prologue(callpc, (db_addr_t)symval.value, &pi))
+			break;
+		if ((pi.pi_regmask & (1 << 26)) == 0)
+			break;
+		callpc = *(vm_offset_t *)(frame + pi.pi_reg_offset[26]);
+		frame += pi.pi_frame_size;
+	}
+}
+
 int
 db_md_set_watchpoint(addr, size)
 	db_expr_t addr;

==== //depot/projects/netsmp/src/sys/amd64/amd64/db_trace.c#2 (text+ko) ====

@@ -25,12 +25,13 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.66 2005/01/21 05:54:05 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.68 2005/08/03 04:33:48 jeff Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kdb.h>
 #include <sys/proc.h>
+#include <sys/stack.h>
 #include <sys/sysent.h>
 
 #include <machine/cpu.h>
@@ -178,7 +179,8 @@
 /*
  * Stack trace.
  */
-#define	INKERNEL(va)	(((vm_offset_t)(va)) >= USRSTACK)
+#define	INKERNEL(va) (((va) >= DMAP_MIN_ADDRESS && (va) < DMAP_MAX_ADDRESS) \
+	    || (va) >= KERNBASE)
 
 struct amd64_frame {
 	struct amd64_frame	*f_frame;
@@ -494,6 +496,28 @@
 		    ctx->pcb_rip, count));
 }
 
+void
+stack_save(struct stack *st)
+{
+	struct amd64_frame *frame;
+	vm_offset_t callpc;
+	register_t rbp;
+
+	stack_zero(st);
+	__asm __volatile("movq %%rbp,%0" : "=r" (rbp));
+	frame = (struct amd64_frame *)rbp;
+	while (1) {
+		if (!INKERNEL((long)frame))
+			break;
+		callpc = frame->f_retaddr;
+		if (!INKERNEL(callpc))
+			break;
+		if (stack_put(st, callpc) == -1)
+			break;
+		frame = frame->f_frame;
+	}
+}
+
 int
 amd64_set_watch(watchnum, watchaddr, size, access, d)
 	int watchnum;

==== //depot/projects/netsmp/src/sys/arm/arm/db_trace.c#2 (text+ko) ====

@@ -30,13 +30,14 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/db_trace.c,v 1.10 2005/01/05 21:58:47 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/db_trace.c,v 1.11 2005/08/03 04:27:38 jeff Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 
 
 #include <sys/proc.h>
 #include <sys/kdb.h>
+#include <sys/stack.h>
 #include <machine/armreg.h>
 #include <machine/asm.h>
 #include <machine/cpufunc.h>
@@ -219,3 +220,21 @@
 {
 	db_trace_thread(curthread, -1);
 }
+
+void
+stack_save(struct stack *st)
+{
+	vm_offset_t callpc;
+	u_int32_t *frame;
+
+	stack_zero(st);
+	frame = (u_int32_t *)__builtin_frame_address(0);
+	while (1) {
+		if (!INKERNEL(frame))
+			break;
+		callpc = frame[FR_SCP];
+		if (stack_put(st, callpc) == -1)
+			break;
+		frame = (u_int32_t *)(frame[FR_RFP]);
+	}
+}

==== //depot/projects/netsmp/src/sys/conf/files#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1038 2005/07/27 21:47:55 pjd Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1039 2005/08/03 04:27:39 jeff Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1259,6 +1259,7 @@
 kern/subr_scanf.c		standard
 kern/subr_sleepqueue.c		standard
 kern/subr_smp.c			standard
+kern/subr_stack.c		optional ddb
 kern/subr_taskqueue.c		standard
 kern/subr_trap.c		standard
 kern/subr_turnstile.c		standard

==== //depot/projects/netsmp/src/sys/dev/aic7xxx/aicasm/Makefile#2 (text+ko) ====

@@ -1,7 +1,7 @@
 #
 # $Id: //depot/aic7xxx/freebsd/dev/aic7xxx/aicasm/Makefile#2 $
 #
-# $FreeBSD: src/sys/dev/aic7xxx/aicasm/Makefile,v 1.20 2004/12/21 08:47:19 ru Exp $
+# $FreeBSD: src/sys/dev/aic7xxx/aicasm/Makefile,v 1.22 2005/08/03 00:47:33 rwatson Exp $
 
 PROG=	aicasm
 

==== //depot/projects/netsmp/src/sys/dev/ath/if_ath.c#6 (text+ko) ====

@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.98 2005/07/24 05:11:39 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.99 2005/08/03 00:18:28 rwatson Exp $");
 
 /*
  * Driver for the Atheros Wireless LAN controller.

==== //depot/projects/netsmp/src/sys/dev/awi/awi.c#4 (text+ko) ====

@@ -89,7 +89,7 @@
 __KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $");
 #endif
 #ifdef __FreeBSD__
-__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.38 2005/07/22 16:50:18 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/awi/awi.c,v 1.39 2005/08/03 00:18:28 rwatson Exp $");
 #endif
 
 #include "opt_inet.h"

==== //depot/projects/netsmp/src/sys/dev/bfe/if_bfe.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
 
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.25 2005/06/10 16:49:05 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.26 2005/08/03 00:18:28 rwatson Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/netsmp/src/sys/dev/bge/if_bge.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.91 2005/06/24 21:43:46 dwhite Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.92 2005/08/03 00:18:29 rwatson Exp $");
 
 /*
  * Broadcom BCM570x family gigabit ethernet driver for FreeBSD.

==== //depot/projects/netsmp/src/sys/dev/ed/if_ed.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.254 2005/06/15 20:23:40 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.255 2005/08/03 00:18:29 rwatson Exp $");
 
 /*
  * Device driver for National Semiconductor DS8390/WD83C690 based ethernet

==== //depot/projects/netsmp/src/sys/dev/em/if_em.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
 
 ***************************************************************************/
 
-/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.66 2005/08/02 08:44:45 ru Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.67 2005/08/03 00:18:29 rwatson Exp $*/
 
 #include <dev/em/if_em.h>
 

==== //depot/projects/netsmp/src/sys/dev/ex/if_ex.c#3 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ex/if_ex.c,v 1.56 2005/06/10 16:49:08 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ex/if_ex.c,v 1.57 2005/08/03 00:18:29 rwatson Exp $");
 
 /*
  * Intel EtherExpress Pro/10, Pro/10+ Ethernet driver

==== //depot/projects/netsmp/src/sys/dev/fe/if_fe.c#3 (text+ko) ====

@@ -21,7 +21,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fe/if_fe.c,v 1.91 2005/06/10 16:49:08 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fe/if_fe.c,v 1.92 2005/08/03 00:18:30 rwatson Exp $");
 
 /*
  *

==== //depot/projects/netsmp/src/sys/dev/fxp/if_fxp.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.241 2005/07/29 22:40:06 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.242 2005/08/03 00:18:30 rwatson Exp $");
 
 /*
  * Intel EtherExpress Pro/100B PCI Fast Ethernet driver

==== //depot/projects/netsmp/src/sys/dev/gem/if_gem.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/gem/if_gem.c,v 1.31 2005/07/24 18:45:15 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/gem/if_gem.c,v 1.32 2005/08/03 00:18:30 rwatson Exp $");
 
 /*
  * Driver for Sun GEM ethernet controllers.

==== //depot/projects/netsmp/src/sys/dev/hme/if_hme.c#3 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.37 2005/06/10 16:49:10 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.38 2005/08/03 00:18:30 rwatson Exp $");
 
 /*
  * HME Ethernet module driver.

==== //depot/projects/netsmp/src/sys/dev/ie/if_ie.c#3 (text+ko) ====

@@ -51,7 +51,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ie/if_ie.c,v 1.102 2005/06/10 16:49:10 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ie/if_ie.c,v 1.103 2005/08/03 00:18:30 rwatson Exp $");
 
 /*
  * Intel 82586 Ethernet chip

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

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.99 2005/06/14 17:47:31 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.100 2005/08/03 00:18:31 rwatson Exp $");
 
 #include "opt_bdg.h"
 

==== //depot/projects/netsmp/src/sys/dev/ixgb/if_ixgb.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
 
 ***************************************************************************/
 
-/*$FreeBSD: src/sys/dev/ixgb/if_ixgb.c,v 1.11 2005/08/02 09:27:42 brueffer Exp $*/
+/*$FreeBSD: src/sys/dev/ixgb/if_ixgb.c,v 1.12 2005/08/03 00:18:31 rwatson Exp $*/
 
 #include <dev/ixgb/if_ixgb.h>
 

==== //depot/projects/netsmp/src/sys/dev/lge/if_lge.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/lge/if_lge.c,v 1.39 2005/06/10 16:49:11 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/lge/if_lge.c,v 1.40 2005/08/03 00:18:31 rwatson Exp $");
 
 /*
  * Level 1 LXT1001 gigabit ethernet driver for FreeBSD. Public

==== //depot/projects/netsmp/src/sys/dev/lnc/if_lnc.c#3 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/lnc/if_lnc.c,v 1.111 2005/06/10 16:49:11 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/lnc/if_lnc.c,v 1.112 2005/08/03 00:18:31 rwatson Exp $");
 
 /*
 #define DIAGNOSTIC

==== //depot/projects/netsmp/src/sys/dev/my/if_my.c#3 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/my/if_my.c,v 1.29 2005/06/10 16:49:12 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/my/if_my.c,v 1.30 2005/08/03 00:18:31 rwatson Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/netsmp/src/sys/dev/nge/if_nge.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.75 2005/06/10 16:49:12 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.76 2005/08/03 00:18:31 rwatson Exp $");
 
 /*
  * National Semiconductor DP83820/DP83821 gigabit ethernet driver

==== //depot/projects/netsmp/src/sys/dev/nve/if_nve.c#4 (text+ko) ====

@@ -74,7 +74,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nve/if_nve.c,v 1.8 2005/07/25 22:21:11 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nve/if_nve.c,v 1.9 2005/08/03 00:18:32 rwatson Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/netsmp/src/sys/dev/owi/if_owi.c#4 (text+ko) ====

@@ -100,7 +100,7 @@
 
 #if !defined(lint)
 static const char rcsid[] =
-  "$FreeBSD: src/sys/dev/owi/if_owi.c,v 1.10 2005/08/01 13:51:52 avatar Exp $";
+  "$FreeBSD: src/sys/dev/owi/if_owi.c,v 1.11 2005/08/03 00:18:32 rwatson Exp $";
 #endif
 
 static void wi_intr(void *);

==== //depot/projects/netsmp/src/sys/dev/pdq/pdq_ifsubr.c#3 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pdq/pdq_ifsubr.c,v 1.26 2005/06/10 16:49:13 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pdq/pdq_ifsubr.c,v 1.27 2005/08/03 00:18:32 rwatson Exp $");
 
 /*
  * DEC PDQ FDDI Controller; code for BSD derived operating systems

==== //depot/projects/netsmp/src/sys/dev/ray/if_ray.c#3 (text+ko) ====

@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ray/if_ray.c,v 1.79 2005/06/10 16:49:13 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ray/if_ray.c,v 1.80 2005/08/03 00:18:32 rwatson Exp $");
 
 /*
  * Card configuration
@@ -2708,6 +2708,7 @@
 	TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
 		count++;
 	if (count == 0) {
+		IF_ADDR_UNLOCK(ifp);
 		ray_com_runq_done(sc);
 		return;
 	} else if (count > 16) {

==== //depot/projects/netsmp/src/sys/dev/re/if_re.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.46 2005/07/01 04:12:42 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.47 2005/08/03 00:18:32 rwatson Exp $");
 
 /*
  * RealTek 8139C+/8169/8169S/8110S PCI NIC driver

==== //depot/projects/netsmp/src/sys/dev/sn/if_sn.c#3 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/sn/if_sn.c,v 1.46 2005/07/18 23:41:34 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/sn/if_sn.c,v 1.47 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * This is a driver for SMC's 9000 series of Ethernet adapters.
@@ -1412,8 +1412,10 @@
 
 	IF_ADDR_LOCK(ifp);
 	TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
-	    if (ifma->ifma_addr->sa_family != AF_LINK)
+	    if (ifma->ifma_addr->sa_family != AF_LINK) {
+		IF_ADDR_UNLOCK(ifp);
 		return 0;
+	    }
 	    index = ether_crc32_le(LLADDR((struct sockaddr_dl *)
 		ifma->ifma_addr), ETHER_ADDR_LEN) & 0x3f;
 	    index2 = 0;

==== //depot/projects/netsmp/src/sys/dev/snc/dp83932.c#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/dev/snc/dp83932.c,v 1.19 2005/06/12 15:25:19 scottl Exp $	*/
+/*	$FreeBSD: src/sys/dev/snc/dp83932.c,v 1.20 2005/08/03 00:18:33 rwatson Exp $	*/
 /*	$NecBSD: dp83932.c,v 1.5 1999/07/29 05:08:44 kmatsuda Exp $	*/
 /*	$NetBSD: if_snc.c,v 1.18 1998/04/25 21:27:40 scottr Exp $	*/
 

==== //depot/projects/netsmp/src/sys/dev/tx/if_tx.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/tx/if_tx.c,v 1.89 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/tx/if_tx.c,v 1.90 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * EtherPower II 10/100 Fast Ethernet (SMC 9432 serie)

==== //depot/projects/netsmp/src/sys/dev/txp/if_txp.c#3 (text+ko) ====

@@ -35,14 +35,14 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.31 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.32 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * Driver for 3c990 (Typhoon) Ethernet ASIC
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.31 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.32 2005/08/03 00:18:33 rwatson Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -92,7 +92,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-  "$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.31 2005/06/10 16:49:15 brooks Exp $";
+  "$FreeBSD: src/sys/dev/txp/if_txp.c,v 1.32 2005/08/03 00:18:33 rwatson Exp $";
 #endif
 
 /*

==== //depot/projects/netsmp/src/sys/dev/usb/if_aue.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_aue.c,v 1.90 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_aue.c,v 1.91 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * ADMtek AN986 Pegasus and AN8511 Pegasus II USB to ethernet driver.

==== //depot/projects/netsmp/src/sys/dev/usb/if_axe.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.30 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_axe.c,v 1.31 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * ASIX Electronics AX88172 USB 2.0 ethernet driver. Used in the

==== //depot/projects/netsmp/src/sys/dev/usb/if_cue.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_cue.c,v 1.57 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_cue.c,v 1.58 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * CATC USB-EL1210A USB to ethernet driver. Used in the CATC Netmate

==== //depot/projects/netsmp/src/sys/dev/usb/if_kue.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_kue.c,v 1.64 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_kue.c,v 1.65 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * Kawasaki LSI KL5KUSB101B USB to ethernet adapter driver.

==== //depot/projects/netsmp/src/sys/dev/usb/if_rue.c#4 (text+ko) ====

@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_rue.c,v 1.21 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_rue.c,v 1.22 2005/08/03 00:18:33 rwatson Exp $");
 
 /*
  * RealTek RTL8150 USB to fast ethernet controller driver.

==== //depot/projects/netsmp/src/sys/dev/usb/if_udav.c#3 (text+ko) ====

@@ -1,6 +1,6 @@
 /*	$NetBSD: if_udav.c,v 1.2 2003/09/04 15:17:38 tsutsui Exp $	*/
 /*	$nabe: if_udav.c,v 1.3 2003/08/21 16:57:19 nabe Exp $	*/
-/*	$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.14 2005/06/10 16:49:15 brooks Exp $	*/
+/*	$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.15 2005/08/03 00:18:33 rwatson Exp $	*/
 /*-
  * Copyright (c) 2003
  *     Shingo WATANABE <nabe at nabechan.org>.  All rights reserved.
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.14 2005/06/10 16:49:15 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/if_udav.c,v 1.15 2005/08/03 00:18:33 rwatson Exp $");
 
 #include "opt_inet.h"
 #if defined(__NetBSD__)

==== //depot/projects/netsmp/src/sys/dev/vge/if_vge.c#3 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/vge/if_vge.c,v 1.14 2005/06/11 01:37:46 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/vge/if_vge.c,v 1.15 2005/08/03 00:18:34 rwatson Exp $");
 
 /*
  * VIA Networking Technologies VT612x PCI gigabit ethernet NIC driver.

==== //depot/projects/netsmp/src/sys/dev/wi/if_wi.c#4 (text+ko) ====

@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.181 2005/07/22 16:50:17 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.182 2005/08/03 00:18:34 rwatson Exp $");
 
 #define WI_HERMES_AUTOINC_WAR	/* Work around data write autoinc bug. */
 #define WI_HERMES_STATS_WAR	/* Work around stats counter bug. */

==== //depot/projects/netsmp/src/sys/dev/wl/if_wl.c#3 (text+ko) ====

@@ -173,7 +173,7 @@
 */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/wl/if_wl.c,v 1.66 2005/06/10 16:49:17 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/wl/if_wl.c,v 1.67 2005/08/03 00:18:34 rwatson Exp $");
 
 
 /*

==== //depot/projects/netsmp/src/sys/dev/xe/if_xe.c#3 (text+ko) ====

@@ -57,7 +57,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/xe/if_xe.c,v 1.57 2005/07/15 06:08:26 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/xe/if_xe.c,v 1.58 2005/08/03 00:18:34 rwatson Exp $");
 
 /*		
  * FreeBSD device driver for Xircom CreditCard PCMCIA Ethernet adapters.  The

==== //depot/projects/netsmp/src/sys/i386/i386/db_trace.c#2 (text+ko) ====

@@ -25,12 +25,13 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/db_trace.c,v 1.66 2005/01/18 03:48:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/db_trace.c,v 1.67 2005/08/03 04:27:39 jeff Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kdb.h>
 #include <sys/proc.h>
+#include <sys/stack.h>
 #include <sys/sysent.h>
 
 #include <machine/cpu.h>
@@ -500,6 +501,28 @@
 		    ctx->pcb_eip, count));
 }
 
+void
+stack_save(struct stack *st)
+{
+	struct i386_frame *frame;
+	vm_offset_t callpc;
+	register_t ebp;
+
+	stack_zero(st);
+	__asm __volatile("movl %%ebp,%0" : "=r" (ebp));
+	frame = (struct i386_frame *)ebp;
+	while (1) {
+		if (!INKERNEL(frame))
+			break;
+		callpc = frame->f_retaddr;
+		if (!INKERNEL(callpc))
+			break;
+		if (stack_put(st, callpc) == -1)
+			break;
+		frame = frame->f_frame;
+	}
+}
+
 int
 i386_set_watch(watchnum, watchaddr, size, access, d)
 	int watchnum;

==== //depot/projects/netsmp/src/sys/ia64/ia64/db_trace.c#2 (text+ko) ====

@@ -24,12 +24,13 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/ia64/ia64/db_trace.c,v 1.23 2005/04/16 05:38:59 marcel Exp $
+ *	$FreeBSD: src/sys/ia64/ia64/db_trace.c,v 1.24 2005/08/03 04:27:39 jeff Exp $
  */
 
 #include <sys/param.h>
 #include <sys/kdb.h>
 #include <sys/proc.h>
+#include <sys/stack.h>
 
 #include <machine/db_machdep.h>
 #include <machine/frame.h>
@@ -148,6 +149,18 @@
 	return (db_backtrace(td, ctx, count));
 }
 
+void
+stack_save(struct stack *st)
+{
+
+	stack_zero(st);
+	/*
+	 * Nothing for now.
+	 * Is libuwx reentrant?
+	 * Can unw_create* sleep?
+	 */
+}
+
 int
 db_md_set_watchpoint(addr, size)
 	db_expr_t addr;

==== //depot/projects/netsmp/src/sys/kern/kern_lock.c#2 (text+ko) ====

@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_lock.c,v 1.89 2005/04/12 05:43:03 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_lock.c,v 1.91 2005/08/03 04:59:07 jeff Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -51,6 +51,10 @@
 #include <sys/mutex.h>
 #include <sys/proc.h>
 #include <sys/systm.h>
+#ifdef DEBUG_LOCKS
+#include <sys/stack.h>
+#include <sys/sysctl.h>
+#endif
 
 /*
  * Locking primitives implementation.
@@ -138,20 +142,11 @@
  * accepted shared locks and shared-to-exclusive upgrades to go away.
  */
 int
-#ifndef	DEBUG_LOCKS
 lockmgr(lkp, flags, interlkp, td)
-#else
-debuglockmgr(lkp, flags, interlkp, td, name, file, line)
-#endif
 	struct lock *lkp;
 	u_int flags;
 	struct mtx *interlkp;
 	struct thread *td;
-#ifdef	DEBUG_LOCKS
-	const char *name;	/* Name of lock function */
-	const char *file;	/* Name of file call is from */
-	int line;		/* Line number in file */
-#endif
 {
 	int error;
 	struct thread *thr;
@@ -165,15 +160,16 @@
 
 	if ((flags & LK_INTERNAL) == 0)
 		mtx_lock(lkp->lk_interlock);
-#ifdef DEBUG_LOCKS
 	CTR6(KTR_LOCK,
-	    "lockmgr(): lkp == %p (lk_wmesg == \"%s\"), flags == 0x%x, "
-	    "td == %p %s:%d", lkp, lkp->lk_wmesg, flags, td, file, line);
-#else
-	CTR6(KTR_LOCK,
 	    "lockmgr(): lkp == %p (lk_wmesg == \"%s\"), owner == %p, exclusivecount == %d, flags == 0x%x, "
 	    "td == %p", lkp, lkp->lk_wmesg, lkp->lk_lockholder,
 	    lkp->lk_exclusivecount, flags, td);
+#ifdef DEBUG_LOCKS
+	{
+		struct stack stack; /* XXX */
+		stack_save(&stack);
+		CTRSTACK(KTR_LOCK, &stack, 1);
+	}
 #endif
 
 	if (flags & LK_INTERLOCK) {
@@ -218,10 +214,7 @@
 				break;
 			sharelock(td, lkp, 1);
 #if defined(DEBUG_LOCKS)
-			lkp->lk_slockholder = thr;
-			lkp->lk_sfilename = file;
-			lkp->lk_slineno = line;
-			lkp->lk_slockername = name;
+			stack_save(&lkp->lk_stack);
 #endif
 			break;
 		}
@@ -304,9 +297,7 @@
 			lkp->lk_exclusivecount = 1;
 			COUNT(td, 1);
 #if defined(DEBUG_LOCKS)
-			lkp->lk_filename = file;
-			lkp->lk_lineno = line;
-			lkp->lk_lockername = name;
+			stack_save(&lkp->lk_stack);
 #endif
 			break;
 		}
@@ -365,9 +356,7 @@
 		lkp->lk_exclusivecount = 1;
 		COUNT(td, 1);
 #if defined(DEBUG_LOCKS)
-			lkp->lk_filename = file;
-			lkp->lk_lineno = line;
-			lkp->lk_lockername = name;
+		stack_save(&lkp->lk_stack);
 #endif
 		break;
 
@@ -412,9 +401,7 @@
 		lkp->lk_exclusivecount = 1;
 		COUNT(td, 1);
 #if defined(DEBUG_LOCKS)
-			lkp->lk_filename = file;
-			lkp->lk_lineno = line;
-			lkp->lk_lockername = name;
+		stack_save(&lkp->lk_stack);
 #endif
 		break;
 
@@ -508,13 +495,7 @@
 	lkp->lk_lockholder = LK_NOPROC;
 	lkp->lk_newlock = NULL;
 #ifdef DEBUG_LOCKS
-	lkp->lk_filename = "none";
-	lkp->lk_lockername = "never exclusive locked";
-	lkp->lk_lineno = 0;
-	lkp->lk_slockholder = LK_NOPROC;
-	lkp->lk_sfilename = "none";
-	lkp->lk_slockername = "never share locked";
-	lkp->lk_slineno = 0;
+	stack_zero(&lkp->lk_stack);
 #endif
 }
 
@@ -584,4 +565,7 @@
 		    lkp->lk_lockholder, lkp->lk_lockholder->td_proc->p_pid);
 	if (lkp->lk_waitcount > 0)
 		printf(" with %d pending", lkp->lk_waitcount);
+#ifdef DEBUG_LOCKS
+	stack_print(&lkp->lk_stack);
+#endif
 }

==== //depot/projects/netsmp/src/sys/kern/kern_malloc.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>

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


More information about the p4-projects mailing list