summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2010-07-07 15:35:24 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2010-07-07 15:35:24 +0000
commitbc131bfbcef9f7b75cce313993466eed0e4884da (patch)
tree4bbb65270a75b0336831b5a816cc6c0bcd780fcf /sys
parentb4037951b8516155c924b4b8c4687d2b984cba2d (diff)
Don't grab the kernel lock for clock interrupts. Prevents deadlocks when
running stuff that depends on mutexes without holding the kernel lock. ok art@
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/sparc64/sparc64/intr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/arch/sparc64/sparc64/intr.c b/sys/arch/sparc64/sparc64/intr.c
index 3a56322d448..d034d6f5a06 100644
--- a/sys/arch/sparc64/sparc64/intr.c
+++ b/sys/arch/sparc64/sparc64/intr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: intr.c,v 1.35 2010/04/16 22:35:24 kettenis Exp $ */
+/* $OpenBSD: intr.c,v 1.36 2010/07/07 15:35:23 kettenis Exp $ */
/* $NetBSD: intr.c,v 1.39 2001/07/19 23:38:11 eeh Exp $ */
/*
@@ -369,14 +369,14 @@ void sparc64_intunlock(struct trapframe64 *);
void
sparc64_intlock(struct trapframe64 *tf)
{
- if(tf->tf_pil < PIL_SCHED)
+ if (tf->tf_pil < PIL_SCHED && tf->tf_pil != PIL_CLOCK)
__mp_lock(&kernel_lock);
}
void
sparc64_intunlock(struct trapframe64 *tf)
{
- if(tf->tf_pil < PIL_SCHED)
+ if (tf->tf_pil < PIL_SCHED && tf->tf_pil != PIL_CLOCK)
__mp_unlock(&kernel_lock);
}