1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  *	linux/include/asm-alpha/err_common.h
4  *
5  *	Copyright (C) 2000 Jeff Wiedemeier (Compaq Computer Corporation)
6  *
7  *	Contains declarations and macros to support Alpha error handling
8  * 	implementations.
9  */
10 
11 #ifndef __ALPHA_ERR_COMMON_H
12 #define __ALPHA_ERR_COMMON_H 1
13 
14 /*
15  * SCB Vector definitions
16  */
17 #define SCB_Q_SYSERR	0x620
18 #define SCB_Q_PROCERR	0x630
19 #define SCB_Q_SYSMCHK	0x660
20 #define SCB_Q_PROCMCHK	0x670
21 #define SCB_Q_SYSEVENT	0x680
22 
23 /*
24  * Disposition definitions for logout frame parser
25  */
26 #define MCHK_DISPOSITION_UNKNOWN_ERROR		0x00
27 #define MCHK_DISPOSITION_REPORT			0x01
28 #define MCHK_DISPOSITION_DISMISS		0x02
29 
30 /*
31  * Error Log definitions
32  */
33 /*
34  * Types
35  */
36 
37 #define EL_CLASS__TERMINATION		(0)
38 #  define EL_TYPE__TERMINATION__TERMINATION		(0)
39 #define EL_CLASS__HEADER		(5)
40 #  define EL_TYPE__HEADER__SYSTEM_ERROR_FRAME		(1)
41 #  define EL_TYPE__HEADER__SYSTEM_EVENT_FRAME		(2)
42 #  define EL_TYPE__HEADER__HALT_FRAME			(3)
43 #  define EL_TYPE__HEADER__LOGOUT_FRAME			(19)
44 #define EL_CLASS__GENERAL_NOTIFICATION	(9)
45 #define EL_CLASS__PCI_ERROR_FRAME	(11)
46 #define EL_CLASS__REGATTA_FAMILY	(12)
47 #  define EL_TYPE__REGATTA__PROCESSOR_ERROR_FRAME	(1)
48 #  define EL_TYPE__REGATTA__SYSTEM_ERROR_FRAME		(2)
49 #  define EL_TYPE__REGATTA__ENVIRONMENTAL_FRAME		(3)
50 #  define EL_TYPE__REGATTA__TITAN_PCHIP0_EXTENDED	(8)
51 #  define EL_TYPE__REGATTA__TITAN_PCHIP1_EXTENDED	(9)
52 #  define EL_TYPE__REGATTA__TITAN_MEMORY_EXTENDED	(10)
53 #  define EL_TYPE__REGATTA__PROCESSOR_DBL_ERROR_HALT	(11)
54 #  define EL_TYPE__REGATTA__SYSTEM_DBL_ERROR_HALT	(12)
55 #define EL_CLASS__PAL                   (14)
56 #  define EL_TYPE__PAL__LOGOUT_FRAME                    (1)
57 #  define EL_TYPE__PAL__EV7_PROCESSOR			(4)
58 #  define EL_TYPE__PAL__EV7_ZBOX			(5)
59 #  define EL_TYPE__PAL__EV7_RBOX			(6)
60 #  define EL_TYPE__PAL__EV7_IO				(7)
61 #  define EL_TYPE__PAL__ENV__AMBIENT_TEMPERATURE	(10)
62 #  define EL_TYPE__PAL__ENV__AIRMOVER_FAN		(11)
63 #  define EL_TYPE__PAL__ENV__VOLTAGE			(12)
64 #  define EL_TYPE__PAL__ENV__INTRUSION			(13)
65 #  define EL_TYPE__PAL__ENV__POWER_SUPPLY		(14)
66 #  define EL_TYPE__PAL__ENV__LAN			(15)
67 #  define EL_TYPE__PAL__ENV__HOT_PLUG			(16)
68 
69 union el_timestamp {
70 	struct {
71 		u8 second;
72 		u8 minute;
73 		u8 hour;
74 		u8 day;
75 		u8 month;
76 		u8 year;
77 	} b;
78 	u64 as_int;
79 };
80 
81 struct el_subpacket {
82 	u16 length;		/* length of header (in bytes)	*/
83 	u16 class;		/* header class and type...   	*/
84 	u16 type;		/* ...determine content     	*/
85 	u16 revision;		/* header revision 		*/
86 	union {
87 		struct {	/* Class 5, Type 1 - System Error	*/
88 			u32 frame_length;
89 			u32 frame_packet_count;
90 		} sys_err;
91 		struct {	/* Class 5, Type 2 - System Event 	*/
92 			union el_timestamp timestamp;
93 			u32 frame_length;
94 			u32 frame_packet_count;
95 		} sys_event;
96 		struct {	/* Class 5, Type 3 - Double Error Halt	*/
97 			u16 halt_code;
98 			u16 reserved;
99 			union el_timestamp timestamp;
100 			u32 frame_length;
101 			u32 frame_packet_count;
102 		} err_halt;
103 		struct {	/* Clasee 5, Type 19 - Logout Frame Header */
104 			u32 frame_length;
105 			u32 frame_flags;
106 			u32 cpu_offset;
107 			u32 system_offset;
108 		} logout_header;
109 		struct {	/* Class 12 - Regatta			*/
110 			u64 cpuid;
111 			u64 data_start[1];
112 		} regatta_frame;
113 		struct {	/* Raw 				        */
114 			u64 data_start[1];
115 		} raw;
116 	} by_type;
117 };
118 
119 #endif /* __ALPHA_ERR_COMMON_H */
120