diff options
author | Corey Minyard <minyard@acm.org> | 2005-11-07 04:00:02 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 10:53:44 -0500 |
commit | c3e7e7916ec61cf58c88af12f4db17f28cffd83a (patch) | |
tree | 4d5be7158f79a9a2b1572e60af5c3645afa333c2 /drivers/char/ipmi/ipmi_si_sm.h | |
parent | 21dcd300b15f87ce10df8773d029708f27499aa7 (diff) |
[PATCH] ipmi: kcs error0 delay
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: Matt Domsch <Matt_Domsch@dell.com>
Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/ipmi/ipmi_si_sm.h')
-rw-r--r-- | drivers/char/ipmi/ipmi_si_sm.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/char/ipmi/ipmi_si_sm.h b/drivers/char/ipmi/ipmi_si_sm.h index 62791dd42985..bf3d4962d6a5 100644 --- a/drivers/char/ipmi/ipmi_si_sm.h +++ b/drivers/char/ipmi/ipmi_si_sm.h | |||
@@ -62,6 +62,7 @@ enum si_sm_result | |||
62 | { | 62 | { |
63 | SI_SM_CALL_WITHOUT_DELAY, /* Call the driver again immediately */ | 63 | SI_SM_CALL_WITHOUT_DELAY, /* Call the driver again immediately */ |
64 | SI_SM_CALL_WITH_DELAY, /* Delay some before calling again. */ | 64 | SI_SM_CALL_WITH_DELAY, /* Delay some before calling again. */ |
65 | SI_SM_CALL_WITH_TICK_DELAY, /* Delay at least 1 tick before calling again. */ | ||
65 | SI_SM_TRANSACTION_COMPLETE, /* A transaction is finished. */ | 66 | SI_SM_TRANSACTION_COMPLETE, /* A transaction is finished. */ |
66 | SI_SM_IDLE, /* The SM is in idle state. */ | 67 | SI_SM_IDLE, /* The SM is in idle state. */ |
67 | SI_SM_HOSED, /* The hardware violated the state machine. */ | 68 | SI_SM_HOSED, /* The hardware violated the state machine. */ |