Skip to content

Commit e692fa1

Browse files
acpibobrafaeljw
authored andcommitted
ACPICA: iASL: Add support for the AEST table (data compiler)
Includes support in the table compiler and the disassembler. ACPICA commit e75074d84d1207339a048486c2d06ecb935d0092 Link: acpica/acpica@e75074d8 Signed-off-by: Bob Moore <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 7c60610 commit e692fa1

File tree

2 files changed

+171
-0
lines changed

2 files changed

+171
-0
lines changed

include/acpi/actbl1.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
* file. Useful because they make it more difficult to inadvertently type in
2525
* the wrong signature.
2626
*/
27+
#define ACPI_SIG_AEST "AEST" /* Arm Error Source Table */
2728
#define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
2829
#define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
2930
#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */

include/acpi/actbl2.h

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,176 @@
6767
* See http://stackoverflow.com/a/1053662/41661
6868
*/
6969

70+
/*******************************************************************************
71+
*
72+
* AEST - Arm Error Source Table
73+
*
74+
* Conforms to: ACPI for the Armv8 RAS Extensions 1.1 Platform Design Document
75+
* September 2020.
76+
*
77+
******************************************************************************/
78+
79+
struct acpi_table_aest {
80+
struct acpi_table_header header;
81+
void *node_array[];
82+
};
83+
84+
/* Common Subtable header - one per Node Structure (Subtable) */
85+
86+
struct acpi_aest_hdr {
87+
u8 type;
88+
u16 length;
89+
u8 reserved;
90+
u32 node_specific_offset;
91+
u32 node_interface_offset;
92+
u32 node_interrupt_offset;
93+
u32 node_interrupt_count;
94+
u64 timestamp_rate;
95+
u64 reserved1;
96+
u64 error_injection_rate;
97+
};
98+
99+
/* Values for Type above */
100+
101+
#define ACPI_AEST_PROCESSOR_ERROR_NODE 0
102+
#define ACPI_AEST_MEMORY_ERROR_NODE 1
103+
#define ACPI_AEST_SMMU_ERROR_NODE 2
104+
#define ACPI_AEST_VENDOR_ERROR_NODE 3
105+
#define ACPI_AEST_GIC_ERROR_NODE 4
106+
#define ACPI_AEST_NODE_TYPE_RESERVED 5 /* 5 and above are reserved */
107+
108+
/*
109+
* AEST subtables (Error nodes)
110+
*/
111+
112+
/* 0: Processor Error */
113+
114+
typedef struct acpi_aest_processor {
115+
u32 processor_id;
116+
u8 resource_type;
117+
u8 reserved;
118+
u8 flags;
119+
u8 revision;
120+
u64 processor_affinity;
121+
122+
} acpi_aest_processor;
123+
124+
/* Values for resource_type above, related structs below */
125+
126+
#define ACPI_AEST_CACHE_RESOURCE 0
127+
#define ACPI_AEST_TLB_RESOURCE 1
128+
#define ACPI_AEST_GENERIC_RESOURCE 2
129+
#define ACPI_AEST_RESOURCE_RESERVED 3 /* 3 and above are reserved */
130+
131+
/* 0R: Processor Cache Resource Substructure */
132+
133+
typedef struct acpi_aest_processor_cache {
134+
u32 cache_reference;
135+
u32 reserved;
136+
137+
} acpi_aest_processor_cache;
138+
139+
/* Values for cache_type above */
140+
141+
#define ACPI_AEST_CACHE_DATA 0
142+
#define ACPI_AEST_CACHE_INSTRUCTION 1
143+
#define ACPI_AEST_CACHE_UNIFIED 2
144+
#define ACPI_AEST_CACHE_RESERVED 3 /* 3 and above are reserved */
145+
146+
/* 1R: Processor TLB Resource Substructure */
147+
148+
typedef struct acpi_aest_processor_tlb {
149+
u32 tlb_level;
150+
u32 reserved;
151+
152+
} acpi_aest_processor_tlb;
153+
154+
/* 2R: Processor Generic Resource Substructure */
155+
156+
typedef struct acpi_aest_processor_generic {
157+
u8 *resource;
158+
159+
} acpi_aest_processor_generic;
160+
161+
/* 1: Memory Error */
162+
163+
typedef struct acpi_aest_memory {
164+
u32 srat_proximity_domain;
165+
166+
} acpi_aest_memory;
167+
168+
/* 2: Smmu Error */
169+
170+
typedef struct acpi_aest_smmu {
171+
u32 iort_node_reference;
172+
u32 subcomponent_reference;
173+
174+
} acpi_aest_smmu;
175+
176+
/* 3: Vendor Defined */
177+
178+
typedef struct acpi_aest_vendor {
179+
u32 acpi_hid;
180+
u32 acpi_uid;
181+
u8 vendor_specific_data[16];
182+
183+
} acpi_aest_vendor;
184+
185+
/* 4: Gic Error */
186+
187+
typedef struct acpi_aest_gic {
188+
u32 interface_type;
189+
u32 instance_id;
190+
191+
} acpi_aest_gic;
192+
193+
/* Values for interface_type above */
194+
195+
#define ACPI_AEST_GIC_CPU 0
196+
#define ACPI_AEST_GIC_DISTRIBUTOR 1
197+
#define ACPI_AEST_GIC_REDISTRIBUTOR 2
198+
#define ACPI_AEST_GIC_ITS 3
199+
#define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */
200+
201+
/* Node Interface Structure */
202+
203+
typedef struct acpi_aest_node_interface {
204+
u8 type;
205+
u8 reserved[3];
206+
u32 flags;
207+
u64 address;
208+
u32 error_record_index;
209+
u32 error_record_count;
210+
u64 error_record_implemented;
211+
u64 error_status_reporting;
212+
u64 addressing_mode;
213+
214+
} acpi_aest_node_interface;
215+
216+
/* Values for Type field above */
217+
218+
#define ACPI_AEST_NODE_SYSTEM_REGISTER 0
219+
#define ACPI_AEST_NODE_MEMORY_MAPPED 1
220+
#define ACPI_AEST_XFACE_RESERVED 2 /* 2 and above are reserved */
221+
222+
/* Node Interrupt Structure */
223+
224+
typedef struct acpi_aest_node_interrupt {
225+
u8 type;
226+
u8 reserved[2];
227+
u8 flags;
228+
u32 gsiv;
229+
u8 iort_id;
230+
u8 reserved1[3];
231+
232+
} acpi_aest_node_interrupt;
233+
234+
/* Values for Type field above */
235+
236+
#define ACPI_AEST_NODE_FAULT_HANDLING 0
237+
#define ACPI_AEST_NODE_ERROR_RECOVERY 1
238+
#define ACPI_AEST_XRUPT_RESERVED 2 /* 2 and above are reserved */
239+
70240
/*******************************************************************************
71241
*
72242
* BDAT - BIOS Data ACPI Table

0 commit comments

Comments
 (0)