From 251e4e266bf868c83af7b8c6355035f1b2f0425c Mon Sep 17 00:00:00 2001 From: Theo de Raadt Date: Sun, 26 Jun 2011 21:35:13 +0000 Subject: In the shared interrupt handler, return the pil and ci_handled_intr_level to the level they were at before we started splraise'ing for the various handlers. with jsing, ok kettenis --- sys/arch/sparc64/sparc64/intr.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/arch/sparc64/sparc64/intr.c b/sys/arch/sparc64/sparc64/intr.c index 93ae040d882..e7f2e8bd588 100644 --- a/sys/arch/sparc64/sparc64/intr.c +++ b/sys/arch/sparc64/sparc64/intr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: intr.c,v 1.40 2011/06/24 19:08:46 kettenis Exp $ */ +/* $OpenBSD: intr.c,v 1.41 2011/06/26 21:35:12 deraadt Exp $ */ /* $NetBSD: intr.c,v 1.39 2001/07/19 23:38:11 eeh Exp $ */ /* @@ -131,7 +131,7 @@ intr_list_handler(void *arg) { struct cpu_info *ci = curcpu(); struct intrhand *ih = arg; - int claimed = 0; + int claimed = 0, ipl = ci->ci_handled_intr_level; while (ih) { sparc_wrpr(pil, ih->ih_pil, 0); @@ -144,6 +144,8 @@ intr_list_handler(void *arg) ih = ih->ih_next; } + sparc_wrpr(pil, ipl, 0); + ci->ci_handled_intr_level = ipl; return (claimed); } -- cgit v1.2.3