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:
parent
0c3c862e21
commit
788195c186
@ -435,6 +435,8 @@ alpha_dispatch_intr(void *frame, unsigned long vector)
|
||||
if ((ih->ih_flags & IH_FAST) != 0) {
|
||||
critical_enter();
|
||||
ih->ih_handler(ih->ih_argument);
|
||||
/* XXX */
|
||||
td->td_pflags &= ~TDP_OWEPREEMPT;
|
||||
critical_exit();
|
||||
return;
|
||||
}
|
||||
|
@ -204,6 +204,8 @@ intr_execute_handlers(struct intsrc *isrc, struct intrframe *iframe)
|
||||
}
|
||||
isrc->is_pic->pic_eoi_source(isrc);
|
||||
error = 0;
|
||||
/* XXX */
|
||||
td->td_pflags &= ~TDP_OWEPREEMPT;
|
||||
critical_exit();
|
||||
} else {
|
||||
/*
|
||||
|
@ -204,6 +204,8 @@ intr_execute_handlers(struct intsrc *isrc, struct intrframe *iframe)
|
||||
}
|
||||
isrc->is_pic->pic_eoi_source(isrc);
|
||||
error = 0;
|
||||
/* XXX */
|
||||
td->td_pflags &= ~TDP_OWEPREEMPT;
|
||||
critical_exit();
|
||||
} else {
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user