Module Name: src
Committed By: riastradh
Date: Wed Dec 4 15:25:12 UTC 2024
Modified Files:
src/sys/dev: ipmi.c ipmivar.h
Log Message:
ipmi(4): Omit needless condvar/mutex for sleep.
Just use kpause instead.
Cleanup in preparation for:
PR kern/58869: ipmi(4) holds sc_cmd_mtx across copyout, needed for
wdog tickle
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/ipmi.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/ipmivar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ipmi.c
diff -u src/sys/dev/ipmi.c:1.12 src/sys/dev/ipmi.c:1.13
--- src/sys/dev/ipmi.c:1.12 Tue Dec 3 22:11:38 2024
+++ src/sys/dev/ipmi.c Wed Dec 4 15:25:12 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: ipmi.c,v 1.12 2024/12/03 22:11:38 riastradh Exp $ */
+/* $NetBSD: ipmi.c,v 1.13 2024/12/04 15:25:12 riastradh Exp $ */
/*
* Copyright (c) 2019 Michael van Elst
@@ -76,7 +76,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipmi.c,v 1.12 2024/12/03 22:11:38 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipmi.c,v 1.13 2024/12/04 15:25:12 riastradh Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -355,9 +355,7 @@ bmc_io_wait_sleep(struct ipmi_softc *sc,
v = bmc_read(sc, offset);
if ((v & mask) == value)
return v;
- mutex_enter(&sc->sc_sleep_mtx);
- cv_timedwait(&sc->sc_cmd_sleep, &sc->sc_sleep_mtx, 1);
- mutex_exit(&sc->sc_sleep_mtx);
+ kpause("ipmicmd", /*intr*/false, /*timo*/1, /*mtx*/NULL);
}
return -1;
}
@@ -1096,9 +1094,7 @@ ipmi_delay(struct ipmi_softc *sc, int ms
delay(ms * 1000);
return;
}
- mutex_enter(&sc->sc_sleep_mtx);
- cv_timedwait(&sc->sc_cmd_sleep, &sc->sc_sleep_mtx, mstohz(ms));
- mutex_exit(&sc->sc_sleep_mtx);
+ kpause("ipmicmd", /*intr*/false, /*timo*/mstohz(ms), /*mtx*/NULL);
}
/* Read a partial SDR entry */
@@ -1982,12 +1978,10 @@ ipmi_match(device_t parent, cfdata_t cf,
sc.sc_if->probe(&sc);
mutex_init(&sc.sc_cmd_mtx, MUTEX_DEFAULT, IPL_SOFTCLOCK);
- cv_init(&sc.sc_cmd_sleep, "ipmimtch");
if (ipmi_get_device_id(&sc, NULL) == 0)
rv = 1;
- cv_destroy(&sc.sc_cmd_sleep);
mutex_destroy(&sc.sc_cmd_mtx);
ipmi_unmap_regs(&sc);
@@ -2165,8 +2159,6 @@ ipmi_attach(device_t parent, device_t se
/* lock around read_sensor so that no one messes with the bmc regs */
mutex_init(&sc->sc_cmd_mtx, MUTEX_DEFAULT, IPL_SOFTCLOCK);
- mutex_init(&sc->sc_sleep_mtx, MUTEX_DEFAULT, IPL_SOFTCLOCK);
- cv_init(&sc->sc_cmd_sleep, "ipmicmd");
mutex_init(&sc->sc_poll_mtx, MUTEX_DEFAULT, IPL_SOFTCLOCK);
cv_init(&sc->sc_poll_cv, "ipmipoll");
@@ -2230,8 +2222,6 @@ ipmi_detach(device_t self, int flags)
cv_destroy(&sc->sc_mode_cv);
cv_destroy(&sc->sc_poll_cv);
mutex_destroy(&sc->sc_poll_mtx);
- cv_destroy(&sc->sc_cmd_sleep);
- mutex_destroy(&sc->sc_sleep_mtx);
mutex_destroy(&sc->sc_cmd_mtx);
return 0;
Index: src/sys/dev/ipmivar.h
diff -u src/sys/dev/ipmivar.h:1.4 src/sys/dev/ipmivar.h:1.5
--- src/sys/dev/ipmivar.h:1.4 Tue Dec 3 19:55:33 2024
+++ src/sys/dev/ipmivar.h Wed Dec 4 15:25:12 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: ipmivar.h,v 1.4 2024/12/03 19:55:33 riastradh Exp $ */
+/* $NetBSD: ipmivar.h,v 1.5 2024/12/04 15:25:12 riastradh Exp $ */
/*
* Copyright (c) 2005 Jordan Hargrave
@@ -95,8 +95,6 @@ struct ipmi_softc {
kcondvar_t sc_mode_cv;
kmutex_t sc_cmd_mtx;
- kmutex_t sc_sleep_mtx;
- kcondvar_t sc_cmd_sleep;
struct ipmi_bmc_args *sc_iowait_args;