78
78
*
79
79
* AEST - Arm Error Source Table
80
80
*
81
- * Conforms to: ACPI for the Armv8 RAS Extensions 1.1 Platform Design Document
82
- * September 2020 .
81
+ * Conforms to: ACPI for the Armv8 RAS Extensions 1.1(Sep 2020) and
82
+ * 2.0(May 2023) Platform Design Document .
83
83
*
84
84
******************************************************************************/
85
85
@@ -109,7 +109,9 @@ struct acpi_aest_hdr {
109
109
#define ACPI_AEST_SMMU_ERROR_NODE 2
110
110
#define ACPI_AEST_VENDOR_ERROR_NODE 3
111
111
#define ACPI_AEST_GIC_ERROR_NODE 4
112
- #define ACPI_AEST_NODE_TYPE_RESERVED 5 /* 5 and above are reserved */
112
+ #define ACPI_AEST_PCIE_ERROR_NODE 5
113
+ #define ACPI_AEST_PROXY_ERROR_NODE 6
114
+ #define ACPI_AEST_NODE_TYPE_RESERVED 7 /* 7 and above are reserved */
113
115
114
116
/*
115
117
* AEST subtables (Error nodes)
@@ -188,6 +190,12 @@ typedef struct acpi_aest_vendor {
188
190
189
191
} acpi_aest_vendor ;
190
192
193
+ struct acpi_aest_vendor_v2 {
194
+ char acpi_hid [8 ];
195
+ u32 acpi_uid ;
196
+ u8 vendor_specific_data [16 ];
197
+ };
198
+
191
199
/* 4: Gic Error */
192
200
193
201
typedef struct acpi_aest_gic {
@@ -204,6 +212,18 @@ typedef struct acpi_aest_gic {
204
212
#define ACPI_AEST_GIC_ITS 3
205
213
#define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */
206
214
215
+ /* 5: PCIe Error */
216
+
217
+ struct acpi_aest_pcie {
218
+ u32 iort_node_reference ;
219
+ };
220
+
221
+ /* 6: Proxy Error */
222
+
223
+ struct acpi_aest_proxy {
224
+ u64 node_address ;
225
+ };
226
+
207
227
/* Node Interface Structure */
208
228
209
229
typedef struct acpi_aest_node_interface {
@@ -219,11 +239,57 @@ typedef struct acpi_aest_node_interface {
219
239
220
240
} acpi_aest_node_interface ;
221
241
242
+ /* Node Interface Structure V2 */
243
+
244
+ struct acpi_aest_node_interface_header {
245
+ u8 type ;
246
+ u8 group_format ;
247
+ u8 reserved [2 ];
248
+ u32 flags ;
249
+ u64 address ;
250
+ u32 error_record_index ;
251
+ u32 error_record_count ;
252
+ };
253
+
254
+ #define ACPI_AEST_NODE_GROUP_FORMAT_4K 0
255
+ #define ACPI_AEST_NODE_GROUP_FORMAT_16K 1
256
+ #define ACPI_AEST_NODE_GROUP_FORMAT_64K 2
257
+
258
+ struct acpi_aest_node_interface_common {
259
+ u32 error_node_device ;
260
+ u32 processor_affinity ;
261
+ u64 error_group_register_base ;
262
+ u64 fault_inject_register_base ;
263
+ u64 interrupt_config_register_base ;
264
+ };
265
+
266
+ struct acpi_aest_node_interface_4k {
267
+ u64 error_record_implemented ;
268
+ u64 error_status_reporting ;
269
+ u64 addressing_mode ;
270
+ struct acpi_aest_node_interface_common common ;
271
+ };
272
+
273
+ struct acpi_aest_node_interface_16k {
274
+ u64 error_record_implemented [4 ];
275
+ u64 error_status_reporting [4 ];
276
+ u64 addressing_mode [4 ];
277
+ struct acpi_aest_node_interface_common common ;
278
+ };
279
+
280
+ struct acpi_aest_node_interface_64k {
281
+ u64 error_record_implemented [14 ];
282
+ u64 error_status_reporting [14 ];
283
+ u64 addressing_mode [14 ];
284
+ struct acpi_aest_node_interface_common common ;
285
+ };
286
+
222
287
/* Values for Type field above */
223
288
224
- #define ACPI_AEST_NODE_SYSTEM_REGISTER 0
225
- #define ACPI_AEST_NODE_MEMORY_MAPPED 1
226
- #define ACPI_AEST_XFACE_RESERVED 2 /* 2 and above are reserved */
289
+ #define ACPI_AEST_NODE_SYSTEM_REGISTER 0
290
+ #define ACPI_AEST_NODE_MEMORY_MAPPED 1
291
+ #define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED 2
292
+ #define ACPI_AEST_XFACE_RESERVED 3 /* 2 and above are reserved */
227
293
228
294
/* Node Interrupt Structure */
229
295
@@ -237,6 +303,16 @@ typedef struct acpi_aest_node_interrupt {
237
303
238
304
} acpi_aest_node_interrupt ;
239
305
306
+ /* Node Interrupt Structure V2 */
307
+
308
+ struct acpi_aest_node_interrupt_v2 {
309
+ u8 type ;
310
+ u8 reserved [2 ];
311
+ u8 flags ;
312
+ u32 gsiv ;
313
+ u8 reserved1 [4 ];
314
+ };
315
+
240
316
/* Values for Type field above */
241
317
242
318
#define ACPI_AEST_NODE_FAULT_HANDLING 0
0 commit comments