PERFORCE change 48811 for review
John Baldwin
jhb at FreeBSD.org
Fri Mar 12 11:35:57 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=48811
Change 48811 by jhb at jhb_slimer on 2004/03/12 11:35:28
Possibly fix ithread preemption on alpha. I don't have the DS20 fired up
to test this, but I can send it to the list. When I've tried preemption
in the past on alpha it would lock up under load on an SMP machine.
Affected files ...
.. //depot/projects/smpng/sys/alpha/alpha/interrupt.c#24 edit
Differences ...
==== //depot/projects/smpng/sys/alpha/alpha/interrupt.c#24 (text+ko) ====
@@ -447,8 +447,16 @@
"alpha_dispatch_intr: disabling vector 0x%x", i->vector);
ithd->it_disable(ithd->it_vector);
}
- error = ithread_schedule(ithd, 0 /* !cold */);
+
+ /*
+ * It seems that we need to return from an interrupt back to PAL
+ * on the same CPU that received the interrupt, so pin the interrupted
+ * thread to the current CPU until we return from the interrupt.
+ */
+ sched_pin();
+ error = ithread_schedule(ithd, !cold);
KASSERT(error == 0, ("got an impossible stray interrupt"));
+ sched_unpin();
}
static void
More information about the p4-projects
mailing list