• Corey Minyard's avatar
    [PATCH] ipmi: add timer thread · a9a2c44f
    Corey Minyard authored
    We must poll for responses to commands when interrupts aren't in use.  The
    default poll interval is based on using a kernel timer, which varies with HZ.
    For character-based interfaces like KCS and SMIC though, that can be way too
    slow (>15 minutes to flash a new firmware with KCS, >20 seconds to retrieve
    the sensor list).
    
    This creates a low-priority kernel thread to poll more often.  If the state
    machine is idle, so is the kernel thread.  But if there's an active command,
    it polls quite rapidly.  This decrease a firmware flash time from 15 minutes
    to 1.5 minutes, and the sensor list time to 4.5 seconds, on a Dell PowerEdge
    x8x system.
    
    The timer-based polling remains, to ensure some amount of responsiveness even
    under high user process CPU load.
    
    Checking for a stopped timer at rmmod now uses atomics and del_timer_sync() to
    ensure safe stoppage.
    Signed-off-by: default avatarMatt Domsch <Matt_Domsch@dell.com>
    Signed-off-by: default avatarCorey Minyard <minyard@acm.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    a9a2c44f
ipmi_si_intf.c 67.5 KB