Change ipmi(4)'s taskq from IPL_NONE to IPL_MPFLOOR
authorgkoehler <gkoehler@openbsd.org>
Wed, 3 Apr 2024 18:32:47 +0000 (18:32 +0000)
committergkoehler <gkoehler@openbsd.org>
Wed, 3 Apr 2024 18:32:47 +0000 (18:32 +0000)
The IPL_NONE mutex didn't block interrupts that can cause a powerpc64
kernel with option WITNESS to "panic: acquiring blockable sleep lock
with spinlock or critical section held (kernel_lock) &kernel_lock".

ok mpi@

sys/dev/ipmi.c

index 08726f6..1e4dad8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ipmi.c,v 1.118 2022/04/08 13:13:14 mbuhl Exp $ */
+/*     $OpenBSD: ipmi.c,v 1.119 2024/04/03 18:32:47 gkoehler Exp $ */
 
 /*
  * Copyright (c) 2015 Masao Uebayashi
@@ -1596,7 +1596,8 @@ ipmi_attach_common(struct ipmi_softc *sc, struct ipmi_attach_args *ia)
        c->c_sc = sc;
        c->c_ccode = -1;
 
-       sc->sc_cmd_taskq = taskq_create("ipmicmd", 1, IPL_NONE, TASKQ_MPSAFE);
+       sc->sc_cmd_taskq = taskq_create("ipmicmd", 1, IPL_MPFLOOR,
+           TASKQ_MPSAFE);
 }
 
 int