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