• Corey Minyard's avatar
    [PATCH] ipmi: kcs error0 delay · c3e7e791
    Corey Minyard authored
    BMCs can get into ERROR0 state while flashing new firmware, particularly while
    the BMC is erasing the next flash block, which may take a just under 2 seconds
    on a Dell PowerEdge 2800 (1.75 seconds typical), during which time the
    single-threaded firmware may not be able to process new commands.  In
    particular, clearing OBF may not take effect immediately.
    
    We want it to delay in ERROR0 after clearing OBF a bit waiting for OBF to
    actually be clear before proceeding.
    
    This introduces a new return value from the LLDD's event loop,
    SI_SM_CALL_WITH_TICK_DELAY.  This means the calling thread/timer should
    schedule_timeout() at least 1 tick, rather than busy-wait.  This is a longer
    delay than SI_SM_CALL_WITH_DELAY, which is typically a 250us busy-wait.
    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>
    c3e7e791
ipmi_kcs_sm.c 13.5 KB