Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 #ifndef _ASM_POWERPC_RTAS_TYPES_H
0003 #define _ASM_POWERPC_RTAS_TYPES_H
0004 
0005 #include <linux/spinlock_types.h>
0006 
0007 typedef __be32 rtas_arg_t;
0008 
0009 struct rtas_args {
0010     __be32 token;
0011     __be32 nargs;
0012     __be32 nret;
0013     rtas_arg_t args[16];
0014     rtas_arg_t *rets;     /* Pointer to return values in args[]. */
0015 };
0016 
0017 struct rtas_t {
0018     unsigned long entry;        /* physical address pointer */
0019     unsigned long base;     /* physical address pointer */
0020     unsigned long size;
0021     arch_spinlock_t lock;
0022     struct rtas_args args;
0023     struct device_node *dev;    /* virtual address pointer */
0024 };
0025 
0026 struct rtas_error_log {
0027     /* Byte 0 */
0028     u8      byte0;          /* Architectural version */
0029 
0030     /* Byte 1 */
0031     u8      byte1;
0032     /* XXXXXXXX
0033      * XXX      3: Severity level of error
0034      *    XX    2: Degree of recovery
0035      *      X   1: Extended log present?
0036      *       XX 2: Reserved
0037      */
0038 
0039     /* Byte 2 */
0040     u8      byte2;
0041     /* XXXXXXXX
0042      * XXXX     4: Initiator of event
0043      *     XXXX 4: Target of failed operation
0044      */
0045     u8      byte3;          /* General event or error*/
0046     __be32      extended_log_length;    /* length in bytes */
0047     unsigned char   buffer[1];      /* Start of extended log */
0048                         /* Variable length.      */
0049 };
0050 
0051 /* RTAS general extended event log, Version 6. The extended log starts
0052  * from "buffer" field of struct rtas_error_log defined above.
0053  */
0054 struct rtas_ext_event_log_v6 {
0055     /* Byte 0 */
0056     u8 byte0;
0057     /* XXXXXXXX
0058      * X        1: Log valid
0059      *  X       1: Unrecoverable error
0060      *   X      1: Recoverable (correctable or successfully retried)
0061      *    X     1: Bypassed unrecoverable error (degraded operation)
0062      *     X    1: Predictive error
0063      *      X   1: "New" log (always 1 for data returned from RTAS)
0064      *       X  1: Big Endian
0065      *        X 1: Reserved
0066      */
0067 
0068     /* Byte 1 */
0069     u8 byte1;           /* reserved */
0070 
0071     /* Byte 2 */
0072     u8 byte2;
0073     /* XXXXXXXX
0074      * X        1: Set to 1 (indicating log is in PowerPC format)
0075      *  XXX     3: Reserved
0076      *     XXXX 4: Log format used for bytes 12-2047
0077      */
0078 
0079     /* Byte 3 */
0080     u8 byte3;           /* reserved */
0081     /* Byte 4-11 */
0082     u8 reserved[8];         /* reserved */
0083     /* Byte 12-15 */
0084     __be32  company_id;     /* Company ID of the company    */
0085                     /* that defines the format for  */
0086                     /* the vendor specific log type */
0087     /* Byte 16-end of log */
0088     u8 vendor_log[1];       /* Start of vendor specific log */
0089                     /* Variable length.     */
0090 };
0091 
0092 /* Vendor specific Platform Event Log Format, Version 6, section header */
0093 struct pseries_errorlog {
0094     __be16 id;          /* 0x00 2-byte ASCII section ID */
0095     __be16 length;          /* 0x02 Section length in bytes */
0096     u8 version;         /* 0x04 Section version     */
0097     u8 subtype;         /* 0x05 Section subtype     */
0098     __be16 creator_component;   /* 0x06 Creator component ID    */
0099     u8 data[];          /* 0x08 Start of section data   */
0100 };
0101 
0102 /* RTAS pseries hotplug errorlog section */
0103 struct pseries_hp_errorlog {
0104     u8  resource;
0105     u8  action;
0106     u8  id_type;
0107     u8  reserved;
0108     union {
0109         __be32  drc_index;
0110         __be32  drc_count;
0111         struct { __be32 count, index; } ic;
0112         char    drc_name[1];
0113     } _drc_u;
0114 };
0115 
0116 #endif /* _ASM_POWERPC_RTAS_TYPES_H */