Commit c2896def authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'ipmi' (emailed ipmi fixes)

Merge ipmi fixes from Corey Minyard:
 "Things collected since last kernel release.

  Some of these are pretty important.  The first three are bug fixes.
  The next two are to hopefully make everyone happy about allowing
  ACPI to be on all the time and not have IPMI have an effect on the
  system when not in use.  The last is a little cleanup"

* emailed patches from Corey Minyard <cminyard@mvista.com>:
  ipmi: boolify some things
  ipmi: Turn off all activity on an idle ipmi interface
  ipmi: Turn off default probing of interfaces
  ipmi: Reset the KCS timeout when starting error recovery
  ipmi: Fix a race restarting the timer
  Char: ipmi_bt_sm, fix infinite loop
parents 88764e0a 7aefac26
...@@ -50,6 +50,18 @@ config IPMI_SI ...@@ -50,6 +50,18 @@ config IPMI_SI
Currently, only KCS and SMIC are supported. If Currently, only KCS and SMIC are supported. If
you are using IPMI, you should probably say "y" here. you are using IPMI, you should probably say "y" here.
config IPMI_SI_PROBE_DEFAULTS
bool 'Probe for all possible IPMI system interfaces by default'
default n
depends on IPMI_SI
help
Modern systems will usually expose IPMI interfaces via a discoverable
firmware mechanism such as ACPI or DMI. Older systems do not, and so
the driver is forced to probe hardware manually. This may cause boot
delays. Say "n" here to disable this manual probing. IPMI will then
only be available on older systems if the "ipmi_si_intf.trydefaults=1"
boot argument is passed.
config IPMI_WATCHDOG config IPMI_WATCHDOG
tristate 'IPMI Watchdog Timer' tristate 'IPMI Watchdog Timer'
help help
......
...@@ -352,7 +352,7 @@ static inline void write_all_bytes(struct si_sm_data *bt) ...@@ -352,7 +352,7 @@ static inline void write_all_bytes(struct si_sm_data *bt)
static inline int read_all_bytes(struct si_sm_data *bt) static inline int read_all_bytes(struct si_sm_data *bt)
{ {
unsigned char i; unsigned int i;
/* /*
* length is "framing info", minimum = 4: NetFn, Seq, Cmd, cCode. * length is "framing info", minimum = 4: NetFn, Seq, Cmd, cCode.
......
...@@ -251,8 +251,9 @@ static inline int check_obf(struct si_sm_data *kcs, unsigned char status, ...@@ -251,8 +251,9 @@ static inline int check_obf(struct si_sm_data *kcs, unsigned char status,
if (!GET_STATUS_OBF(status)) { if (!GET_STATUS_OBF(status)) {
kcs->obf_timeout -= time; kcs->obf_timeout -= time;
if (kcs->obf_timeout < 0) { if (kcs->obf_timeout < 0) {
start_error_recovery(kcs, "OBF not ready in time"); kcs->obf_timeout = OBF_RETRY_TIMEOUT;
return 1; start_error_recovery(kcs, "OBF not ready in time");
return 1;
} }
return 0; return 0;
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -237,7 +237,7 @@ int ipmi_set_maintenance_mode(ipmi_user_t user, int mode); ...@@ -237,7 +237,7 @@ int ipmi_set_maintenance_mode(ipmi_user_t user, int mode);
* The first user that sets this to TRUE will receive all events that * The first user that sets this to TRUE will receive all events that
* have been queued while no one was waiting for events. * have been queued while no one was waiting for events.
*/ */
int ipmi_set_gets_events(ipmi_user_t user, int val); int ipmi_set_gets_events(ipmi_user_t user, bool val);
/* /*
* Called when a new SMI is registered. This will also be called on * Called when a new SMI is registered. This will also be called on
......
...@@ -109,12 +109,19 @@ struct ipmi_smi_handlers { ...@@ -109,12 +109,19 @@ struct ipmi_smi_handlers {
events from the BMC we are attached to. */ events from the BMC we are attached to. */
void (*request_events)(void *send_info); void (*request_events)(void *send_info);
/* Called by the upper layer when some user requires that the
interface watch for events, received messages, watchdog
pretimeouts, or not. Used by the SMI to know if it should
watch for these. This may be NULL if the SMI does not
implement it. */
void (*set_need_watch)(void *send_info, bool enable);
/* Called when the interface should go into "run to /* Called when the interface should go into "run to
completion" mode. If this call sets the value to true, the completion" mode. If this call sets the value to true, the
interface should make sure that all messages are flushed interface should make sure that all messages are flushed
out and that none are pending, and any new requests are run out and that none are pending, and any new requests are run
to completion immediately. */ to completion immediately. */
void (*set_run_to_completion)(void *send_info, int run_to_completion); void (*set_run_to_completion)(void *send_info, bool run_to_completion);
/* Called to poll for work to do. This is so upper layers can /* Called to poll for work to do. This is so upper layers can
poll for operations during things like crash dumps. */ poll for operations during things like crash dumps. */
...@@ -125,7 +132,7 @@ struct ipmi_smi_handlers { ...@@ -125,7 +132,7 @@ struct ipmi_smi_handlers {
setting. The message handler does the mode handling. Note setting. The message handler does the mode handling. Note
that this is called from interrupt context, so it cannot that this is called from interrupt context, so it cannot
block. */ block. */
void (*set_maintenance_mode)(void *send_info, int enable); void (*set_maintenance_mode)(void *send_info, bool enable);
/* Tell the handler that we are using it/not using it. The /* Tell the handler that we are using it/not using it. The
message handler get the modules that this handler belongs message handler get the modules that this handler belongs
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment