Date: Fri, 12 Mar 2004 11:35:56 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 48811 for review Message-ID: <200403121935.i2CJZuo1063271@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=48811 Change 48811 by jhb@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403121935.i2CJZuo1063271>