DragonFly commits List (threaded) for 2005-07
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
cvs commit: src/sys/i386/i386 trap.c src/sys/kern lwkt_thread.c src/sys/sys globaldata.h
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@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
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]