On Wed, Dec 02, 2020 at 11:43:32PM +0100, Mark Kettenis wrote:
> > From: "Constantine A. Murenin" <muren...@gmail.com>
> > Date: Wed, 2 Dec 2020 14:04:52 -0800
> > 
> > Not sure if you've seen it, but ipmi(4) has been disabled for over 12
> > years, because it's broken on some machines, so, this code is not
> > necessarily guaranteed to be correct as-is.
> > 
> > http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/i386/conf/GENERIC#rev1.632
> > http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/arch/amd64/conf/GENERIC#rev1.238
> 
> The driver is actually enabled on arm64.  And I'll probably enable it
> on powerpc64 at some point.

kettenis@/sthen@:

In that case, could one or both of you test this diff?

I doubt anyone remembers why we spin until tsleep(9) returns
EWOULDBLOCK.  If we can confirm that the driver still works with a 1ms
block in this spot then that's good enough for me.

So, does this still work?

Index: ipmi.c
===================================================================
RCS file: /cvs/src/sys/dev/ipmi.c,v
retrieving revision 1.112
diff -u -p -r1.112 ipmi.c
--- ipmi.c      29 Mar 2020 09:31:10 -0000      1.112
+++ ipmi.c      2 Dec 2020 20:31:57 -0000
@@ -1497,7 +1497,8 @@ ipmi_poll_thread(void *arg)
                        printf("%s: no SDRs IPMI disabled\n", DEVNAME(sc));
                        goto done;
                }
-               while (tsleep(sc, PWAIT, "ipmirun", 1) != EWOULDBLOCK)
+               while (tsleep_nsec(sc, PWAIT, "ipmirun",
+                   MSEC_TO_NSEC(1)) != EWOULDBLOCK)
                        continue;
        }
 

Reply via email to