diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2010-07-07 15:35:24 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2010-07-07 15:35:24 +0000 |
commit | bc131bfbcef9f7b75cce313993466eed0e4884da (patch) | |
tree | 4bbb65270a75b0336831b5a816cc6c0bcd780fcf /sys/arch/sparc64 | |
parent | b4037951b8516155c924b4b8c4687d2b984cba2d (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/arch/sparc64')
-rw-r--r-- | sys/arch/sparc64/sparc64/intr.c | 6 |
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); } |