summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_intr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c
index e42cd10..e171da0 100644
--- a/sys/kern/kern_intr.c
+++ b/sys/kern/kern_intr.c
@@ -331,9 +331,13 @@ ok:
/*
* If the interrupt thread is already running, then just mark this
* handler as being dead and let the ithread do the actual removal.
+ *
+ * During a cold boot while cold is set, msleep() does not sleep,
+ * so we have to remove the handler here rather than letting the
+ * thread do it.
*/
mtx_lock_spin(&sched_lock);
- if (!TD_AWAITING_INTR(ithread->it_td)) {
+ if (!TD_AWAITING_INTR(ithread->it_td) && !cold) {
handler->ih_flags |= IH_DEAD;
/*
OpenPOWER on IntegriCloud