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
193201typedef 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
209229typedef 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