linux/arch/powerpc/include/asm/rtas-types.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2#ifndef _ASM_POWERPC_RTAS_TYPES_H
   3#define _ASM_POWERPC_RTAS_TYPES_H
   4
   5#include <linux/spinlock_types.h>
   6
   7typedef __be32 rtas_arg_t;
   8
   9struct rtas_args {
  10        __be32 token;
  11        __be32 nargs;
  12        __be32 nret;
  13        rtas_arg_t args[16];
  14        rtas_arg_t *rets;     /* Pointer to return values in args[]. */
  15};
  16
  17struct rtas_t {
  18        unsigned long entry;            /* physical address pointer */
  19        unsigned long base;             /* physical address pointer */
  20        unsigned long size;
  21        arch_spinlock_t lock;
  22        struct rtas_args args;
  23        struct device_node *dev;        /* virtual address pointer */
  24};
  25
  26struct rtas_suspend_me_data {
  27        atomic_t working; /* number of cpus accessing this struct */
  28        atomic_t done;
  29        int token; /* ibm,suspend-me */
  30        atomic_t error;
  31        struct completion *complete; /* wait on this until working == 0 */
  32};
  33
  34struct rtas_error_log {
  35        /* Byte 0 */
  36        u8              byte0;                  /* Architectural version */
  37
  38        /* Byte 1 */
  39        u8              byte1;
  40        /* XXXXXXXX
  41         * XXX          3: Severity level of error
  42         *    XX        2: Degree of recovery
  43         *      X       1: Extended log present?
  44         *       XX     2: Reserved
  45         */
  46
  47        /* Byte 2 */
  48        u8              byte2;
  49        /* XXXXXXXX
  50         * XXXX         4: Initiator of event
  51         *     XXXX     4: Target of failed operation
  52         */
  53        u8              byte3;                  /* General event or error*/
  54        __be32          extended_log_length;    /* length in bytes */
  55        unsigned char   buffer[1];              /* Start of extended log */
  56                                                /* Variable length.      */
  57};
  58
  59/* RTAS general extended event log, Version 6. The extended log starts
  60 * from "buffer" field of struct rtas_error_log defined above.
  61 */
  62struct rtas_ext_event_log_v6 {
  63        /* Byte 0 */
  64        u8 byte0;
  65        /* XXXXXXXX
  66         * X            1: Log valid
  67         *  X           1: Unrecoverable error
  68         *   X          1: Recoverable (correctable or successfully retried)
  69         *    X         1: Bypassed unrecoverable error (degraded operation)
  70         *     X        1: Predictive error
  71         *      X       1: "New" log (always 1 for data returned from RTAS)
  72         *       X      1: Big Endian
  73         *        X     1: Reserved
  74         */
  75
  76        /* Byte 1 */
  77        u8 byte1;                       /* reserved */
  78
  79        /* Byte 2 */
  80        u8 byte2;
  81        /* XXXXXXXX
  82         * X            1: Set to 1 (indicating log is in PowerPC format)
  83         *  XXX         3: Reserved
  84         *     XXXX     4: Log format used for bytes 12-2047
  85         */
  86
  87        /* Byte 3 */
  88        u8 byte3;                       /* reserved */
  89        /* Byte 4-11 */
  90        u8 reserved[8];                 /* reserved */
  91        /* Byte 12-15 */
  92        __be32  company_id;             /* Company ID of the company    */
  93                                        /* that defines the format for  */
  94                                        /* the vendor specific log type */
  95        /* Byte 16-end of log */
  96        u8 vendor_log[1];               /* Start of vendor specific log */
  97                                        /* Variable length.             */
  98};
  99
 100/* Vendor specific Platform Event Log Format, Version 6, section header */
 101struct pseries_errorlog {
 102        __be16 id;                      /* 0x00 2-byte ASCII section ID */
 103        __be16 length;                  /* 0x02 Section length in bytes */
 104        u8 version;                     /* 0x04 Section version         */
 105        u8 subtype;                     /* 0x05 Section subtype         */
 106        __be16 creator_component;       /* 0x06 Creator component ID    */
 107        u8 data[];                      /* 0x08 Start of section data   */
 108};
 109
 110/* RTAS pseries hotplug errorlog section */
 111struct pseries_hp_errorlog {
 112        u8      resource;
 113        u8      action;
 114        u8      id_type;
 115        u8      reserved;
 116        union {
 117                __be32  drc_index;
 118                __be32  drc_count;
 119                struct { __be32 count, index; } ic;
 120                char    drc_name[1];
 121        } _drc_u;
 122};
 123
 124#endif /* _ASM_POWERPC_RTAS_TYPES_H */
 125