|
@@ -691,10 +691,14 @@ void rtas_os_term(char *str)
|
|
|
{
|
|
|
int status;
|
|
|
|
|
|
- if (panic_timeout)
|
|
|
- return;
|
|
|
-
|
|
|
- if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term"))
|
|
|
+ /*
|
|
|
+ * Firmware with the ibm,extended-os-term property is guaranteed
|
|
|
+ * to always return from an ibm,os-term call. Earlier versions without
|
|
|
+ * this property may terminate the partition which we want to avoid
|
|
|
+ * since it interferes with panic_timeout.
|
|
|
+ */
|
|
|
+ if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term") ||
|
|
|
+ RTAS_UNKNOWN_SERVICE == rtas_token("ibm,extended-os-term"))
|
|
|
return;
|
|
|
|
|
|
snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str);
|
|
@@ -705,8 +709,7 @@ void rtas_os_term(char *str)
|
|
|
} while (rtas_busy_delay(status));
|
|
|
|
|
|
if (status != 0)
|
|
|
- printk(KERN_EMERG "ibm,os-term call failed %d\n",
|
|
|
- status);
|
|
|
+ printk(KERN_EMERG "ibm,os-term call failed %d\n", status);
|
|
|
}
|
|
|
|
|
|
static int ibm_suspend_me_token = RTAS_UNKNOWN_SERVICE;
|