replying to myself again....
>
> This is the best workaround I can think of:
>
> Index: kern/kern_intr.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/kern/kern_intr.c,v
> retrieving revision 1.47
> diff -u -r1.47 kern_intr.c
> --- kern/kern_intr.c 2001/02/28 02:53:43 1.47
> +++ kern/kern_intr.c 2001/03/02 02:28:08
> @@ -366,7 +366,7 @@
> */
> ithread->it_need = 1;
> mtx_lock_spin(&sched_lock);
> - if (p->p_stat == SWAIT) {
> + if (p->p_stat == SWAIT && curproc->p_stat == SRUN) {
> CTR1(KTR_INTR, __func__ ": setrunqueue %d", p->p_pid);
> p->p_stat = SRUN;
> setrunqueue(p);
Heh. Sorry this is wrong, the test for SRUN should be in the
same if statement as the do_switch, one further in. This
will completetly miss interrupts if the race is ever hit...
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message