From 01bac5e5a8414a3908aa50d1e83fbc56ad7584c3 Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Thu, 18 Feb 2010 12:11:51 +0000 Subject: [PATCH] --- yaml --- r: 196607 b: refs/heads/master c: e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb h: refs/heads/master i: 196605: d995efa0762ca344cb2cc199397d7aee2902a13a 196603: 5743d26d2458468a810d3ed77a17edf5e4c38a31 196599: 1850b604c662271c495ad23b276954e20f465b69 196591: b98ab9e3a6e76578594af4492d1e9bde59aae867 196575: 73e3958a9d70d743a240ba2beaab8001efc00a98 196543: 68b4189ec99e410c8be9c6e898124d6b2a16dd1b 196479: a81a123f2a4c0479d10273a33240dadaefa62f0d 196351: e2fd3362837b7259f18d4988efb36cdae8393347 196095: fb7d86b5042e4db8e2bebb991e10e0413092874d 195583: 32a9275aecb805bfff0828f9716b3bbbbb393aad 194559: d61d5ef064409d30670291ba5c4ac2b1d22636bb 192511: 9325e2bfdab79e49b7c0cb495169b590fb8ee8d3 188415: 57c45ddab1d9d032d0bbe5c363dcd4fa89523afe 180223: d6ecfc0a2658379b0710cf00f231f5a199e10333 163839: 820908f85d8f79136026e16e4e366ec7895ebcf6 131071: 5e1d55329a1e76f29215b146a22e31dd45999a04 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kernel/rtas.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 3cba3f8868f2..b0aa4a1db589 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 27f10907b7cca57df5e2a9c94c14354dd1b7879d +refs/heads/master: e9bbc8cde0e3c33b42ddbe1b02108cb5c97275eb diff --git a/trunk/arch/powerpc/kernel/rtas.c b/trunk/arch/powerpc/kernel/rtas.c index 74367841615a..0e1ec6f746f6 100644 --- a/trunk/arch/powerpc/kernel/rtas.c +++ b/trunk/arch/powerpc/kernel/rtas.c @@ -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;