DragonFly commits List (threaded) for 2004-11
cvs commit: src/sys/dev/acpica5 src/sys/i386/i386 src/sys/i386/include
dillon 2004/11/20 12:50:36 PST
DragonFly src repository
sys/i386/i386 machdep.c mplock.s
Fix a number of SMP issues.
* Add required pause instructions in code paths that skip running "HLT". This
occurs when e.g. cpu #1 is running code with the BGL while cpu #2's only
runnable thread requires the BGL. cpu #2's LWKT scheduler spins in that
case. Similar situations can occur when the only runnable threads on a
cpu are waiting for a token.
* Add required pause instructions to spin loops. DragonFly has very few spin
locks (e.g. things like com_lock()) but its a good idea anyway to avoid
known livelock issues on Intel cpus.
* Fix a pending interrupt / HLT race. We were not atomically retiring
pending interrupts prior to potentially HLTing the cpu. This could
result in an SMP machine's network locking up until a key is hit on
the console, then magically resuming.
Lockups-reported-by: Peter Avalos <pavalos@xxxxxxxxxxxx>
Revision Changes Path
1.7 +12 -1 src/sys/dev/acpica5/acpi_cpu.c
1.68 +10 -1 src/sys/i386/i386/machdep.c
1.15 +1 -0 src/sys/i386/i386/mplock.s
1.10 +1 -0 src/sys/i386/include/lock.h