]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/Acpi40.h
MdePkg: Clean up source files
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi40.h
CommitLineData
9095d37b 1/** @file\r
22c5a7af
JY
2 ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010\r
3\r
9095d37b
LG
4 Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
22c5a7af 9\r
9095d37b
LG
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
22c5a7af
JY
12**/\r
13\r
14#ifndef _ACPI_4_0_H_\r
15#define _ACPI_4_0_H_\r
16\r
17#include <IndustryStandard/Acpi30.h>\r
18\r
19//\r
20// Ensure proper structure formats\r
21//\r
22#pragma pack(1)\r
23\r
24///\r
25/// ACPI 4.0 Generic Address Space definition\r
26///\r
27typedef struct {\r
28 UINT8 AddressSpaceId;\r
29 UINT8 RegisterBitWidth;\r
30 UINT8 RegisterBitOffset;\r
31 UINT8 AccessSize;\r
32 UINT64 Address;\r
33} EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE;\r
34\r
35//\r
36// Generic Address Space Address IDs\r
37//\r
38#define EFI_ACPI_4_0_SYSTEM_MEMORY 0\r
39#define EFI_ACPI_4_0_SYSTEM_IO 1\r
40#define EFI_ACPI_4_0_PCI_CONFIGURATION_SPACE 2\r
41#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER 3\r
42#define EFI_ACPI_4_0_SMBUS 4\r
43#define EFI_ACPI_4_0_FUNCTIONAL_FIXED_HARDWARE 0x7F\r
44\r
45//\r
46// Generic Address Space Access Sizes\r
47//\r
48#define EFI_ACPI_4_0_UNDEFINED 0\r
49#define EFI_ACPI_4_0_BYTE 1\r
50#define EFI_ACPI_4_0_WORD 2\r
51#define EFI_ACPI_4_0_DWORD 3\r
52#define EFI_ACPI_4_0_QWORD 4\r
53\r
54//\r
55// ACPI 4.0 table structures\r
56//\r
57\r
58///\r
59/// Root System Description Pointer Structure\r
60///\r
61typedef struct {\r
62 UINT64 Signature;\r
63 UINT8 Checksum;\r
64 UINT8 OemId[6];\r
65 UINT8 Revision;\r
66 UINT32 RsdtAddress;\r
67 UINT32 Length;\r
68 UINT64 XsdtAddress;\r
69 UINT8 ExtendedChecksum;\r
70 UINT8 Reserved[3];\r
71} EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER;\r
72\r
73///\r
74/// RSD_PTR Revision (as defined in ACPI 4.0b spec.)\r
75///\r
76#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 4.0a) says current value is 2\r
77\r
78///\r
79/// Common table header, this prefaces all ACPI tables, including FACS, but\r
80/// excluding the RSD PTR structure\r
81///\r
82typedef struct {\r
83 UINT32 Signature;\r
84 UINT32 Length;\r
85} EFI_ACPI_4_0_COMMON_HEADER;\r
86\r
87//\r
88// Root System Description Table\r
9095d37b 89// No definition needed as it is a common description table header, the same with\r
22c5a7af
JY
90// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.\r
91//\r
92\r
93///\r
94/// RSDT Revision (as defined in ACPI 4.0 spec.)\r
95///\r
96#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
97\r
98//\r
99// Extended System Description Table\r
9095d37b 100// No definition needed as it is a common description table header, the same with\r
22c5a7af
JY
101// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.\r
102//\r
103\r
104///\r
105/// XSDT Revision (as defined in ACPI 4.0 spec.)\r
106///\r
107#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01\r
108\r
109///\r
110/// Fixed ACPI Description Table Structure (FADT)\r
111///\r
112typedef struct {\r
113 EFI_ACPI_DESCRIPTION_HEADER Header;\r
114 UINT32 FirmwareCtrl;\r
115 UINT32 Dsdt;\r
116 UINT8 Reserved0;\r
117 UINT8 PreferredPmProfile;\r
118 UINT16 SciInt;\r
119 UINT32 SmiCmd;\r
120 UINT8 AcpiEnable;\r
121 UINT8 AcpiDisable;\r
122 UINT8 S4BiosReq;\r
123 UINT8 PstateCnt;\r
124 UINT32 Pm1aEvtBlk;\r
125 UINT32 Pm1bEvtBlk;\r
126 UINT32 Pm1aCntBlk;\r
127 UINT32 Pm1bCntBlk;\r
128 UINT32 Pm2CntBlk;\r
129 UINT32 PmTmrBlk;\r
130 UINT32 Gpe0Blk;\r
131 UINT32 Gpe1Blk;\r
132 UINT8 Pm1EvtLen;\r
133 UINT8 Pm1CntLen;\r
134 UINT8 Pm2CntLen;\r
135 UINT8 PmTmrLen;\r
136 UINT8 Gpe0BlkLen;\r
137 UINT8 Gpe1BlkLen;\r
138 UINT8 Gpe1Base;\r
139 UINT8 CstCnt;\r
140 UINT16 PLvl2Lat;\r
141 UINT16 PLvl3Lat;\r
142 UINT16 FlushSize;\r
143 UINT16 FlushStride;\r
144 UINT8 DutyOffset;\r
145 UINT8 DutyWidth;\r
146 UINT8 DayAlrm;\r
147 UINT8 MonAlrm;\r
148 UINT8 Century;\r
149 UINT16 IaPcBootArch;\r
150 UINT8 Reserved1;\r
151 UINT32 Flags;\r
152 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ResetReg;\r
153 UINT8 ResetValue;\r
154 UINT8 Reserved2[3];\r
155 UINT64 XFirmwareCtrl;\r
156 UINT64 XDsdt;\r
157 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;\r
158 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;\r
159 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;\r
160 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;\r
161 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;\r
162 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;\r
163 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;\r
164 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;\r
165} EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE;\r
166\r
167///\r
168/// FADT Version (as defined in ACPI 4.0 spec.)\r
169///\r
170#define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04\r
171\r
172//\r
173// Fixed ACPI Description Table Preferred Power Management Profile\r
174//\r
175#define EFI_ACPI_4_0_PM_PROFILE_UNSPECIFIED 0\r
176#define EFI_ACPI_4_0_PM_PROFILE_DESKTOP 1\r
177#define EFI_ACPI_4_0_PM_PROFILE_MOBILE 2\r
178#define EFI_ACPI_4_0_PM_PROFILE_WORKSTATION 3\r
179#define EFI_ACPI_4_0_PM_PROFILE_ENTERPRISE_SERVER 4\r
180#define EFI_ACPI_4_0_PM_PROFILE_SOHO_SERVER 5\r
181#define EFI_ACPI_4_0_PM_PROFILE_APPLIANCE_PC 6\r
182#define EFI_ACPI_4_0_PM_PROFILE_PERFORMANCE_SERVER 7\r
183\r
184//\r
185// Fixed ACPI Description Table Boot Architecture Flags\r
186// All other bits are reserved and must be set to 0.\r
187//\r
188#define EFI_ACPI_4_0_LEGACY_DEVICES BIT0\r
189#define EFI_ACPI_4_0_8042 BIT1\r
190#define EFI_ACPI_4_0_VGA_NOT_PRESENT BIT2\r
191#define EFI_ACPI_4_0_MSI_NOT_SUPPORTED BIT3\r
192#define EFI_ACPI_4_0_PCIE_ASPM_CONTROLS BIT4\r
193\r
194//\r
195// Fixed ACPI Description Table Fixed Feature Flags\r
196// All other bits are reserved and must be set to 0.\r
197//\r
198#define EFI_ACPI_4_0_WBINVD BIT0\r
199#define EFI_ACPI_4_0_WBINVD_FLUSH BIT1\r
200#define EFI_ACPI_4_0_PROC_C1 BIT2\r
201#define EFI_ACPI_4_0_P_LVL2_UP BIT3\r
202#define EFI_ACPI_4_0_PWR_BUTTON BIT4\r
203#define EFI_ACPI_4_0_SLP_BUTTON BIT5\r
204#define EFI_ACPI_4_0_FIX_RTC BIT6\r
205#define EFI_ACPI_4_0_RTC_S4 BIT7\r
206#define EFI_ACPI_4_0_TMR_VAL_EXT BIT8\r
207#define EFI_ACPI_4_0_DCK_CAP BIT9\r
208#define EFI_ACPI_4_0_RESET_REG_SUP BIT10\r
209#define EFI_ACPI_4_0_SEALED_CASE BIT11\r
210#define EFI_ACPI_4_0_HEADLESS BIT12\r
211#define EFI_ACPI_4_0_CPU_SW_SLP BIT13\r
212#define EFI_ACPI_4_0_PCI_EXP_WAK BIT14\r
213#define EFI_ACPI_4_0_USE_PLATFORM_CLOCK BIT15\r
214#define EFI_ACPI_4_0_S4_RTC_STS_VALID BIT16\r
215#define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE BIT17\r
216#define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL BIT18\r
217#define EFI_ACPI_4_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19\r
218\r
219///\r
220/// Firmware ACPI Control Structure\r
221///\r
222typedef struct {\r
223 UINT32 Signature;\r
224 UINT32 Length;\r
225 UINT32 HardwareSignature;\r
226 UINT32 FirmwareWakingVector;\r
227 UINT32 GlobalLock;\r
228 UINT32 Flags;\r
229 UINT64 XFirmwareWakingVector;\r
230 UINT8 Version;\r
231 UINT8 Reserved0[3];\r
232 UINT32 OspmFlags;\r
233 UINT8 Reserved1[24];\r
234} EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;\r
235\r
236///\r
237/// FACS Version (as defined in ACPI 4.0 spec.)\r
238///\r
239#define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02\r
240\r
241///\r
242/// Firmware Control Structure Feature Flags\r
243/// All other bits are reserved and must be set to 0.\r
244///\r
245#define EFI_ACPI_4_0_S4BIOS_F BIT0\r
246#define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F BIT1\r
247\r
248///\r
249/// OSPM Enabled Firmware Control Structure Flags\r
250/// All other bits are reserved and must be set to 0.\r
251///\r
252#define EFI_ACPI_4_0_OSPM_64BIT_WAKE__F BIT0\r
253\r
254//\r
255// Differentiated System Description Table,\r
256// Secondary System Description Table\r
257// and Persistent System Description Table,\r
258// no definition needed as they are common description table header, the same with\r
259// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.\r
260//\r
261#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02\r
262#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02\r
263\r
264///\r
265/// Multiple APIC Description Table header definition. The rest of the table\r
266/// must be defined in a platform specific manner.\r
267///\r
268typedef struct {\r
269 EFI_ACPI_DESCRIPTION_HEADER Header;\r
270 UINT32 LocalApicAddress;\r
271 UINT32 Flags;\r
272} EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;\r
273\r
274///\r
275/// MADT Revision (as defined in ACPI 4.0 spec.)\r
276///\r
277#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03\r
278\r
279///\r
280/// Multiple APIC Flags\r
281/// All other bits are reserved and must be set to 0.\r
282///\r
283#define EFI_ACPI_4_0_PCAT_COMPAT BIT0\r
284\r
285//\r
286// Multiple APIC Description Table APIC structure types\r
287// All other values between 0x0B an 0xFF are reserved and\r
288// will be ignored by OSPM.\r
289//\r
290#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC 0x00\r
291#define EFI_ACPI_4_0_IO_APIC 0x01\r
292#define EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE 0x02\r
293#define EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03\r
294#define EFI_ACPI_4_0_LOCAL_APIC_NMI 0x04\r
295#define EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05\r
296#define EFI_ACPI_4_0_IO_SAPIC 0x06\r
297#define EFI_ACPI_4_0_LOCAL_SAPIC 0x07\r
298#define EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES 0x08\r
299#define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC 0x09\r
300#define EFI_ACPI_4_0_LOCAL_X2APIC_NMI 0x0A\r
301\r
302//\r
303// APIC Structure Definitions\r
304//\r
305\r
306///\r
307/// Processor Local APIC Structure Definition\r
308///\r
309typedef struct {\r
310 UINT8 Type;\r
311 UINT8 Length;\r
312 UINT8 AcpiProcessorId;\r
313 UINT8 ApicId;\r
314 UINT32 Flags;\r
315} EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_STRUCTURE;\r
316\r
317///\r
318/// Local APIC Flags. All other bits are reserved and must be 0.\r
319///\r
320#define EFI_ACPI_4_0_LOCAL_APIC_ENABLED BIT0\r
321\r
322///\r
323/// IO APIC Structure\r
324///\r
325typedef struct {\r
326 UINT8 Type;\r
327 UINT8 Length;\r
328 UINT8 IoApicId;\r
329 UINT8 Reserved;\r
330 UINT32 IoApicAddress;\r
331 UINT32 GlobalSystemInterruptBase;\r
332} EFI_ACPI_4_0_IO_APIC_STRUCTURE;\r
333\r
334///\r
335/// Interrupt Source Override Structure\r
336///\r
337typedef struct {\r
338 UINT8 Type;\r
339 UINT8 Length;\r
340 UINT8 Bus;\r
341 UINT8 Source;\r
342 UINT32 GlobalSystemInterrupt;\r
343 UINT16 Flags;\r
344} EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;\r
345\r
346///\r
347/// Platform Interrupt Sources Structure Definition\r
348///\r
349typedef struct {\r
350 UINT8 Type;\r
351 UINT8 Length;\r
352 UINT16 Flags;\r
353 UINT8 InterruptType;\r
354 UINT8 ProcessorId;\r
355 UINT8 ProcessorEid;\r
356 UINT8 IoSapicVector;\r
357 UINT32 GlobalSystemInterrupt;\r
358 UINT32 PlatformInterruptSourceFlags;\r
359 UINT8 CpeiProcessorOverride;\r
360 UINT8 Reserved[31];\r
361} EFI_ACPI_4_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;\r
362\r
363//\r
364// MPS INTI flags.\r
365// All other bits are reserved and must be set to 0.\r
366//\r
367#define EFI_ACPI_4_0_POLARITY (3 << 0)\r
368#define EFI_ACPI_4_0_TRIGGER_MODE (3 << 2)\r
369\r
370///\r
371/// Non-Maskable Interrupt Source Structure\r
372///\r
373typedef struct {\r
374 UINT8 Type;\r
375 UINT8 Length;\r
376 UINT16 Flags;\r
377 UINT32 GlobalSystemInterrupt;\r
378} EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;\r
379\r
380///\r
381/// Local APIC NMI Structure\r
382///\r
383typedef struct {\r
384 UINT8 Type;\r
385 UINT8 Length;\r
386 UINT8 AcpiProcessorId;\r
387 UINT16 Flags;\r
388 UINT8 LocalApicLint;\r
389} EFI_ACPI_4_0_LOCAL_APIC_NMI_STRUCTURE;\r
390\r
391///\r
392/// Local APIC Address Override Structure\r
393///\r
394typedef struct {\r
395 UINT8 Type;\r
396 UINT8 Length;\r
397 UINT16 Reserved;\r
398 UINT64 LocalApicAddress;\r
399} EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;\r
400\r
401///\r
402/// IO SAPIC Structure\r
403///\r
404typedef struct {\r
405 UINT8 Type;\r
406 UINT8 Length;\r
407 UINT8 IoApicId;\r
408 UINT8 Reserved;\r
409 UINT32 GlobalSystemInterruptBase;\r
410 UINT64 IoSapicAddress;\r
411} EFI_ACPI_4_0_IO_SAPIC_STRUCTURE;\r
412\r
413///\r
414/// Local SAPIC Structure\r
415/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String\r
416///\r
417typedef struct {\r
418 UINT8 Type;\r
419 UINT8 Length;\r
420 UINT8 AcpiProcessorId;\r
421 UINT8 LocalSapicId;\r
422 UINT8 LocalSapicEid;\r
423 UINT8 Reserved[3];\r
424 UINT32 Flags;\r
425 UINT32 ACPIProcessorUIDValue;\r
426} EFI_ACPI_4_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;\r
427\r
428///\r
429/// Platform Interrupt Sources Structure\r
430///\r
431typedef struct {\r
432 UINT8 Type;\r
433 UINT8 Length;\r
434 UINT16 Flags;\r
435 UINT8 InterruptType;\r
436 UINT8 ProcessorId;\r
437 UINT8 ProcessorEid;\r
438 UINT8 IoSapicVector;\r
439 UINT32 GlobalSystemInterrupt;\r
440 UINT32 PlatformInterruptSourceFlags;\r
441} EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;\r
442\r
443///\r
444/// Platform Interrupt Source Flags.\r
445/// All other bits are reserved and must be set to 0.\r
446///\r
447#define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE BIT0\r
448\r
449///\r
450/// Processor Local x2APIC Structure Definition\r
451///\r
452typedef struct {\r
453 UINT8 Type;\r
454 UINT8 Length;\r
455 UINT8 Reserved[2];\r
456 UINT32 X2ApicId;\r
457 UINT32 Flags;\r
458 UINT32 AcpiProcessorUid;\r
459} EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;\r
460\r
461///\r
462/// Local x2APIC NMI Structure\r
463///\r
464typedef struct {\r
465 UINT8 Type;\r
466 UINT8 Length;\r
467 UINT16 Flags;\r
468 UINT32 AcpiProcessorUid;\r
469 UINT8 LocalX2ApicLint;\r
470 UINT8 Reserved[3];\r
471} EFI_ACPI_4_0_LOCAL_X2APIC_NMI_STRUCTURE;\r
472\r
473///\r
474/// Smart Battery Description Table (SBST)\r
475///\r
476typedef struct {\r
477 EFI_ACPI_DESCRIPTION_HEADER Header;\r
478 UINT32 WarningEnergyLevel;\r
479 UINT32 LowEnergyLevel;\r
480 UINT32 CriticalEnergyLevel;\r
481} EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE;\r
482\r
483///\r
484/// SBST Version (as defined in ACPI 4.0 spec.)\r
485///\r
486#define EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01\r
487\r
488///\r
489/// Embedded Controller Boot Resources Table (ECDT)\r
490/// The table is followed by a null terminated ASCII string that contains\r
491/// a fully qualified reference to the name space object.\r
492///\r
493typedef struct {\r
494 EFI_ACPI_DESCRIPTION_HEADER Header;\r
495 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcControl;\r
496 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcData;\r
497 UINT32 Uid;\r
498 UINT8 GpeBit;\r
499} EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;\r
500\r
501///\r
502/// ECDT Version (as defined in ACPI 4.0 spec.)\r
503///\r
504#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01\r
505\r
506///\r
507/// System Resource Affinity Table (SRAT. The rest of the table\r
508/// must be defined in a platform specific manner.\r
509///\r
510typedef struct {\r
511 EFI_ACPI_DESCRIPTION_HEADER Header;\r
512 UINT32 Reserved1; ///< Must be set to 1\r
513 UINT64 Reserved2;\r
514} EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;\r
515\r
516///\r
517/// SRAT Version (as defined in ACPI 4.0 spec.)\r
518///\r
519#define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03\r
520\r
521//\r
522// SRAT structure types.\r
523// All other values between 0x03 an 0xFF are reserved and\r
524// will be ignored by OSPM.\r
525//\r
526#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00\r
527#define EFI_ACPI_4_0_MEMORY_AFFINITY 0x01\r
528#define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02\r
529\r
530///\r
531/// Processor Local APIC/SAPIC Affinity Structure Definition\r
532///\r
533typedef struct {\r
534 UINT8 Type;\r
535 UINT8 Length;\r
536 UINT8 ProximityDomain7To0;\r
537 UINT8 ApicId;\r
538 UINT32 Flags;\r
539 UINT8 LocalSapicEid;\r
540 UINT8 ProximityDomain31To8[3];\r
541 UINT32 ClockDomain;\r
542} EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;\r
543\r
544///\r
545/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.\r
546///\r
547#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)\r
548\r
549///\r
550/// Memory Affinity Structure Definition\r
551///\r
552typedef struct {\r
553 UINT8 Type;\r
554 UINT8 Length;\r
555 UINT32 ProximityDomain;\r
556 UINT16 Reserved1;\r
557 UINT32 AddressBaseLow;\r
558 UINT32 AddressBaseHigh;\r
559 UINT32 LengthLow;\r
560 UINT32 LengthHigh;\r
561 UINT32 Reserved2;\r
562 UINT32 Flags;\r
563 UINT64 Reserved3;\r
564} EFI_ACPI_4_0_MEMORY_AFFINITY_STRUCTURE;\r
565\r
566//\r
567// Memory Flags. All other bits are reserved and must be 0.\r
568//\r
569#define EFI_ACPI_4_0_MEMORY_ENABLED (1 << 0)\r
570#define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE (1 << 1)\r
571#define EFI_ACPI_4_0_MEMORY_NONVOLATILE (1 << 2)\r
572\r
573///\r
574/// Processor Local x2APIC Affinity Structure Definition\r
575///\r
576typedef struct {\r
577 UINT8 Type;\r
578 UINT8 Length;\r
579 UINT8 Reserved1[2];\r
580 UINT32 ProximityDomain;\r
581 UINT32 X2ApicId;\r
582 UINT32 Flags;\r
583 UINT32 ClockDomain;\r
584 UINT8 Reserved2[4];\r
585} EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;\r
586\r
587///\r
588/// System Locality Distance Information Table (SLIT).\r
589/// The rest of the table is a matrix.\r
590///\r
591typedef struct {\r
592 EFI_ACPI_DESCRIPTION_HEADER Header;\r
593 UINT64 NumberOfSystemLocalities;\r
594} EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;\r
595\r
596///\r
597/// SLIT Version (as defined in ACPI 4.0 spec.)\r
598///\r
599#define EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01\r
600\r
601///\r
602/// Corrected Platform Error Polling Table (CPEP)\r
603///\r
604typedef struct {\r
605 EFI_ACPI_DESCRIPTION_HEADER Header;\r
606 UINT8 Reserved[8];\r
607} EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;\r
608\r
609///\r
610/// CPEP Version (as defined in ACPI 4.0 spec.)\r
611///\r
612#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01\r
613\r
614//\r
615// CPEP processor structure types.\r
616//\r
617#define EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC 0x00\r
618\r
619///\r
620/// Corrected Platform Error Polling Processor Structure Definition\r
621///\r
622typedef struct {\r
623 UINT8 Type;\r
624 UINT8 Length;\r
625 UINT8 ProcessorId;\r
626 UINT8 ProcessorEid;\r
627 UINT32 PollingInterval;\r
628} EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;\r
629\r
630///\r
631/// Maximum System Characteristics Table (MSCT)\r
632///\r
633typedef struct {\r
634 EFI_ACPI_DESCRIPTION_HEADER Header;\r
635 UINT32 OffsetProxDomInfo;\r
636 UINT32 MaximumNumberOfProximityDomains;\r
637 UINT32 MaximumNumberOfClockDomains;\r
638 UINT64 MaximumPhysicalAddress;\r
639} EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;\r
640\r
641///\r
642/// MSCT Version (as defined in ACPI 4.0 spec.)\r
643///\r
644#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01\r
645\r
646///\r
647/// Maximum Proximity Domain Information Structure Definition\r
648///\r
649typedef struct {\r
650 UINT8 Revision;\r
651 UINT8 Length;\r
652 UINT32 ProximityDomainRangeLow;\r
653 UINT32 ProximityDomainRangeHigh;\r
654 UINT32 MaximumProcessorCapacity;\r
655 UINT64 MaximumMemoryCapacity;\r
656} EFI_ACPI_4_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;\r
657\r
658///\r
659/// Boot Error Record Table (BERT)\r
660///\r
661typedef struct {\r
662 EFI_ACPI_DESCRIPTION_HEADER Header;\r
663 UINT32 BootErrorRegionLength;\r
664 UINT64 BootErrorRegion;\r
665} EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_HEADER;\r
666\r
667///\r
668/// BERT Version (as defined in ACPI 4.0 spec.)\r
669///\r
670#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01\r
671\r
672///\r
673/// Boot Error Region Block Status Definition\r
674///\r
675typedef struct {\r
676 UINT32 UncorrectableErrorValid:1;\r
677 UINT32 CorrectableErrorValid:1;\r
678 UINT32 MultipleUncorrectableErrors:1;\r
679 UINT32 MultipleCorrectableErrors:1;\r
680 UINT32 ErrorDataEntryCount:10;\r
681 UINT32 Reserved:18;\r
682} EFI_ACPI_4_0_ERROR_BLOCK_STATUS;\r
683\r
684///\r
685/// Boot Error Region Definition\r
686///\r
687typedef struct {\r
688 EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus;\r
689 UINT32 RawDataOffset;\r
690 UINT32 RawDataLength;\r
691 UINT32 DataLength;\r
692 UINT32 ErrorSeverity;\r
693} EFI_ACPI_4_0_BOOT_ERROR_REGION_STRUCTURE;\r
694\r
695//\r
696// Boot Error Severity types\r
697//\r
698#define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTABLE 0x00\r
699#define EFI_ACPI_4_0_ERROR_SEVERITY_FATAL 0x01\r
700#define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTED 0x02\r
701#define EFI_ACPI_4_0_ERROR_SEVERITY_NONE 0x03\r
702\r
703///\r
704/// Generic Error Data Entry Definition\r
705///\r
706typedef struct {\r
707 UINT8 SectionType[16];\r
708 UINT32 ErrorSeverity;\r
709 UINT16 Revision;\r
710 UINT8 ValidationBits;\r
711 UINT8 Flags;\r
712 UINT32 ErrorDataLength;\r
713 UINT8 FruId[16];\r
714 UINT8 FruText[20];\r
715} EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;\r
716\r
717///\r
718/// Generic Error Data Entry Version (as defined in ACPI 4.0 spec.)\r
719///\r
720#define EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201\r
721\r
722///\r
723/// HEST - Hardware Error Source Table\r
724///\r
725typedef struct {\r
726 EFI_ACPI_DESCRIPTION_HEADER Header;\r
727 UINT32 ErrorSourceCount;\r
728} EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;\r
729\r
730///\r
731/// HEST Version (as defined in ACPI 4.0 spec.)\r
732///\r
733#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01\r
734\r
735//\r
736// Error Source structure types.\r
737//\r
738#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00\r
739#define EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01\r
740#define EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR 0x02\r
741#define EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER 0x06\r
742#define EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER 0x07\r
743#define EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER 0x08\r
744#define EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR 0x09\r
745\r
746//\r
747// Error Source structure flags.\r
748//\r
749#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)\r
750#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)\r
751\r
752///\r
753/// IA-32 Architecture Machine Check Exception Structure Definition\r
754///\r
755typedef struct {\r
756 UINT16 Type;\r
757 UINT16 SourceId;\r
758 UINT8 Reserved0[2];\r
759 UINT8 Flags;\r
760 UINT8 Enabled;\r
761 UINT32 NumberOfRecordsToPreAllocate;\r
762 UINT32 MaxSectionsPerRecord;\r
763 UINT64 GlobalCapabilityInitData;\r
764 UINT64 GlobalControlInitData;\r
765 UINT8 NumberOfHardwareBanks;\r
766 UINT8 Reserved1[7];\r
767} EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;\r
768\r
769///\r
770/// IA-32 Architecture Machine Check Bank Structure Definition\r
771///\r
772typedef struct {\r
773 UINT8 BankNumber;\r
774 UINT8 ClearStatusOnInitialization;\r
775 UINT8 StatusDataFormat;\r
776 UINT8 Reserved0;\r
777 UINT32 ControlRegisterMsrAddress;\r
778 UINT64 ControlInitData;\r
779 UINT32 StatusRegisterMsrAddress;\r
780 UINT32 AddressRegisterMsrAddress;\r
781 UINT32 MiscRegisterMsrAddress;\r
782} EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;\r
783\r
4a18b92c
JY
784///\r
785/// IA-32 Architecture Machine Check Bank Structure MCA data format\r
786///\r
787#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00\r
788#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01\r
789#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02\r
790\r
22c5a7af
JY
791//\r
792// Hardware Error Notification types. All other values are reserved\r
793//\r
794#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00\r
795#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01\r
796#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02\r
797#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03\r
798#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04\r
799\r
800///\r
801/// Hardware Error Notification Configuration Write Enable Structure Definition\r
802///\r
803typedef struct {\r
804 UINT16 Type:1;\r
805 UINT16 PollInterval:1;\r
806 UINT16 SwitchToPollingThresholdValue:1;\r
807 UINT16 SwitchToPollingThresholdWindow:1;\r
808 UINT16 ErrorThresholdValue:1;\r
809 UINT16 ErrorThresholdWindow:1;\r
810 UINT16 Reserved:10;\r
811} EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;\r
812\r
813///\r
814/// Hardware Error Notification Structure Definition\r
815///\r
816typedef struct {\r
817 UINT8 Type;\r
818 UINT8 Length;\r
819 EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;\r
820 UINT32 PollInterval;\r
821 UINT32 Vector;\r
822 UINT32 SwitchToPollingThresholdValue;\r
823 UINT32 SwitchToPollingThresholdWindow;\r
824 UINT32 ErrorThresholdValue;\r
825 UINT32 ErrorThresholdWindow;\r
826} EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;\r
827\r
828///\r
829/// IA-32 Architecture Corrected Machine Check Structure Definition\r
830///\r
831typedef struct {\r
832 UINT16 Type;\r
833 UINT16 SourceId;\r
834 UINT8 Reserved0[2];\r
835 UINT8 Flags;\r
836 UINT8 Enabled;\r
837 UINT32 NumberOfRecordsToPreAllocate;\r
838 UINT32 MaxSectionsPerRecord;\r
839 EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;\r
840 UINT8 NumberOfHardwareBanks;\r
841 UINT8 Reserved1[3];\r
842} EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;\r
843\r
844///\r
845/// IA-32 Architecture NMI Error Structure Definition\r
846///\r
847typedef struct {\r
848 UINT16 Type;\r
849 UINT16 SourceId;\r
850 UINT8 Reserved0[2];\r
851 UINT32 NumberOfRecordsToPreAllocate;\r
852 UINT32 MaxSectionsPerRecord;\r
853 UINT32 MaxRawDataLength;\r
854} EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;\r
855\r
856///\r
857/// PCI Express Root Port AER Structure Definition\r
858///\r
859typedef struct {\r
860 UINT16 Type;\r
861 UINT16 SourceId;\r
862 UINT8 Reserved0[2];\r
863 UINT8 Flags;\r
864 UINT8 Enabled;\r
865 UINT32 NumberOfRecordsToPreAllocate;\r
866 UINT32 MaxSectionsPerRecord;\r
867 UINT32 Bus;\r
868 UINT16 Device;\r
869 UINT16 Function;\r
870 UINT16 DeviceControl;\r
871 UINT8 Reserved1[2];\r
872 UINT32 UncorrectableErrorMask;\r
873 UINT32 UncorrectableErrorSeverity;\r
874 UINT32 CorrectableErrorMask;\r
875 UINT32 AdvancedErrorCapabilitiesAndControl;\r
876 UINT32 RootErrorCommand;\r
877} EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;\r
878\r
879///\r
880/// PCI Express Device AER Structure Definition\r
881///\r
882typedef struct {\r
883 UINT16 Type;\r
884 UINT16 SourceId;\r
885 UINT8 Reserved0[2];\r
886 UINT8 Flags;\r
887 UINT8 Enabled;\r
888 UINT32 NumberOfRecordsToPreAllocate;\r
889 UINT32 MaxSectionsPerRecord;\r
890 UINT32 Bus;\r
891 UINT16 Device;\r
892 UINT16 Function;\r
893 UINT16 DeviceControl;\r
894 UINT8 Reserved1[2];\r
895 UINT32 UncorrectableErrorMask;\r
896 UINT32 UncorrectableErrorSeverity;\r
897 UINT32 CorrectableErrorMask;\r
898 UINT32 AdvancedErrorCapabilitiesAndControl;\r
899} EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;\r
900\r
901///\r
902/// PCI Express Bridge AER Structure Definition\r
903///\r
904typedef struct {\r
905 UINT16 Type;\r
906 UINT16 SourceId;\r
907 UINT8 Reserved0[2];\r
908 UINT8 Flags;\r
909 UINT8 Enabled;\r
910 UINT32 NumberOfRecordsToPreAllocate;\r
911 UINT32 MaxSectionsPerRecord;\r
912 UINT32 Bus;\r
913 UINT16 Device;\r
914 UINT16 Function;\r
915 UINT16 DeviceControl;\r
916 UINT8 Reserved1[2];\r
917 UINT32 UncorrectableErrorMask;\r
918 UINT32 UncorrectableErrorSeverity;\r
919 UINT32 CorrectableErrorMask;\r
920 UINT32 AdvancedErrorCapabilitiesAndControl;\r
921 UINT32 SecondaryUncorrectableErrorMask;\r
922 UINT32 SecondaryUncorrectableErrorSeverity;\r
923 UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;\r
924} EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;\r
925\r
926///\r
927/// Generic Hardware Error Source Structure Definition\r
928///\r
929typedef struct {\r
930 UINT16 Type;\r
931 UINT16 SourceId;\r
932 UINT16 RelatedSourceId;\r
933 UINT8 Flags;\r
934 UINT8 Enabled;\r
935 UINT32 NumberOfRecordsToPreAllocate;\r
936 UINT32 MaxSectionsPerRecord;\r
937 UINT32 MaxRawDataLength;\r
938 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;\r
939 EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;\r
940 UINT32 ErrorStatusBlockLength;\r
941} EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;\r
942\r
943///\r
944/// Generic Error Status Definition\r
945///\r
946typedef struct {\r
947 EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus;\r
948 UINT32 RawDataOffset;\r
949 UINT32 RawDataLength;\r
950 UINT32 DataLength;\r
951 UINT32 ErrorSeverity;\r
952} EFI_ACPI_4_0_GENERIC_ERROR_STATUS_STRUCTURE;\r
953\r
954///\r
955/// ERST - Error Record Serialization Table\r
956///\r
957typedef struct {\r
958 EFI_ACPI_DESCRIPTION_HEADER Header;\r
959 UINT32 SerializationHeaderSize;\r
960 UINT8 Reserved0[4];\r
961 UINT32 InstructionEntryCount;\r
962} EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;\r
963\r
964///\r
965/// ERST Version (as defined in ACPI 4.0 spec.)\r
966///\r
967#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01\r
968\r
969///\r
970/// ERST Serialization Actions\r
971///\r
972#define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION 0x00\r
973#define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION 0x01\r
974#define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION 0x02\r
975#define EFI_ACPI_4_0_ERST_END_OPERATION 0x03\r
976#define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET 0x04\r
977#define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION 0x05\r
978#define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS 0x06\r
979#define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS 0x07\r
980#define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER 0x08\r
981#define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER 0x09\r
982#define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT 0x0A\r
983#define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B\r
984#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D\r
985#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E\r
986#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F\r
987\r
988///\r
989/// ERST Action Command Status\r
990///\r
991#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00\r
992#define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE 0x01\r
993#define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE 0x02\r
994#define EFI_ACPI_4_0_EINJ_STATUS_FAILED 0x03\r
995#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY 0x04\r
996#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND 0x05\r
997\r
998///\r
999/// ERST Serialization Instructions\r
1000///\r
1001#define EFI_ACPI_4_0_ERST_READ_REGISTER 0x00\r
1002#define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE 0x01\r
1003#define EFI_ACPI_4_0_ERST_WRITE_REGISTER 0x02\r
1004#define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE 0x03\r
1005#define EFI_ACPI_4_0_ERST_NOOP 0x04\r
1006#define EFI_ACPI_4_0_ERST_LOAD_VAR1 0x05\r
1007#define EFI_ACPI_4_0_ERST_LOAD_VAR2 0x06\r
1008#define EFI_ACPI_4_0_ERST_STORE_VAR1 0x07\r
1009#define EFI_ACPI_4_0_ERST_ADD 0x08\r
1010#define EFI_ACPI_4_0_ERST_SUBTRACT 0x09\r
1011#define EFI_ACPI_4_0_ERST_ADD_VALUE 0x0A\r
1012#define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE 0x0B\r
1013#define EFI_ACPI_4_0_ERST_STALL 0x0C\r
1014#define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE 0x0D\r
1015#define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E\r
1016#define EFI_ACPI_4_0_ERST_GOTO 0x0F\r
1017#define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE 0x10\r
1018#define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE 0x11\r
1019#define EFI_ACPI_4_0_ERST_MOVE_DATA 0x12\r
1020\r
1021///\r
1022/// ERST Instruction Flags\r
1023///\r
1024#define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER 0x01\r
1025\r
1026///\r
1027/// ERST Serialization Instruction Entry\r
1028///\r
1029typedef struct {\r
1030 UINT8 SerializationAction;\r
1031 UINT8 Instruction;\r
1032 UINT8 Flags;\r
1033 UINT8 Reserved0;\r
1034 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;\r
1035 UINT64 Value;\r
1036 UINT64 Mask;\r
1037} EFI_ACPI_4_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;\r
1038\r
1039///\r
1040/// EINJ - Error Injection Table\r
1041///\r
1042typedef struct {\r
1043 EFI_ACPI_DESCRIPTION_HEADER Header;\r
1044 UINT32 InjectionHeaderSize;\r
1045 UINT8 InjectionFlags;\r
1046 UINT8 Reserved0[3];\r
1047 UINT32 InjectionEntryCount;\r
1048} EFI_ACPI_4_0_ERROR_INJECTION_TABLE_HEADER;\r
1049\r
1050///\r
1051/// EINJ Version (as defined in ACPI 4.0 spec.)\r
1052///\r
1053#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION 0x01\r
1054\r
1055///\r
1056/// EINJ Error Injection Actions\r
1057///\r
1058#define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION 0x00\r
1059#define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01\r
1060#define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE 0x02\r
1061#define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE 0x03\r
1062#define EFI_ACPI_4_0_EINJ_END_OPERATION 0x04\r
1063#define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION 0x05\r
1064#define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS 0x06\r
1065#define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS 0x07\r
1066#define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR 0xFF\r
1067\r
1068///\r
1069/// EINJ Action Command Status\r
1070///\r
1071#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00\r
1072#define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01\r
1073#define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS 0x02\r
1074\r
1075///\r
1076/// EINJ Error Type Definition\r
1077///\r
1078#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)\r
1079#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)\r
1080#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)\r
1081#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)\r
1082#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)\r
1083#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)\r
1084#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)\r
1085#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)\r
1086#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)\r
1087#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)\r
1088#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)\r
1089#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)\r
1090\r
1091///\r
1092/// EINJ Injection Instructions\r
1093///\r
1094#define EFI_ACPI_4_0_EINJ_READ_REGISTER 0x00\r
1095#define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE 0x01\r
1096#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER 0x02\r
1097#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE 0x03\r
1098#define EFI_ACPI_4_0_EINJ_NOOP 0x04\r
1099\r
1100///\r
1101/// EINJ Instruction Flags\r
1102///\r
1103#define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER 0x01\r
1104\r
1105///\r
1106/// EINJ Injection Instruction Entry\r
1107///\r
1108typedef struct {\r
1109 UINT8 InjectionAction;\r
1110 UINT8 Instruction;\r
1111 UINT8 Flags;\r
1112 UINT8 Reserved0;\r
1113 EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;\r
1114 UINT64 Value;\r
1115 UINT64 Mask;\r
1116} EFI_ACPI_4_0_EINJ_INJECTION_INSTRUCTION_ENTRY;\r
1117\r
1118///\r
1119/// EINJ Trigger Action Table\r
1120///\r
1121typedef struct {\r
1122 UINT32 HeaderSize;\r
1123 UINT32 Revision;\r
1124 UINT32 TableSize;\r
1125 UINT32 EntryCount;\r
1126} EFI_ACPI_4_0_EINJ_TRIGGER_ACTION_TABLE;\r
1127\r
1128//\r
1129// Known table signatures\r
1130//\r
1131\r
1132///\r
1133/// "RSD PTR " Root System Description Pointer\r
1134///\r
9095d37b 1135#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')\r
22c5a7af
JY
1136\r
1137///\r
1138/// "APIC" Multiple APIC Description Table\r
1139///\r
1140#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')\r
1141\r
1142///\r
1143/// "BERT" Boot Error Record Table\r
1144///\r
1145#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')\r
1146\r
1147///\r
1148/// "CPEP" Corrected Platform Error Polling Table\r
1149///\r
1150#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')\r
1151\r
1152///\r
1153/// "DSDT" Differentiated System Description Table\r
1154///\r
1155#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')\r
1156\r
1157///\r
1158/// "ECDT" Embedded Controller Boot Resources Table\r
1159///\r
1160#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')\r
1161\r
1162///\r
1163/// "EINJ" Error Injection Table\r
1164///\r
1165#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')\r
1166\r
1167///\r
1168/// "ERST" Error Record Serialization Table\r
1169///\r
1170#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')\r
1171\r
1172///\r
1173/// "FACP" Fixed ACPI Description Table\r
1174///\r
1175#define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')\r
1176\r
1177///\r
1178/// "FACS" Firmware ACPI Control Structure\r
1179///\r
1180#define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')\r
1181\r
1182///\r
1183/// "HEST" Hardware Error Source Table\r
1184///\r
1185#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')\r
1186\r
1187///\r
1188/// "MSCT" Maximum System Characteristics Table\r
1189///\r
1190#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')\r
1191\r
1192///\r
1193/// "PSDT" Persistent System Description Table\r
1194///\r
1195#define EFI_ACPI_4_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')\r
1196\r
1197///\r
1198/// "RSDT" Root System Description Table\r
1199///\r
1200#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')\r
1201\r
1202///\r
1203/// "SBST" Smart Battery Specification Table\r
1204///\r
1205#define EFI_ACPI_4_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')\r
1206\r
1207///\r
1208/// "SLIT" System Locality Information Table\r
1209///\r
1210#define EFI_ACPI_4_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')\r
1211\r
1212///\r
1213/// "SRAT" System Resource Affinity Table\r
1214///\r
1215#define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')\r
1216\r
1217///\r
1218/// "SSDT" Secondary System Description Table\r
1219///\r
1220#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')\r
1221\r
1222///\r
1223/// "XSDT" Extended System Description Table\r
1224///\r
1225#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')\r
1226\r
1227///\r
1228/// "BOOT" MS Simple Boot Spec\r
1229///\r
1230#define EFI_ACPI_4_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')\r
1231\r
1232///\r
1233/// "DBGP" MS Debug Port Spec\r
1234///\r
1235#define EFI_ACPI_4_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')\r
1236\r
1237///\r
1238/// "DMAR" DMA Remapping Table\r
1239///\r
1240#define EFI_ACPI_4_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')\r
1241\r
1242///\r
1243/// "ETDT" Event Timer Description Table\r
1244///\r
1245#define EFI_ACPI_4_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')\r
1246\r
1247///\r
1248/// "HPET" IA-PC High Precision Event Timer Table\r
1249///\r
1250#define EFI_ACPI_4_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')\r
1251\r
1252///\r
1253/// "iBFT" iSCSI Boot Firmware Table\r
1254///\r
1255#define EFI_ACPI_4_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')\r
1256\r
1257///\r
1258/// "IVRS" I/O Virtualization Reporting Structure\r
1259///\r
1260#define EFI_ACPI_4_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')\r
1261\r
1262///\r
1263/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table\r
1264///\r
1265#define EFI_ACPI_4_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')\r
1266\r
1267///\r
1268/// "MCHI" Management Controller Host Interface Table\r
1269///\r
1270#define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')\r
1271\r
1272///\r
1273/// "SPCR" Serial Port Concole Redirection Table\r
1274///\r
1275#define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')\r
1276\r
1277///\r
1278/// "SPMI" Server Platform Management Interface Table\r
1279///\r
1280#define EFI_ACPI_4_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')\r
1281\r
1282///\r
1283/// "TCPA" Trusted Computing Platform Alliance Capabilities Table\r
1284///\r
1285#define EFI_ACPI_4_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')\r
1286\r
1287///\r
1288/// "UEFI" UEFI ACPI Data Table\r
1289///\r
1290#define EFI_ACPI_4_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')\r
1291\r
1292///\r
1293/// "WAET" Windows ACPI Enlightenment Table\r
1294///\r
1295#define EFI_ACPI_4_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')\r
1296\r
1297///\r
1298/// "WDAT" Watchdog Action Table\r
1299///\r
1300#define EFI_ACPI_4_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')\r
1301\r
1302///\r
1303/// "WDRT" Watchdog Resource Table\r
1304///\r
1305#define EFI_ACPI_4_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')\r
1306\r
1307#pragma pack()\r
1308\r
1309#endif\r