[patch] IPMI KCS can drop the lock while servicing a request

John Baldwin jhb at freebsd.org
Tue Apr 2 21:08:08 UTC 2013

On Saturday, March 23, 2013 11:11:20 pm Eric van Gyzen wrote:
> At work, we discovered that our application's IPMI thread would often 
> use a lot of CPU time.  The KCS thread uses DELAY to wait for the BMC, 
> so it can run without sleeping for a "long" time with a slow BMC.  It 
> also holds the ipmi_softc.ipmi_lock during this time.  When using 
> adaptive mutexes, an application thread that wants to operate on the 
> ipmi_pending_requests list will also spin during this same time.
> We see no reason that the KCS thread needs to hold the lock while 
> servicing a request.  We've been running with the attached patch for a 
> few months, with no ill effects.

The lock protects against concurrent access to the registers themselves
(though the thread sort of does this already).  However, even with a slow
BMC it shouldn't be waiting but so long.  I had some other comments about
this patch in my reply to when it was committed.

John Baldwin

More information about the freebsd-stable mailing list