Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 May 2004 14:31:17 -0700 (PDT)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 53690 for review
Message-ID:  <200405282131.i4SLVHKg070461@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=53690

Change 53690 by rwatson@rwatson_paprika on 2004/05/28 14:30:56

	Selective integrate of ithread preemption fix from FreeBSD
	CVS HEAD to netperf_socket branch.

Affected files ...

.. //depot/projects/netperf_socket/sys/i386/i386/intr_machdep.c#3 integrate

Differences ...

==== //depot/projects/netperf_socket/sys/i386/i386/intr_machdep.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.5 2004/05/04 21:02:56 jhb Exp $
+ * $FreeBSD: src/sys/i386/i386/intr_machdep.c,v 1.6 2004/05/28 17:50:07 jhb Exp $
  */
 
 /*
@@ -183,7 +183,6 @@
 	if (vector == 0)
 		clkintr_pending = 1;
 
-	critical_enter();
 	if (ih != NULL && ih->ih_flags & IH_FAST) {
 		/*
 		 * Execute fast interrupt handlers directly.
@@ -191,6 +190,7 @@
 		 * with a NULL argument, then we pass it a pointer to
 		 * a trapframe as its argument.
 		 */
+		critical_enter();
 		TAILQ_FOREACH(ih, &it->it_handlers, ih_next) {
 			MPASS(ih->ih_flags & IH_FAST);
 			CTR3(KTR_INTR, "%s: executing handler %p(%p)",
@@ -204,6 +204,7 @@
 		}
 		isrc->is_pic->pic_eoi_source(isrc);
 		error = 0;
+		critical_exit();
 	} else {
 		/*
 		 * For stray and threaded interrupts, we mask and EOI the
@@ -216,7 +217,6 @@
 		else
 			error = ithread_schedule(it, !cold);
 	}
-	critical_exit();
 	if (error == EINVAL) {
 		atomic_add_long(isrc->is_straycount, 1);
 		if (*isrc->is_straycount < MAX_STRAY_LOG)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405282131.i4SLVHKg070461>