summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2007-05-14 16:59:43 +0000
committermiod <miod@openbsd.org>2007-05-14 16:59:43 +0000
commit52019d3461a418f838c47d38c839f16f1719d683 (patch)
tree8bc3606760abec93c575e31dc96fe5ee32009018 /sys
parentOops, correctly handle spl-less mutexes. (diff)
downloadwireguard-openbsd-52019d3461a418f838c47d38c839f16f1719d683.tar.xz
wireguard-openbsd-52019d3461a418f838c47d38c839f16f1719d683.zip
Hold kernel_lock when processing interrupts at a level under IPL_SCHED, as
done on 188, for MULTIPROCESSOR kernels.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/mvme88k/mvme88k/m187_machdep.c12
-rw-r--r--sys/arch/mvme88k/mvme88k/m197_machdep.c12
2 files changed, 22 insertions, 2 deletions
diff --git a/sys/arch/mvme88k/mvme88k/m187_machdep.c b/sys/arch/mvme88k/mvme88k/m187_machdep.c
index ac28fd07c08..b61990d34d9 100644
--- a/sys/arch/mvme88k/mvme88k/m187_machdep.c
+++ b/sys/arch/mvme88k/mvme88k/m187_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: m187_machdep.c,v 1.14 2007/05/12 20:02:14 miod Exp $ */
+/* $OpenBSD: m187_machdep.c,v 1.15 2007/05/14 16:59:43 miod Exp $ */
/*
* Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
* Copyright (c) 1996 Nivas Madhur
@@ -126,6 +126,11 @@ m187_ext_int(u_int v, struct trapframe *eframe)
ivec = M187_IACK + (level << 2) + 0x03;
vec = *(volatile u_int8_t *)ivec;
+#ifdef MULTIPROCESSOR
+ if (eframe->tf_mask < IPL_SCHED)
+ __mp_lock(&kernel_lock);
+#endif
+
uvmexp.intrs++;
/* block interrupts at level or lower */
@@ -184,6 +189,11 @@ m187_ext_int(u_int v, struct trapframe *eframe)
* be restored later.
*/
set_psr(get_psr() | PSR_IND);
+
+#ifdef MULTIPROCESSOR
+ if (eframe->tf_mask < IPL_SCHED)
+ __mp_unlock(&kernel_lock);
+#endif
}
u_int
diff --git a/sys/arch/mvme88k/mvme88k/m197_machdep.c b/sys/arch/mvme88k/mvme88k/m197_machdep.c
index c6e33c96362..671b4a43eea 100644
--- a/sys/arch/mvme88k/mvme88k/m197_machdep.c
+++ b/sys/arch/mvme88k/mvme88k/m197_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: m197_machdep.c,v 1.13 2007/05/12 20:02:14 miod Exp $ */
+/* $OpenBSD: m197_machdep.c,v 1.14 2007/05/14 16:59:43 miod Exp $ */
/*
* Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
* Copyright (c) 1996 Nivas Madhur
@@ -171,6 +171,11 @@ m197_ext_int(u_int v, struct trapframe *eframe)
vec = *(volatile u_int8_t *)ivec;
}
+#ifdef MULTIPROCESSOR
+ if (eframe->tf_mask < IPL_SCHED)
+ __mp_lock(&kernel_lock);
+#endif
+
uvmexp.intrs++;
if (v != T_NON_MASK || cold == 0) {
@@ -225,6 +230,11 @@ m197_ext_int(u_int v, struct trapframe *eframe)
*/
set_psr(get_psr() | PSR_IND);
}
+
+#ifdef MULTIPROCESSOR
+ if (eframe->tf_mask < IPL_SCHED)
+ __mp_unlock(&kernel_lock);
+#endif
}
u_int