From feeb07e6ae425b0f5c31972b670412b5917281ec Mon Sep 17 00:00:00 2001 From: jhb Date: Thu, 15 Sep 2005 20:08:21 +0000 Subject: Don't disallow sleeping for handlers on swi's since some swi handlers (like CAM) do sleep in their handlers. Requested by: scottl --- sys/kern/kern_intr.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sys/kern/kern_intr.c') diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index d3c876d..ab189cf 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -521,7 +521,8 @@ ithread_loop(void *arg) * another pass. */ atomic_store_rel_int(&ithd->it_need, 0); - THREAD_NO_SLEEPING(); + if (!(ithd->it_flags & IT_SOFT)) + THREAD_NO_SLEEPING(); restart: TAILQ_FOREACH(ih, &ithd->it_handlers, ih_next) { if (ithd->it_flags & IT_SOFT && !ih->ih_need) @@ -547,7 +548,8 @@ restart: if ((ih->ih_flags & IH_MPSAFE) == 0) mtx_unlock(&Giant); } - THREAD_SLEEPING_OK(); + if (!(ithd->it_flags & IT_SOFT)) + THREAD_SLEEPING_OK(); /* * Interrupt storm handling: -- cgit v1.1