MFC 240424,244582:
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 24 Sep 2013 20:38:55 +0000 (20:38 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 24 Sep 2013 20:38:55 +0000 (20:38 +0000)
commita843f6767f697640aa6bc0fee27e58180784e561
tree6677cbe89a5ff87ad10644ee0119c172bc15c979
parent73dc44e2ca8616e79c54b358f5d3daabf90d8835
MFC 240424,244582:
Improve check coverage about idle threads.

Idle threads are not allowed to acquire any lock but spinlocks.
Deny any attempt to do so by panicing at the locking operation
when INVARIANTS is on. Then, remove the check on blocking on a
turnstile.
The check in sleepqueues is left because they are not allowed to use
tsleep() either which could happen still.

On entering KDB backends, the hijacked thread to run
interrupt context can still be idlethread. At that point, without the
panic condition, it can still happen that idlethread then will try to
acquire some locks to carry on some operations.

Skip the idlethread check on block/sleep lock operations when KDB is
active.

git-svn-id: svn://svn.freebsd.org/base/stable/9@255862 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/kern/kern_lock.c
sys/kern/kern_mutex.c
sys/kern/kern_rmlock.c
sys/kern/kern_rwlock.c
sys/kern/kern_sx.c