ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / arch / ppc / platforms / error_log.h
1 #ifndef __ERROR_LOG_H__
2 #define __ERROR_LOG_H__
3
4 #define VERBOSE_ERRORS          1 /* Maybe I enlarge the kernel too much */
5 #undef VERBOSE_ERRORS
6
7 /* Event classes */
8 /* XXX: Endianess correct? NOW*/
9 #define INTERNAL_ERROR          0x80000000 /* set bit 0 */
10 #define EPOW_WARNING            0x40000000 /* set bit 1 */
11 #define POWERMGM_EVENTS         0x20000000 /* set bit 2 */
12
13 /* event-scan returns */
14 #define SEVERITY_FATAL          0x5
15 #define SEVERITY_ERROR          0x4
16 #define SEVERITY_ERROR_SYNC     0x3
17 #define SEVERITY_WARNING        0x2
18 #define SEVERITY_EVENT          0x1
19 #define SEVERITY_NO_ERROR       0x0
20 #define DISP_FULLY_RECOVERED    0x0
21 #define DISP_LIMITED_RECOVERY   0x1
22 #define DISP_NOT_RECOVERED      0x2
23 #define PART_PRESENT            0x0
24 #define PART_NOT_PRESENT        0x1
25 #define INITIATOR_UNKNOWN       0x0
26 #define INITIATOR_CPU           0x1
27 #define INITIATOR_PCI           0x2
28 #define INITIATOR_ISA           0x3
29 #define INITIATOR_MEMORY        0x4
30 #define INITIATOR_POWERMGM      0x5
31 #define TARGET_UNKNOWN          0x0
32 #define TARGET_CPU              0x1
33 #define TARGET_PCI              0x2
34 #define TARGET_ISA              0x3
35 #define TARGET_MEMORY           0x4
36 #define TARGET_POWERMGM         0x5
37 #define TYPE_RETRY              0x01
38 #define TYPE_TCE_ERR            0x02
39 #define TYPE_INTERN_DEV_FAIL    0x03
40 #define TYPE_TIMEOUT            0x04
41 #define TYPE_DATA_PARITY        0x05
42 #define TYPE_ADDR_PARITY        0x06
43 #define TYPE_CACHE_PARITY       0x07
44 #define TYPE_ADDR_INVALID       0x08
45 #define TYPE_ECC_UNCORR         0x09
46 #define TYPE_ECC_CORR           0x0a
47 #define TYPE_EPOW               0x40
48 /* I don't add PowerMGM events right now, this is a different topic */
49 #define TYPE_PMGM_POWER_SW_ON   0x60
50 #define TYPE_PMGM_POWER_SW_OFF  0x61
51 #define TYPE_PMGM_LID_OPEN      0x62
52 #define TYPE_PMGM_LID_CLOSE     0x63
53 #define TYPE_PMGM_SLEEP_BTN     0x64
54 #define TYPE_PMGM_WAKE_BTN      0x65
55 #define TYPE_PMGM_BATTERY_WARN  0x66
56 #define TYPE_PMGM_BATTERY_CRIT  0x67
57 #define TYPE_PMGM_SWITCH_TO_BAT 0x68
58 #define TYPE_PMGM_SWITCH_TO_AC  0x69
59 #define TYPE_PMGM_KBD_OR_MOUSE  0x6a
60 #define TYPE_PMGM_ENCLOS_OPEN   0x6b
61 #define TYPE_PMGM_ENCLOS_CLOSED 0x6c
62 #define TYPE_PMGM_RING_INDICATE 0x6d
63 #define TYPE_PMGM_LAN_ATTENTION 0x6e
64 #define TYPE_PMGM_TIME_ALARM    0x6f
65 #define TYPE_PMGM_CONFIG_CHANGE 0x70
66 #define TYPE_PMGM_SERVICE_PROC  0x71
67
68 typedef struct _rtas_error_log {
69         unsigned long version:8;                /* Architectural version */
70         unsigned long severity:3;               /* Severity level of error */
71         unsigned long disposition:2;            /* Degree of recovery */
72         unsigned long extended:1;               /* extended log present? */
73         unsigned long /* reserved */ :2;        /* Reserved for future use */
74         unsigned long initiator:4;              /* Initiator of event */
75         unsigned long target:4;                 /* Target of failed operation */
76         unsigned long type:8;                   /* General event or error*/
77         unsigned long extended_log_length:32;   /* length in bytes */
78 } rtas_error_log;
79
80 /* ****************************************************************** */
81 #define ppc_rtas_errorlog_check_severity(x) \
82         (_errlog_severity[x.severity])
83 #define ppc_rtas_errorlog_check_target(x) \
84         (_errlog_target[x.target])
85 #define ppc_rtas_errorlog_check_initiator(x) \
86         (_errlog_initiator[x.initiator])
87 #define ppc_rtas_errorlog_check_extended(x) \
88         (_errlog_extended[x.extended])
89 #define ppc_rtas_errorlog_disect_extended(x) \
90         do { /* implement me */ } while(0)
91 extern const char * ppc_rtas_errorlog_check_type (rtas_error_log error_log);
92 extern int ppc_rtas_errorlog_scan(void);
93
94
95 #endif /* __ERROR_LOG_H__ */