powerpc/pseries: Add RTAS event log v6 definition
authorTseng-Hui (Frank) Lin <thlin@linux.vnet.ibm.com>
Tue, 3 May 2011 18:28:43 +0000 (18:28 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 6 May 2011 03:18:59 +0000 (13:18 +1000)
This patch adds definitions of non-IBM specific v6 extended log
definitions to rtas.h.

Signed-off-by: Tseng-Hui (Frank) Lin <tsenglin@us.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/include/asm/rtas.h

index 9a1193e..58625d1 100644 (file)
@@ -158,7 +158,50 @@ struct rtas_error_log {
        unsigned long target:4;                 /* Target of failed operation */
        unsigned long type:8;                   /* General event or error*/
        unsigned long extended_log_length:32;   /* length in bytes */
-       unsigned char buffer[1];
+       unsigned char buffer[1];                /* Start of extended log */
+                                               /* Variable length.      */
+};
+
+#define RTAS_V6EXT_LOG_FORMAT_EVENT_LOG        14
+
+#define RTAS_V6EXT_COMPANY_ID_IBM      (('I' << 24) | ('B' << 16) | ('M' << 8))
+
+/* RTAS general extended event log, Version 6. The extended log starts
+ * from "buffer" field of struct rtas_error_log defined above.
+ */
+struct rtas_ext_event_log_v6 {
+       /* Byte 0 */
+       uint32_t log_valid:1;           /* 1:Log valid */
+       uint32_t unrecoverable_error:1; /* 1:Unrecoverable error */
+       uint32_t recoverable_error:1;   /* 1:recoverable (correctable   */
+                                       /*   or successfully retried)   */
+       uint32_t degraded_operation:1;  /* 1:Unrecoverable err, bypassed*/
+                                       /*   - degraded operation (e.g. */
+                                       /*   CPU or mem taken off-line) */
+       uint32_t predictive_error:1;
+       uint32_t new_log:1;             /* 1:"New" log (Always 1 for    */
+                                       /*   data returned from RTAS    */
+       uint32_t big_endian:1;          /* 1: Big endian */
+       uint32_t :1;                    /* reserved */
+       /* Byte 1 */
+       uint32_t :8;                    /* reserved */
+       /* Byte 2 */
+       uint32_t powerpc_format:1;      /* Set to 1 (indicating log is  */
+                                       /* in PowerPC format            */
+       uint32_t :3;                    /* reserved */
+       uint32_t log_format:4;          /* Log format indicator. Define */
+                                       /* format used for byte 12-2047 */
+       /* Byte 3 */
+       uint32_t :8;                    /* reserved */
+       /* Byte 4-11 */
+       uint8_t reserved[8];            /* reserved */
+       /* Byte 12-15 */
+       uint32_t company_id;            /* Company ID of the company    */
+                                       /* that defines the format for  */
+                                       /* the vendor specific log type */
+       /* Byte 16-end of log */
+       uint8_t vendor_log[1];          /* Start of vendor specific log */
+                                       /* Variable length.             */
 };
 
 /*