cvs commit: src/sys/i386/i386 trap.c src/sys/kern lwkt_thread.c src/sys/sys globaldata.h
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Jul 19 12:26:33 PDT 2005
dillon 2005/07/19 12:25:45 PDT
DragonFly src repository
Modified files:
sys/i386/i386 trap.c
sys/kern lwkt_thread.c
sys/sys globaldata.h
Log:
If a fatal kernel trap occurs from an IPI or FAST interrupt on a cpu not
holding the MP lock, the trap code will panic a second time when get_mplock()
attempts to block due to an assertion in lwkt_switch(). Add a new globaldata
field, gd_trap_nesting_level, that allows us to bypass this panic.
If lwkt_switch() is called with a non-zero gd_intr_nesting_level or non-zero
gd_trap_nesting_level, the two variables must be saved and then zero'd
across the switch, and restored on resume. Otherwise a normal switch in
another thread will result in another panic. This case only occurs during
fatal traps, panics, or when operating from DDB.
From-kernel-dumps-provided-by: David Rhodus <sdrhodus at xxxxxxxxx>
Revision Changes Path
1.60 +11 -1 src/sys/i386/i386/trap.c
1.78 +24 -4 src/sys/kern/lwkt_thread.c
1.37 +1 -1 src/sys/sys/globaldata.h
http://www.dragonflybsd.org/cvsweb/src/sys/i386/i386/trap.c.diff?r1=1.59&r2=1.60&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/lwkt_thread.c.diff?r1=1.77&r2=1.78&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/globaldata.h.diff?r1=1.36&r2=1.37&f=u
More information about the Commits
mailing list