As a temporary hack, turn off deferred preemptions that are the result of

a fast interrupt handler doing an swi_sched().  This fixed the lockups I
saw on my laptop when using xmms in KDE and on rwatson's MySQL benchmarks
on SMP.  This will eventually be removed and/or modified when I figure out
what the root cause is and fix that.
This commit is contained in:
John Baldwin 2004-07-19 16:37:47 +00:00
parent 0c3c862e21
commit 788195c186
3 changed files with 6 additions and 0 deletions

View File

@ -435,6 +435,8 @@ alpha_dispatch_intr(void *frame, unsigned long vector)
if ((ih->ih_flags & IH_FAST) != 0) { if ((ih->ih_flags & IH_FAST) != 0) {
critical_enter(); critical_enter();
ih->ih_handler(ih->ih_argument); ih->ih_handler(ih->ih_argument);
/* XXX */
td->td_pflags &= ~TDP_OWEPREEMPT;
critical_exit(); critical_exit();
return; return;
} }

View File

@ -204,6 +204,8 @@ intr_execute_handlers(struct intsrc *isrc, struct intrframe *iframe)
} }
isrc->is_pic->pic_eoi_source(isrc); isrc->is_pic->pic_eoi_source(isrc);
error = 0; error = 0;
/* XXX */
td->td_pflags &= ~TDP_OWEPREEMPT;
critical_exit(); critical_exit();
} else { } else {
/* /*

View File

@ -204,6 +204,8 @@ intr_execute_handlers(struct intsrc *isrc, struct intrframe *iframe)
} }
isrc->is_pic->pic_eoi_source(isrc); isrc->is_pic->pic_eoi_source(isrc);
error = 0; error = 0;
/* XXX */
td->td_pflags &= ~TDP_OWEPREEMPT;
critical_exit(); critical_exit();
} else { } else {
/* /*