]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] ppc64: fix enable_surveillance() for power5
authorNathan Fontenot <nfont@austin.ibm.com>
Mon, 23 Aug 2004 16:38:48 +0000 (09:38 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 23 Aug 2004 16:38:48 +0000 (09:38 -0700)
On some platforms (notably power5) you can't enable surveillance
(firmware/service processor watchdog) from the kernel - you have to do
it in the firmware.

This patch changes enable_surveillance() to make the message that is
printed in this situation more informative.  Additionaly, the rtas_call
was changed to rtas_set_indicator so as to avoid having to handle
RTAS_BUSY returns.

Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc64/kernel/rtasd.c
include/asm-ppc64/rtas.h

index a9b676ce88c6489992950e771879c2a4aaf7555a..253b7290e24fab77c8bed9729aee262049fd2e90 100644 (file)
@@ -343,15 +343,18 @@ static int enable_surveillance(int timeout)
 {
        int error;
 
-       error = rtas_call(rtas_token("set-indicator"), 3, 1, NULL,
-                         SURVEILLANCE_TOKEN, 0, timeout);
+       error = rtas_set_indicator(SURVEILLANCE_TOKEN, 0, timeout);
 
-       if (error) {
-               printk(KERN_ERR "rtasd: could not enable surveillance\n");
-               return -1;
+       if (error == 0)
+               return 0;
+
+       if (error == RTAS_NO_SUCH_INDICATOR) {
+               printk(KERN_INFO "rtasd: surveillance not supported\n");
+               return 0;
        }
 
-       return 0;
+       printk(KERN_ERR "rtasd: could not update surveillance\n");
+       return -1;
 }
 
 static int get_eventscan_parms(void)
index 5c32e60371e23f13625619c9e95305539e09c520..90e38610e3086bc4f774c936c638162d6b4f3c9d 100644 (file)
 /* Buffer size for ppc_rtas system call. */
 #define RTAS_RMOBUF_MAX (64 * 1024)
 
-/* RTAS return codes */
-#define RTAS_BUSY              -2      /* RTAS Return Status - Busy */
-#define RTAS_EXTENDED_DELAY_MIN 9900
-#define RTAS_EXTENDED_DELAY_MAX 9905
+/* RTAS return status codes */
+#define RTAS_BUSY              -2    /* RTAS Busy */
+#define RTAS_NO_SUCH_INDICATOR -3    /* No such indicator implemented */
+#define RTAS_EXTENDED_DELAY_MIN        9900
+#define RTAS_EXTENDED_DELAY_MAX        9905
 
-#define RTAS_UNKNOWN_OP                -1099   /* Return Status - Unknown RTAS Token */
+#define RTAS_UNKNOWN_OP                -1099 /* Unknown RTAS Token */
 
 /*
  * In general to call RTAS use rtas_token("string") to lookup