mce.h (d6e8a150850601277039a548ffcdddd1bfe3e365) | mce.h (cda6618d060b5e8afc93e691d4bcd987f3dd4393) |
---|---|
1/* 2 * Machine check exception header file. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * --- 17 unchanged lines hidden (view full) --- 26 27enum MCE_Version { 28 MCE_V1 = 1, 29}; 30 31enum MCE_Severity { 32 MCE_SEV_NO_ERROR = 0, 33 MCE_SEV_WARNING = 1, | 1/* 2 * Machine check exception header file. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * --- 17 unchanged lines hidden (view full) --- 26 27enum MCE_Version { 28 MCE_V1 = 1, 29}; 30 31enum MCE_Severity { 32 MCE_SEV_NO_ERROR = 0, 33 MCE_SEV_WARNING = 1, |
34 MCE_SEV_ERROR_SYNC = 2, | 34 MCE_SEV_SEVERE = 2, |
35 MCE_SEV_FATAL = 3, 36}; 37 38enum MCE_Disposition { 39 MCE_DISPOSITION_RECOVERED = 0, 40 MCE_DISPOSITION_NOT_RECOVERED = 1, 41}; 42 --- 62 unchanged lines hidden (view full) --- 105 MCE_LINK_ERROR_IFETCH_TIMEOUT = 1, 106 MCE_LINK_ERROR_PAGE_TABLE_WALK_IFETCH_TIMEOUT = 2, 107 MCE_LINK_ERROR_LOAD_TIMEOUT = 3, 108 MCE_LINK_ERROR_STORE_TIMEOUT = 4, 109 MCE_LINK_ERROR_PAGE_TABLE_WALK_LOAD_STORE_TIMEOUT = 5, 110}; 111 112struct machine_check_event { | 35 MCE_SEV_FATAL = 3, 36}; 37 38enum MCE_Disposition { 39 MCE_DISPOSITION_RECOVERED = 0, 40 MCE_DISPOSITION_NOT_RECOVERED = 1, 41}; 42 --- 62 unchanged lines hidden (view full) --- 105 MCE_LINK_ERROR_IFETCH_TIMEOUT = 1, 106 MCE_LINK_ERROR_PAGE_TABLE_WALK_IFETCH_TIMEOUT = 2, 107 MCE_LINK_ERROR_LOAD_TIMEOUT = 3, 108 MCE_LINK_ERROR_STORE_TIMEOUT = 4, 109 MCE_LINK_ERROR_PAGE_TABLE_WALK_LOAD_STORE_TIMEOUT = 5, 110}; 111 112struct machine_check_event { |
113 enum MCE_Version version:8; /* 0x00 */ 114 uint8_t in_use; /* 0x01 */ 115 enum MCE_Severity severity:8; /* 0x02 */ 116 enum MCE_Initiator initiator:8; /* 0x03 */ 117 enum MCE_ErrorType error_type:8; /* 0x04 */ 118 enum MCE_Disposition disposition:8; /* 0x05 */ 119 uint16_t cpu; /* 0x06 */ 120 uint64_t gpr3; /* 0x08 */ 121 uint64_t srr0; /* 0x10 */ 122 uint64_t srr1; /* 0x18 */ 123 union { /* 0x20 */ | 113 enum MCE_Version version:8; 114 u8 in_use; 115 enum MCE_Severity severity:8; 116 enum MCE_Initiator initiator:8; 117 enum MCE_ErrorType error_type:8; 118 enum MCE_Disposition disposition:8; 119 bool sync_error; 120 u16 cpu; 121 u64 gpr3; 122 u64 srr0; 123 u64 srr1; 124 union { |
124 struct { 125 enum MCE_UeErrorType ue_error_type:8; | 125 struct { 126 enum MCE_UeErrorType ue_error_type:8; |
126 uint8_t effective_address_provided; 127 uint8_t physical_address_provided; 128 uint8_t reserved_1[5]; 129 uint64_t effective_address; 130 uint64_t physical_address; 131 uint8_t reserved_2[8]; | 127 u8 effective_address_provided; 128 u8 physical_address_provided; 129 u8 reserved_1[5]; 130 u64 effective_address; 131 u64 physical_address; 132 u8 reserved_2[8]; |
132 } ue_error; 133 134 struct { 135 enum MCE_SlbErrorType slb_error_type:8; | 133 } ue_error; 134 135 struct { 136 enum MCE_SlbErrorType slb_error_type:8; |
136 uint8_t effective_address_provided; 137 uint8_t reserved_1[6]; 138 uint64_t effective_address; 139 uint8_t reserved_2[16]; | 137 u8 effective_address_provided; 138 u8 reserved_1[6]; 139 u64 effective_address; 140 u8 reserved_2[16]; |
140 } slb_error; 141 142 struct { 143 enum MCE_EratErrorType erat_error_type:8; | 141 } slb_error; 142 143 struct { 144 enum MCE_EratErrorType erat_error_type:8; |
144 uint8_t effective_address_provided; 145 uint8_t reserved_1[6]; 146 uint64_t effective_address; 147 uint8_t reserved_2[16]; | 145 u8 effective_address_provided; 146 u8 reserved_1[6]; 147 u64 effective_address; 148 u8 reserved_2[16]; |
148 } erat_error; 149 150 struct { 151 enum MCE_TlbErrorType tlb_error_type:8; | 149 } erat_error; 150 151 struct { 152 enum MCE_TlbErrorType tlb_error_type:8; |
152 uint8_t effective_address_provided; 153 uint8_t reserved_1[6]; 154 uint64_t effective_address; 155 uint8_t reserved_2[16]; | 153 u8 effective_address_provided; 154 u8 reserved_1[6]; 155 u64 effective_address; 156 u8 reserved_2[16]; |
156 } tlb_error; 157 158 struct { 159 enum MCE_UserErrorType user_error_type:8; | 157 } tlb_error; 158 159 struct { 160 enum MCE_UserErrorType user_error_type:8; |
160 uint8_t effective_address_provided; 161 uint8_t reserved_1[6]; 162 uint64_t effective_address; 163 uint8_t reserved_2[16]; | 161 u8 effective_address_provided; 162 u8 reserved_1[6]; 163 u64 effective_address; 164 u8 reserved_2[16]; |
164 } user_error; 165 166 struct { 167 enum MCE_RaErrorType ra_error_type:8; | 165 } user_error; 166 167 struct { 168 enum MCE_RaErrorType ra_error_type:8; |
168 uint8_t effective_address_provided; 169 uint8_t reserved_1[6]; 170 uint64_t effective_address; 171 uint8_t reserved_2[16]; | 169 u8 effective_address_provided; 170 u8 reserved_1[6]; 171 u64 effective_address; 172 u8 reserved_2[16]; |
172 } ra_error; 173 174 struct { 175 enum MCE_LinkErrorType link_error_type:8; | 173 } ra_error; 174 175 struct { 176 enum MCE_LinkErrorType link_error_type:8; |
176 uint8_t effective_address_provided; 177 uint8_t reserved_1[6]; 178 uint64_t effective_address; 179 uint8_t reserved_2[16]; | 177 u8 effective_address_provided; 178 u8 reserved_1[6]; 179 u64 effective_address; 180 u8 reserved_2[16]; |
180 } link_error; 181 } u; 182}; 183 184struct mce_error_info { 185 enum MCE_ErrorType error_type:8; 186 union { 187 enum MCE_UeErrorType ue_error_type:8; 188 enum MCE_SlbErrorType slb_error_type:8; 189 enum MCE_EratErrorType erat_error_type:8; 190 enum MCE_TlbErrorType tlb_error_type:8; 191 enum MCE_UserErrorType user_error_type:8; 192 enum MCE_RaErrorType ra_error_type:8; 193 enum MCE_LinkErrorType link_error_type:8; 194 } u; 195 enum MCE_Severity severity:8; 196 enum MCE_Initiator initiator:8; | 181 } link_error; 182 } u; 183}; 184 185struct mce_error_info { 186 enum MCE_ErrorType error_type:8; 187 union { 188 enum MCE_UeErrorType ue_error_type:8; 189 enum MCE_SlbErrorType slb_error_type:8; 190 enum MCE_EratErrorType erat_error_type:8; 191 enum MCE_TlbErrorType tlb_error_type:8; 192 enum MCE_UserErrorType user_error_type:8; 193 enum MCE_RaErrorType ra_error_type:8; 194 enum MCE_LinkErrorType link_error_type:8; 195 } u; 196 enum MCE_Severity severity:8; 197 enum MCE_Initiator initiator:8; |
198 bool sync_error; |
|
197}; 198 199#define MAX_MC_EVT 100 200 201/* Release flags for get_mce_event() */ 202#define MCE_EVENT_RELEASE true 203#define MCE_EVENT_DONTRELEASE false 204 --- 13 unchanged lines hidden --- | 199}; 200 201#define MAX_MC_EVT 100 202 203/* Release flags for get_mce_event() */ 204#define MCE_EVENT_RELEASE true 205#define MCE_EVENT_DONTRELEASE false 206 --- 13 unchanged lines hidden --- |