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