PERFORCE change 101272 for review
Paolo Pisati
piso at FreeBSD.org
Tue Jul 11 13:36:10 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=101272
Change 101272 by piso at piso_newluxor on 2006/07/11 13:35:02
Correct the EOI and mask&EOI logic after calling intr_filter_loop().
Affected files ...
.. //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#4 edit
Differences ...
==== //depot/projects/soc2006/intr_filter/amd64/amd64/intr_machdep.c#4 (text+ko) ====
@@ -220,20 +220,21 @@
thread = 0;
critical_enter();
thread = intr_filter_loop(ie, frame);
-
+
/*
- * If there are any threaded handlers that need to run,
- * mask the source as well as sending it an EOI. Otherwise,
- * just send it an EOI but leave it unmasked.
+ * If the interrupt was fully served, send it an EOI but leave it
+ * unmasked. Otherwise, if there are any threaded handlers that need
+ * to run or it was a stray interrupt, mask the source as well as
+ * sending it an EOI.
*/
- if (thread)
- isrc->is_pic->pic_disable_source(isrc, PIC_EOI);
+ if (thread & FILTER_HANDLED)
+ isrc->is_pic->pic_eoi_source(isrc);
else
- isrc->is_pic->pic_eoi_source(isrc);
+ isrc->is_pic->pic_disable_source(isrc, PIC_EOI);
critical_exit();
/* Schedule the ithread if needed. */
- if (thread) {
+ if (thread & FILTER_SCHEDULE_THREAD) {
error = intr_event_schedule_thread(ie);
KASSERT(error == 0, ("bad stray interrupt"));
}
More information about the p4-projects
mailing list