aboutsummaryrefslogtreecommitdiff
path: root/core/ipmi.c
diff options
context:
space:
mode:
authorAlistair Popple <alistair@popple.id.au>2015-02-04 16:07:46 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-02-09 14:24:58 +1100
commit739e6df1163301a200b604b5eefa00770f9fa44c (patch)
treed8f05f37ddcd0f5f28e0753f13da9d4c7804be40 /core/ipmi.c
parente8ffc3caadf6e5ddbcd0910ae239eb1be0fdb381 (diff)
downloadskiboot-739e6df1163301a200b604b5eefa00770f9fa44c.zip
skiboot-739e6df1163301a200b604b5eefa00770f9fa44c.tar.gz
skiboot-739e6df1163301a200b604b5eefa00770f9fa44c.tar.bz2
ipmi/wdt: Add ipmi watchdog timer support
Add support for an ipmi watchdog timer. During skiboot initialisation this patch will cause the system to be reset if opal_run_pollers() isn't called for more than 60 seconds. Once the payload is started the watchdog timer will be reset and a pre-timeout interrupt set. The payload should then receive the interrupt and call into skiboot which will disable the watchdog timer. Signed-off-by: Alistair Popple <alistair@popple.id.au> Reviewed-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core/ipmi.c')
-rw-r--r--core/ipmi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/ipmi.c b/core/ipmi.c
index e4dfefd..39997f6 100644
--- a/core/ipmi.c
+++ b/core/ipmi.c
@@ -156,6 +156,12 @@ static void ipmi_get_message_flags_complete(struct ipmi_msg *msg)
prlog(PR_DEBUG, "IPMI Get Message Flags: %02x\n", flags);
+ /* Once we see an interrupt we assume the payload has
+ * booted. We disable the wdt and let the OS setup its own
+ * wdt. */
+ if (flags & IPMI_MESSAGE_FLAGS_WATCHDOG_PRE_TIMEOUT)
+ ipmi_wdt_stop();
+
/* Message available in the event buffer? Queue a Read Event command
* to retrieve it. The flag is cleared by performing a read */
if (flags & IPMI_MESSAGE_FLAGS_EVENT_BUFFER) {