Skip to content

Commit e049249

Browse files
Ruidong Tianrafaeljw
authored andcommitted
ACPICA: AEST: Add support for the AEST V2 table
ACPICA commit ebb49799c78891cbe370f1264844664a3d8b6f35 AEST V2 was published[1], add V2 support based on AEST V1. [1]: https://developer.arm.com/documentation/den0085/latest/ Link: acpica/acpica@ebb4979 Signed-off-by: Ruidong Tian <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent e1d3f9d commit e049249

File tree

1 file changed

+82
-6
lines changed

1 file changed

+82
-6
lines changed

include/acpi/actbl2.h

Lines changed: 82 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@
7878
*
7979
* AEST - Arm Error Source Table
8080
*
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.
8383
*
8484
******************************************************************************/
8585

@@ -109,7 +109,9 @@ struct acpi_aest_hdr {
109109
#define ACPI_AEST_SMMU_ERROR_NODE 2
110110
#define ACPI_AEST_VENDOR_ERROR_NODE 3
111111
#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 */
113115

114116
/*
115117
* AEST subtables (Error nodes)
@@ -188,6 +190,12 @@ typedef struct acpi_aest_vendor {
188190

189191
} acpi_aest_vendor;
190192

193+
struct acpi_aest_vendor_v2 {
194+
char acpi_hid[8];
195+
u32 acpi_uid;
196+
u8 vendor_specific_data[16];
197+
};
198+
191199
/* 4: Gic Error */
192200

193201
typedef struct acpi_aest_gic {
@@ -204,6 +212,18 @@ typedef struct acpi_aest_gic {
204212
#define ACPI_AEST_GIC_ITS 3
205213
#define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */
206214

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+
207227
/* Node Interface Structure */
208228

209229
typedef struct acpi_aest_node_interface {
@@ -219,11 +239,57 @@ typedef struct acpi_aest_node_interface {
219239

220240
} acpi_aest_node_interface;
221241

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+
222287
/* Values for Type field above */
223288

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 */
227293

228294
/* Node Interrupt Structure */
229295

@@ -237,6 +303,16 @@ typedef struct acpi_aest_node_interrupt {
237303

238304
} acpi_aest_node_interrupt;
239305

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+
240316
/* Values for Type field above */
241317

242318
#define ACPI_AEST_NODE_FAULT_HANDLING 0

0 commit comments

Comments
 (0)