diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2007-11-09 17:08:45 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2007-11-09 17:08:45 +0000 |
commit | a13a1c712b8588febaf4a3a2d4130559ff021001 (patch) | |
tree | 1e149dc5fb88b2bf050fe267b3b3ca600a8a466d /sys | |
parent | 9448467ffb4abd5284cb9f29a1b29a3b661f1392 (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')
-rw-r--r-- | sys/arch/m88k/m88k/m88k_machdep.c | 10 |
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 |