[ Bcc'd to -current, send followups to -smp ]

I've been spending my time recently trying to get the kernel to boot with
witnees turned on.  The witness code itself was not broken (with a tiny
exception), but our kernel code did have some bugs.  However, while fixing the
problems witness pointed out, I ended up with a kernel that is not stable on
SMP systems (go figure).  Part of this may be due to a broken atkbd driver,
whose interrupt thread seems to chew up a lot more CPU time than it should be. 
I've tried to commit as many of the safe changes as I could w/o actually
breaking SMP systems.  The rest of the patches that are needed are at
http://www.FreeBSD.org/~jhb/patches/giant.patch.  This patchset does two
primary things:

1) It fixes msleep() and mawait() to release the sched_lock before calling
   CURSIG() and to pick the lock back up again afterwards.
2) It moves the dropping/reacquiring of Giant out of mi_switch() and out
   into the code that calls mi_switch().  This is needed because Giant
   needs to be released/reacquired when it is not under the sched_lock

Any feedback, etc. is welcome.  At the very least, UP systems (both x86 and
alpha) appear to be fine with this patch, and can run kernels with witness
enabled without any problems.  Thus this patch can be used to debug deadlocks,
etc. on UP systems at least.


John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to