Date: Wed, 3 Aug 2005 11:37:45 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 81398 for review Message-ID: <200508031137.j73Bbj7V080131@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=81398 Change 81398 by rwatson@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@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) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508031137.j73Bbj7V080131>