powerpc/pseries: Machine check use rtas_call_unlocked() with args on stack
[linux-2.6-microblaze.git] / arch / powerpc / platforms / pseries / ras.c
index d20aecc..f3736fc 100644 (file)
@@ -468,7 +468,15 @@ static struct rtas_error_log *fwnmi_get_errinfo(struct pt_regs *regs)
  */
 static void fwnmi_release_errinfo(void)
 {
-       int ret = rtas_call(ibm_nmi_interlock_token, 0, 1, NULL);
+       struct rtas_args rtas_args;
+       int ret;
+
+       /*
+        * On pseries, the machine check stack is limited to under 4GB, so
+        * args can be on-stack.
+        */
+       rtas_call_unlocked(&rtas_args, ibm_nmi_interlock_token, 0, 1, NULL);
+       ret = be32_to_cpu(rtas_args.rets[0]);
        if (ret != 0)
                printk(KERN_ERR "FWNMI: nmi-interlock failed: %d\n", ret);
 }