From d4ea20b7e1d7639414abf5065adbb41b63e8d4cf Mon Sep 17 00:00:00 2001 From: jhb Date: Mon, 19 Jul 2004 16:37:47 +0000 Subject: [PATCH] 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. --- sys/alpha/alpha/interrupt.c | 2 ++ sys/amd64/amd64/intr_machdep.c | 2 ++ sys/i386/i386/intr_machdep.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/sys/alpha/alpha/interrupt.c b/sys/alpha/alpha/interrupt.c index 066244df1cb..1c3bd47426a 100644 --- a/sys/alpha/alpha/interrupt.c +++ b/sys/alpha/alpha/interrupt.c @@ -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; } diff --git a/sys/amd64/amd64/intr_machdep.c b/sys/amd64/amd64/intr_machdep.c index 6b591d49225..8a8968bfa70 100644 --- a/sys/amd64/amd64/intr_machdep.c +++ b/sys/amd64/amd64/intr_machdep.c @@ -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 { /* diff --git a/sys/i386/i386/intr_machdep.c b/sys/i386/i386/intr_machdep.c index 6b591d49225..8a8968bfa70 100644 --- a/sys/i386/i386/intr_machdep.c +++ b/sys/i386/i386/intr_machdep.c @@ -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 { /* -- 2.45.2