summaryrefslogtreecommitdiff
path: root/sys/arch/m88k
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2007-11-09 17:08:45 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2007-11-09 17:08:45 +0000
commita13a1c712b8588febaf4a3a2d4130559ff021001 (patch)
tree1e149dc5fb88b2bf050fe267b3b3ca600a8a466d /sys/arch/m88k
parent9448467ffb4abd5284cb9f29a1b29a3b661f1392 (diff)
On MULTIPROCESSOR kernels, don't forget to grab the kernel lock when
processing soft interrupts; and there was much rejoicing.
Diffstat (limited to 'sys/arch/m88k')
-rw-r--r--sys/arch/m88k/m88k/m88k_machdep.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/arch/m88k/m88k/m88k_machdep.c b/sys/arch/m88k/m88k/m88k_machdep.c
index 01469ce3f8e..ede3f353edc 100644
--- a/sys/arch/m88k/m88k/m88k_machdep.c
+++ b/sys/arch/m88k/m88k/m88k_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: m88k_machdep.c,v 1.27 2007/11/06 21:48:44 miod Exp $ */
+/* $OpenBSD: m88k_machdep.c,v 1.28 2007/11/09 17:08:44 miod Exp $ */
/*
* Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
* Copyright (c) 1996 Nivas Madhur
@@ -323,6 +323,10 @@ dosoftint()
if ((sir = *ssir) == 0)
return;
+#ifdef MULTIPROCESSOR
+ __mp_lock(&kernel_lock);
+#endif
+
atomic_clearbits_int(ssir, sir);
uvmexp.softs++;
@@ -344,6 +348,10 @@ dosoftint()
if (ISSET(sir, SIR_CLOCK))
softclock();
+
+#ifdef MULTIPROCESSOR
+ __mp_unlock(&kernel_lock);
+#endif
}
int