actbl1.h revision 1.1.1.17 1 /******************************************************************************
2 *
3 * Name: actbl1.h - Additional ACPI table definitions
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2021, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44 #ifndef __ACTBL1_H__
45 #define __ACTBL1_H__
46
47
48 /*******************************************************************************
49 *
50 * Additional ACPI Tables
51 *
52 * These tables are not consumed directly by the ACPICA subsystem, but are
53 * included here to support device drivers and the AML disassembler.
54 *
55 ******************************************************************************/
56
57
58 /*
59 * Values for description table header signatures for tables defined in this
60 * file. Useful because they make it more difficult to inadvertently type in
61 * the wrong signature.
62 */
63 #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */
64 #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */
65 #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */
66 #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */
67 #define ACPI_SIG_CEDT "CEDT" /* CXL Early Discovery Table */
68 #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */
69 #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */
70 #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */
71 #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */
72 #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */
73 #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */
74 #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */
75 #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */
76 #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */
77 #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */
78 #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */
79 #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */
80 #define ACPI_SIG_HMAT "HMAT" /* Heterogeneous Memory Attributes Table */
81 #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */
82 #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */
83
84 #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */
85 #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */
86
87
88 /* Reserved table signatures */
89
90 #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */
91 #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */
92
93 /*
94 * These tables have been seen in the field, but no definition has been found
95 */
96 #ifdef ACPI_UNDEFINED_TABLES
97 #define ACPI_SIG_ATKG "ATKG"
98 #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */
99 #define ACPI_SIG_IEIT "IEIT"
100 #endif
101
102 /*
103 * All tables must be byte-packed to match the ACPI specification, since
104 * the tables are provided by the system BIOS.
105 */
106 #pragma pack(1)
107
108 /*
109 * Note: C bitfields are not used for this reason:
110 *
111 * "Bitfields are great and easy to read, but unfortunately the C language
112 * does not specify the layout of bitfields in memory, which means they are
113 * essentially useless for dealing with packed data in on-disk formats or
114 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
115 * this decision was a design error in C. Ritchie could have picked an order
116 * and stuck with it." Norman Ramsey.
117 * See http://stackoverflow.com/a/1053662/41661
118 */
119
120
121 /*******************************************************************************
122 *
123 * Common subtable headers
124 *
125 ******************************************************************************/
126
127 /* Generic subtable header (used in MADT, SRAT, etc.) */
128
129 typedef struct acpi_subtable_header
130 {
131 UINT8 Type;
132 UINT8 Length;
133
134 } ACPI_SUBTABLE_HEADER;
135
136
137 /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
138
139 typedef struct acpi_whea_header
140 {
141 UINT8 Action;
142 UINT8 Instruction;
143 UINT8 Flags;
144 UINT8 Reserved;
145 ACPI_GENERIC_ADDRESS RegisterRegion;
146 UINT64 Value; /* Value used with Read/Write register */
147 UINT64 Mask; /* Bitmask required for this register instruction */
148
149 } ACPI_WHEA_HEADER;
150
151
152 /*******************************************************************************
153 *
154 * ASF - Alert Standard Format table (Signature "ASF!")
155 * Revision 0x10
156 *
157 * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003
158 *
159 ******************************************************************************/
160
161 typedef struct acpi_table_asf
162 {
163 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
164
165 } ACPI_TABLE_ASF;
166
167
168 /* ASF subtable header */
169
170 typedef struct acpi_asf_header
171 {
172 UINT8 Type;
173 UINT8 Reserved;
174 UINT16 Length;
175
176 } ACPI_ASF_HEADER;
177
178
179 /* Values for Type field above */
180
181 enum AcpiAsfType
182 {
183 ACPI_ASF_TYPE_INFO = 0,
184 ACPI_ASF_TYPE_ALERT = 1,
185 ACPI_ASF_TYPE_CONTROL = 2,
186 ACPI_ASF_TYPE_BOOT = 3,
187 ACPI_ASF_TYPE_ADDRESS = 4,
188 ACPI_ASF_TYPE_RESERVED = 5
189 };
190
191 /*
192 * ASF subtables
193 */
194
195 /* 0: ASF Information */
196
197 typedef struct acpi_asf_info
198 {
199 ACPI_ASF_HEADER Header;
200 UINT8 MinResetValue;
201 UINT8 MinPollInterval;
202 UINT16 SystemId;
203 UINT32 MfgId;
204 UINT8 Flags;
205 UINT8 Reserved2[3];
206
207 } ACPI_ASF_INFO;
208
209 /* Masks for Flags field above */
210
211 #define ACPI_ASF_SMBUS_PROTOCOLS (1)
212
213
214 /* 1: ASF Alerts */
215
216 typedef struct acpi_asf_alert
217 {
218 ACPI_ASF_HEADER Header;
219 UINT8 AssertMask;
220 UINT8 DeassertMask;
221 UINT8 Alerts;
222 UINT8 DataLength;
223
224 } ACPI_ASF_ALERT;
225
226 typedef struct acpi_asf_alert_data
227 {
228 UINT8 Address;
229 UINT8 Command;
230 UINT8 Mask;
231 UINT8 Value;
232 UINT8 SensorType;
233 UINT8 Type;
234 UINT8 Offset;
235 UINT8 SourceType;
236 UINT8 Severity;
237 UINT8 SensorNumber;
238 UINT8 Entity;
239 UINT8 Instance;
240
241 } ACPI_ASF_ALERT_DATA;
242
243
244 /* 2: ASF Remote Control */
245
246 typedef struct acpi_asf_remote
247 {
248 ACPI_ASF_HEADER Header;
249 UINT8 Controls;
250 UINT8 DataLength;
251 UINT16 Reserved2;
252
253 } ACPI_ASF_REMOTE;
254
255 typedef struct acpi_asf_control_data
256 {
257 UINT8 Function;
258 UINT8 Address;
259 UINT8 Command;
260 UINT8 Value;
261
262 } ACPI_ASF_CONTROL_DATA;
263
264
265 /* 3: ASF RMCP Boot Options */
266
267 typedef struct acpi_asf_rmcp
268 {
269 ACPI_ASF_HEADER Header;
270 UINT8 Capabilities[7];
271 UINT8 CompletionCode;
272 UINT32 EnterpriseId;
273 UINT8 Command;
274 UINT16 Parameter;
275 UINT16 BootOptions;
276 UINT16 OemParameters;
277
278 } ACPI_ASF_RMCP;
279
280
281 /* 4: ASF Address */
282
283 typedef struct acpi_asf_address
284 {
285 ACPI_ASF_HEADER Header;
286 UINT8 EpromAddress;
287 UINT8 Devices;
288
289 } ACPI_ASF_ADDRESS;
290
291
292 /*******************************************************************************
293 *
294 * BERT - Boot Error Record Table (ACPI 4.0)
295 * Version 1
296 *
297 ******************************************************************************/
298
299 typedef struct acpi_table_bert
300 {
301 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
302 UINT32 RegionLength; /* Length of the boot error region */
303 UINT64 Address; /* Physical address of the error region */
304
305 } ACPI_TABLE_BERT;
306
307
308 /* Boot Error Region (not a subtable, pointed to by Address field above) */
309
310 typedef struct acpi_bert_region
311 {
312 UINT32 BlockStatus; /* Type of error information */
313 UINT32 RawDataOffset; /* Offset to raw error data */
314 UINT32 RawDataLength; /* Length of raw error data */
315 UINT32 DataLength; /* Length of generic error data */
316 UINT32 ErrorSeverity; /* Severity code */
317
318 } ACPI_BERT_REGION;
319
320 /* Values for BlockStatus flags above */
321
322 #define ACPI_BERT_UNCORRECTABLE (1)
323 #define ACPI_BERT_CORRECTABLE (1<<1)
324 #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2)
325 #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3)
326 #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
327
328 /* Values for ErrorSeverity above */
329
330 enum AcpiBertErrorSeverity
331 {
332 ACPI_BERT_ERROR_CORRECTABLE = 0,
333 ACPI_BERT_ERROR_FATAL = 1,
334 ACPI_BERT_ERROR_CORRECTED = 2,
335 ACPI_BERT_ERROR_NONE = 3,
336 ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */
337 };
338
339 /*
340 * Note: The generic error data that follows the ErrorSeverity field above
341 * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below
342 */
343
344
345 /*******************************************************************************
346 *
347 * BGRT - Boot Graphics Resource Table (ACPI 5.0)
348 * Version 1
349 *
350 ******************************************************************************/
351
352 typedef struct acpi_table_bgrt
353 {
354 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
355 UINT16 Version;
356 UINT8 Status;
357 UINT8 ImageType;
358 UINT64 ImageAddress;
359 UINT32 ImageOffsetX;
360 UINT32 ImageOffsetY;
361
362 } ACPI_TABLE_BGRT;
363
364 /* Flags for Status field above */
365
366 #define ACPI_BGRT_DISPLAYED (1)
367 #define ACPI_BGRT_ORIENTATION_OFFSET (3 << 1)
368
369
370 /*******************************************************************************
371 *
372 * BOOT - Simple Boot Flag Table
373 * Version 1
374 *
375 * Conforms to the "Simple Boot Flag Specification", Version 2.1
376 *
377 ******************************************************************************/
378
379 typedef struct acpi_table_boot
380 {
381 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
382 UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */
383 UINT8 Reserved[3];
384
385 } ACPI_TABLE_BOOT;
386
387
388 /*******************************************************************************
389 *
390 * CEDT - CXL Early Discovery Table
391 * Version 1
392 *
393 * Conforms to the "CXL Early Discovery Table" (CXL 2.0)
394 *
395 ******************************************************************************/
396
397 typedef struct acpi_table_cedt
398 {
399 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
400
401 } ACPI_TABLE_CEDT;
402
403 /* CEDT subtable header (Performance Record Structure) */
404
405 typedef struct acpi_cedt_header
406 {
407 UINT8 Type;
408 UINT8 Reserved;
409 UINT16 Length;
410
411 } ACPI_CEDT_HEADER;
412
413 /* Values for Type field above */
414
415 enum AcpiCedtType
416 {
417 ACPI_CEDT_TYPE_CHBS = 0,
418 ACPI_CEDT_TYPE_CFMWS = 1,
419 ACPI_CEDT_TYPE_RESERVED = 2,
420 };
421
422 /* Values for version field above */
423
424 #define ACPI_CEDT_CHBS_VERSION_CXL11 (0)
425 #define ACPI_CEDT_CHBS_VERSION_CXL20 (1)
426
427 /* Values for length field above */
428
429 #define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)
430 #define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)
431
432 /*
433 * CEDT subtables
434 */
435
436 /* 0: CXL Host Bridge Structure */
437
438 typedef struct acpi_cedt_chbs
439 {
440 ACPI_CEDT_HEADER Header;
441 UINT32 Uid;
442 UINT32 CxlVersion;
443 UINT32 Reserved;
444 UINT64 Base;
445 UINT64 Length;
446
447 } ACPI_CEDT_CHBS;
448
449
450 /* 1: CXL Fixed Memory Window Structure */
451
452 typedef struct acpi_cedt_cfmws
453 {
454 ACPI_CEDT_HEADER Header;
455 UINT32 Reserved1;
456 UINT64 BaseHpa;
457 UINT64 WindowSize;
458 UINT8 InterleaveWays;
459 UINT8 InterleaveArithmetic;
460 UINT16 Reserved2;
461 UINT32 Granularity;
462 UINT16 Restrictions;
463 UINT16 QtgId;
464 UINT32 InterleaveTargets[];
465
466 } ACPI_CEDT_CFMWS;
467
468 /* Values for Interleave Arithmetic field above */
469
470 #define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
471
472 /* Values for Restrictions field above */
473
474 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
475 #define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
476 #define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
477 #define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
478 #define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
479
480
481 /*******************************************************************************
482 *
483 * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
484 * Version 1
485 *
486 ******************************************************************************/
487
488 typedef struct acpi_table_cpep
489 {
490 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
491 UINT64 Reserved;
492
493 } ACPI_TABLE_CPEP;
494
495
496 /* Subtable */
497
498 typedef struct acpi_cpep_polling
499 {
500 ACPI_SUBTABLE_HEADER Header;
501 UINT8 Id; /* Processor ID */
502 UINT8 Eid; /* Processor EID */
503 UINT32 Interval; /* Polling interval (msec) */
504
505 } ACPI_CPEP_POLLING;
506
507
508 /*******************************************************************************
509 *
510 * CSRT - Core System Resource Table
511 * Version 0
512 *
513 * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011
514 *
515 ******************************************************************************/
516
517 typedef struct acpi_table_csrt
518 {
519 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
520
521 } ACPI_TABLE_CSRT;
522
523
524 /* Resource Group subtable */
525
526 typedef struct acpi_csrt_group
527 {
528 UINT32 Length;
529 UINT32 VendorId;
530 UINT32 SubvendorId;
531 UINT16 DeviceId;
532 UINT16 SubdeviceId;
533 UINT16 Revision;
534 UINT16 Reserved;
535 UINT32 SharedInfoLength;
536
537 /* Shared data immediately follows (Length = SharedInfoLength) */
538
539 } ACPI_CSRT_GROUP;
540
541 /* Shared Info subtable */
542
543 typedef struct acpi_csrt_shared_info
544 {
545 UINT16 MajorVersion;
546 UINT16 MinorVersion;
547 UINT32 MmioBaseLow;
548 UINT32 MmioBaseHigh;
549 UINT32 GsiInterrupt;
550 UINT8 InterruptPolarity;
551 UINT8 InterruptMode;
552 UINT8 NumChannels;
553 UINT8 DmaAddressWidth;
554 UINT16 BaseRequestLine;
555 UINT16 NumHandshakeSignals;
556 UINT32 MaxBlockSize;
557
558 /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */
559
560 } ACPI_CSRT_SHARED_INFO;
561
562 /* Resource Descriptor subtable */
563
564 typedef struct acpi_csrt_descriptor
565 {
566 UINT32 Length;
567 UINT16 Type;
568 UINT16 Subtype;
569 UINT32 Uid;
570
571 /* Resource-specific information immediately follows */
572
573 } ACPI_CSRT_DESCRIPTOR;
574
575
576 /* Resource Types */
577
578 #define ACPI_CSRT_TYPE_INTERRUPT 0x0001
579 #define ACPI_CSRT_TYPE_TIMER 0x0002
580 #define ACPI_CSRT_TYPE_DMA 0x0003
581
582 /* Resource Subtypes */
583
584 #define ACPI_CSRT_XRUPT_LINE 0x0000
585 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001
586 #define ACPI_CSRT_TIMER 0x0000
587 #define ACPI_CSRT_DMA_CHANNEL 0x0000
588 #define ACPI_CSRT_DMA_CONTROLLER 0x0001
589
590
591 /*******************************************************************************
592 *
593 * DBG2 - Debug Port Table 2
594 * Version 0 (Both main table and subtables)
595 *
596 * Conforms to "Microsoft Debug Port Table 2 (DBG2)", December 10, 2015
597 *
598 ******************************************************************************/
599
600 typedef struct acpi_table_dbg2
601 {
602 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
603 UINT32 InfoOffset;
604 UINT32 InfoCount;
605
606 } ACPI_TABLE_DBG2;
607
608
609 typedef struct acpi_dbg2_header
610 {
611 UINT32 InfoOffset;
612 UINT32 InfoCount;
613
614 } ACPI_DBG2_HEADER;
615
616
617 /* Debug Device Information Subtable */
618
619 typedef struct acpi_dbg2_device
620 {
621 UINT8 Revision;
622 UINT16 Length;
623 UINT8 RegisterCount; /* Number of BaseAddress registers */
624 UINT16 NamepathLength;
625 UINT16 NamepathOffset;
626 UINT16 OemDataLength;
627 UINT16 OemDataOffset;
628 UINT16 PortType;
629 UINT16 PortSubtype;
630 UINT16 Reserved;
631 UINT16 BaseAddressOffset;
632 UINT16 AddressSizeOffset;
633 /*
634 * Data that follows:
635 * BaseAddress (required) - Each in 12-byte Generic Address Structure format.
636 * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register.
637 * Namepath (required) - Null terminated string. Single dot if not supported.
638 * OemData (optional) - Length is OemDataLength.
639 */
640 } ACPI_DBG2_DEVICE;
641
642 /* Types for PortType field above */
643
644 #define ACPI_DBG2_SERIAL_PORT 0x8000
645 #define ACPI_DBG2_1394_PORT 0x8001
646 #define ACPI_DBG2_USB_PORT 0x8002
647 #define ACPI_DBG2_NET_PORT 0x8003
648
649 /* Subtypes for PortSubtype field above */
650
651 #define ACPI_DBG2_16550_COMPATIBLE 0x0000
652 #define ACPI_DBG2_16550_SUBSET 0x0001
653 #define ACPI_DBG2_ARM_PL011 0x0003
654 #define ACPI_DBG2_ARM_SBSA_32BIT 0x000D
655 #define ACPI_DBG2_ARM_SBSA_GENERIC 0x000E
656 #define ACPI_DBG2_ARM_DCC 0x000F
657 #define ACPI_DBG2_BCM2835 0x0010
658
659 #define ACPI_DBG2_1394_STANDARD 0x0000
660
661 #define ACPI_DBG2_USB_XHCI 0x0000
662 #define ACPI_DBG2_USB_EHCI 0x0001
663
664
665 /*******************************************************************************
666 *
667 * DBGP - Debug Port table
668 * Version 1
669 *
670 * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000
671 *
672 ******************************************************************************/
673
674 typedef struct acpi_table_dbgp
675 {
676 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
677 UINT8 Type; /* 0=full 16550, 1=subset of 16550 */
678 UINT8 Reserved[3];
679 ACPI_GENERIC_ADDRESS DebugPort;
680
681 } ACPI_TABLE_DBGP;
682
683
684 /*******************************************************************************
685 *
686 * DMAR - DMA Remapping table
687 * Version 1
688 *
689 * Conforms to "Intel Virtualization Technology for Directed I/O",
690 * Version 2.3, October 2014
691 *
692 ******************************************************************************/
693
694 typedef struct acpi_table_dmar
695 {
696 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
697 UINT8 Width; /* Host Address Width */
698 UINT8 Flags;
699 UINT8 Reserved[10];
700
701 } ACPI_TABLE_DMAR;
702
703 /* Masks for Flags field above */
704
705 #define ACPI_DMAR_INTR_REMAP (1)
706 #define ACPI_DMAR_X2APIC_OPT_OUT (1<<1)
707 #define ACPI_DMAR_X2APIC_MODE (1<<2)
708
709
710 /* DMAR subtable header */
711
712 typedef struct acpi_dmar_header
713 {
714 UINT16 Type;
715 UINT16 Length;
716
717 } ACPI_DMAR_HEADER;
718
719 /* Values for subtable type in ACPI_DMAR_HEADER */
720
721 enum AcpiDmarType
722 {
723 ACPI_DMAR_TYPE_HARDWARE_UNIT = 0,
724 ACPI_DMAR_TYPE_RESERVED_MEMORY = 1,
725 ACPI_DMAR_TYPE_ROOT_ATS = 2,
726 ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
727 ACPI_DMAR_TYPE_NAMESPACE = 4,
728 ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */
729 };
730
731
732 /* DMAR Device Scope structure */
733
734 typedef struct acpi_dmar_device_scope
735 {
736 UINT8 EntryType;
737 UINT8 Length;
738 UINT16 Reserved;
739 UINT8 EnumerationId;
740 UINT8 Bus;
741
742 } ACPI_DMAR_DEVICE_SCOPE;
743
744 /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE - device types */
745
746 enum AcpiDmarScopeType
747 {
748 ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0,
749 ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1,
750 ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2,
751 ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3,
752 ACPI_DMAR_SCOPE_TYPE_HPET = 4,
753 ACPI_DMAR_SCOPE_TYPE_NAMESPACE = 5,
754 ACPI_DMAR_SCOPE_TYPE_RESERVED = 6 /* 6 and greater are reserved */
755 };
756
757 typedef struct acpi_dmar_pci_path
758 {
759 UINT8 Device;
760 UINT8 Function;
761
762 } ACPI_DMAR_PCI_PATH;
763
764
765 /*
766 * DMAR Subtables, correspond to Type in ACPI_DMAR_HEADER
767 */
768
769 /* 0: Hardware Unit Definition */
770
771 typedef struct acpi_dmar_hardware_unit
772 {
773 ACPI_DMAR_HEADER Header;
774 UINT8 Flags;
775 UINT8 Reserved;
776 UINT16 Segment;
777 UINT64 Address; /* Register Base Address */
778
779 } ACPI_DMAR_HARDWARE_UNIT;
780
781 /* Masks for Flags field above */
782
783 #define ACPI_DMAR_INCLUDE_ALL (1)
784
785
786 /* 1: Reserved Memory Definition */
787
788 typedef struct acpi_dmar_reserved_memory
789 {
790 ACPI_DMAR_HEADER Header;
791 UINT16 Reserved;
792 UINT16 Segment;
793 UINT64 BaseAddress; /* 4K aligned base address */
794 UINT64 EndAddress; /* 4K aligned limit address */
795
796 } ACPI_DMAR_RESERVED_MEMORY;
797
798 /* Masks for Flags field above */
799
800 #define ACPI_DMAR_ALLOW_ALL (1)
801
802
803 /* 2: Root Port ATS Capability Reporting Structure */
804
805 typedef struct acpi_dmar_atsr
806 {
807 ACPI_DMAR_HEADER Header;
808 UINT8 Flags;
809 UINT8 Reserved;
810 UINT16 Segment;
811
812 } ACPI_DMAR_ATSR;
813
814 /* Masks for Flags field above */
815
816 #define ACPI_DMAR_ALL_PORTS (1)
817
818
819 /* 3: Remapping Hardware Static Affinity Structure */
820
821 typedef struct acpi_dmar_rhsa
822 {
823 ACPI_DMAR_HEADER Header;
824 UINT32 Reserved;
825 UINT64 BaseAddress;
826 UINT32 ProximityDomain;
827
828 } ACPI_DMAR_RHSA;
829
830
831 /* 4: ACPI Namespace Device Declaration Structure */
832
833 typedef struct acpi_dmar_andd
834 {
835 ACPI_DMAR_HEADER Header;
836 UINT8 Reserved[3];
837 UINT8 DeviceNumber;
838 char DeviceName[1];
839
840 } ACPI_DMAR_ANDD;
841
842
843 /*******************************************************************************
844 *
845 * DRTM - Dynamic Root of Trust for Measurement table
846 * Conforms to "TCG D-RTM Architecture" June 17 2013, Version 1.0.0
847 * Table version 1
848 *
849 ******************************************************************************/
850
851 typedef struct acpi_table_drtm
852 {
853 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
854 UINT64 EntryBaseAddress;
855 UINT64 EntryLength;
856 UINT32 EntryAddress32;
857 UINT64 EntryAddress64;
858 UINT64 ExitAddress;
859 UINT64 LogAreaAddress;
860 UINT32 LogAreaLength;
861 UINT64 ArchDependentAddress;
862 UINT32 Flags;
863
864 } ACPI_TABLE_DRTM;
865
866 /* Flag Definitions for above */
867
868 #define ACPI_DRTM_ACCESS_ALLOWED (1)
869 #define ACPI_DRTM_ENABLE_GAP_CODE (1<<1)
870 #define ACPI_DRTM_INCOMPLETE_MEASUREMENTS (1<<2)
871 #define ACPI_DRTM_AUTHORITY_ORDER (1<<3)
872
873
874 /* 1) Validated Tables List (64-bit addresses) */
875
876 typedef struct acpi_drtm_vtable_list
877 {
878 UINT32 ValidatedTableCount;
879 UINT64 ValidatedTables[1];
880
881 } ACPI_DRTM_VTABLE_LIST;
882
883 /* 2) Resources List (of Resource Descriptors) */
884
885 /* Resource Descriptor */
886
887 typedef struct acpi_drtm_resource
888 {
889 UINT8 Size[7];
890 UINT8 Type;
891 UINT64 Address;
892
893 } ACPI_DRTM_RESOURCE;
894
895 typedef struct acpi_drtm_resource_list
896 {
897 UINT32 ResourceCount;
898 ACPI_DRTM_RESOURCE Resources[1];
899
900 } ACPI_DRTM_RESOURCE_LIST;
901
902 /* 3) Platform-specific Identifiers List */
903
904 typedef struct acpi_drtm_dps_id
905 {
906 UINT32 DpsIdLength;
907 UINT8 DpsId[16];
908
909 } ACPI_DRTM_DPS_ID;
910
911
912 /*******************************************************************************
913 *
914 * ECDT - Embedded Controller Boot Resources Table
915 * Version 1
916 *
917 ******************************************************************************/
918
919 typedef struct acpi_table_ecdt
920 {
921 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
922 ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */
923 ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */
924 UINT32 Uid; /* Unique ID - must be same as the EC _UID method */
925 UINT8 Gpe; /* The GPE for the EC */
926 UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */
927
928 } ACPI_TABLE_ECDT;
929
930
931 /*******************************************************************************
932 *
933 * EINJ - Error Injection Table (ACPI 4.0)
934 * Version 1
935 *
936 ******************************************************************************/
937
938 typedef struct acpi_table_einj
939 {
940 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
941 UINT32 HeaderLength;
942 UINT8 Flags;
943 UINT8 Reserved[3];
944 UINT32 Entries;
945
946 } ACPI_TABLE_EINJ;
947
948
949 /* EINJ Injection Instruction Entries (actions) */
950
951 typedef struct acpi_einj_entry
952 {
953 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
954
955 } ACPI_EINJ_ENTRY;
956
957 /* Masks for Flags field above */
958
959 #define ACPI_EINJ_PRESERVE (1)
960
961 /* Values for Action field above */
962
963 enum AcpiEinjActions
964 {
965 ACPI_EINJ_BEGIN_OPERATION = 0,
966 ACPI_EINJ_GET_TRIGGER_TABLE = 1,
967 ACPI_EINJ_SET_ERROR_TYPE = 2,
968 ACPI_EINJ_GET_ERROR_TYPE = 3,
969 ACPI_EINJ_END_OPERATION = 4,
970 ACPI_EINJ_EXECUTE_OPERATION = 5,
971 ACPI_EINJ_CHECK_BUSY_STATUS = 6,
972 ACPI_EINJ_GET_COMMAND_STATUS = 7,
973 ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8,
974 ACPI_EINJ_GET_EXECUTE_TIMINGS = 9,
975 ACPI_EINJ_ACTION_RESERVED = 10, /* 10 and greater are reserved */
976 ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */
977 };
978
979 /* Values for Instruction field above */
980
981 enum AcpiEinjInstructions
982 {
983 ACPI_EINJ_READ_REGISTER = 0,
984 ACPI_EINJ_READ_REGISTER_VALUE = 1,
985 ACPI_EINJ_WRITE_REGISTER = 2,
986 ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
987 ACPI_EINJ_NOOP = 4,
988 ACPI_EINJ_FLUSH_CACHELINE = 5,
989 ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */
990 };
991
992 typedef struct acpi_einj_error_type_with_addr
993 {
994 UINT32 ErrorType;
995 UINT32 VendorStructOffset;
996 UINT32 Flags;
997 UINT32 ApicId;
998 UINT64 Address;
999 UINT64 Range;
1000 UINT32 PcieId;
1001
1002 } ACPI_EINJ_ERROR_TYPE_WITH_ADDR;
1003
1004 typedef struct acpi_einj_vendor
1005 {
1006 UINT32 Length;
1007 UINT32 PcieId;
1008 UINT16 VendorId;
1009 UINT16 DeviceId;
1010 UINT8 RevisionId;
1011 UINT8 Reserved[3];
1012
1013 } ACPI_EINJ_VENDOR;
1014
1015
1016 /* EINJ Trigger Error Action Table */
1017
1018 typedef struct acpi_einj_trigger
1019 {
1020 UINT32 HeaderSize;
1021 UINT32 Revision;
1022 UINT32 TableSize;
1023 UINT32 EntryCount;
1024
1025 } ACPI_EINJ_TRIGGER;
1026
1027 /* Command status return values */
1028
1029 enum AcpiEinjCommandStatus
1030 {
1031 ACPI_EINJ_SUCCESS = 0,
1032 ACPI_EINJ_FAILURE = 1,
1033 ACPI_EINJ_INVALID_ACCESS = 2,
1034 ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */
1035 };
1036
1037
1038 /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
1039
1040 #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1)
1041 #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1)
1042 #define ACPI_EINJ_PROCESSOR_FATAL (1<<2)
1043 #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3)
1044 #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4)
1045 #define ACPI_EINJ_MEMORY_FATAL (1<<5)
1046 #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6)
1047 #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7)
1048 #define ACPI_EINJ_PCIX_FATAL (1<<8)
1049 #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9)
1050 #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10)
1051 #define ACPI_EINJ_PLATFORM_FATAL (1<<11)
1052 #define ACPI_EINJ_VENDOR_DEFINED (1<<31)
1053
1054
1055 /*******************************************************************************
1056 *
1057 * ERST - Error Record Serialization Table (ACPI 4.0)
1058 * Version 1
1059 *
1060 ******************************************************************************/
1061
1062 typedef struct acpi_table_erst
1063 {
1064 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1065 UINT32 HeaderLength;
1066 UINT32 Reserved;
1067 UINT32 Entries;
1068
1069 } ACPI_TABLE_ERST;
1070
1071
1072 /* ERST Serialization Entries (actions) */
1073
1074 typedef struct acpi_erst_entry
1075 {
1076 ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */
1077
1078 } ACPI_ERST_ENTRY;
1079
1080 /* Masks for Flags field above */
1081
1082 #define ACPI_ERST_PRESERVE (1)
1083
1084 /* Values for Action field above */
1085
1086 enum AcpiErstActions
1087 {
1088 ACPI_ERST_BEGIN_WRITE = 0,
1089 ACPI_ERST_BEGIN_READ = 1,
1090 ACPI_ERST_BEGIN_CLEAR = 2,
1091 ACPI_ERST_END = 3,
1092 ACPI_ERST_SET_RECORD_OFFSET = 4,
1093 ACPI_ERST_EXECUTE_OPERATION = 5,
1094 ACPI_ERST_CHECK_BUSY_STATUS = 6,
1095 ACPI_ERST_GET_COMMAND_STATUS = 7,
1096 ACPI_ERST_GET_RECORD_ID = 8,
1097 ACPI_ERST_SET_RECORD_ID = 9,
1098 ACPI_ERST_GET_RECORD_COUNT = 10,
1099 ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
1100 ACPI_ERST_NOT_USED = 12,
1101 ACPI_ERST_GET_ERROR_RANGE = 13,
1102 ACPI_ERST_GET_ERROR_LENGTH = 14,
1103 ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
1104 ACPI_ERST_EXECUTE_TIMINGS = 16,
1105 ACPI_ERST_ACTION_RESERVED = 17 /* 17 and greater are reserved */
1106 };
1107
1108 /* Values for Instruction field above */
1109
1110 enum AcpiErstInstructions
1111 {
1112 ACPI_ERST_READ_REGISTER = 0,
1113 ACPI_ERST_READ_REGISTER_VALUE = 1,
1114 ACPI_ERST_WRITE_REGISTER = 2,
1115 ACPI_ERST_WRITE_REGISTER_VALUE = 3,
1116 ACPI_ERST_NOOP = 4,
1117 ACPI_ERST_LOAD_VAR1 = 5,
1118 ACPI_ERST_LOAD_VAR2 = 6,
1119 ACPI_ERST_STORE_VAR1 = 7,
1120 ACPI_ERST_ADD = 8,
1121 ACPI_ERST_SUBTRACT = 9,
1122 ACPI_ERST_ADD_VALUE = 10,
1123 ACPI_ERST_SUBTRACT_VALUE = 11,
1124 ACPI_ERST_STALL = 12,
1125 ACPI_ERST_STALL_WHILE_TRUE = 13,
1126 ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
1127 ACPI_ERST_GOTO = 15,
1128 ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
1129 ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
1130 ACPI_ERST_MOVE_DATA = 18,
1131 ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */
1132 };
1133
1134 /* Command status return values */
1135
1136 enum AcpiErstCommandStatus
1137 {
1138 ACPI_ERST_SUCCESS = 0,
1139 ACPI_ERST_NO_SPACE = 1,
1140 ACPI_ERST_NOT_AVAILABLE = 2,
1141 ACPI_ERST_FAILURE = 3,
1142 ACPI_ERST_RECORD_EMPTY = 4,
1143 ACPI_ERST_NOT_FOUND = 5,
1144 ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */
1145 };
1146
1147
1148 /* Error Record Serialization Information */
1149
1150 typedef struct acpi_erst_info
1151 {
1152 UINT16 Signature; /* Should be "ER" */
1153 UINT8 Data[48];
1154
1155 } ACPI_ERST_INFO;
1156
1157
1158 /*******************************************************************************
1159 *
1160 * FPDT - Firmware Performance Data Table (ACPI 5.0)
1161 * Version 1
1162 *
1163 ******************************************************************************/
1164
1165 typedef struct acpi_table_fpdt
1166 {
1167 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1168
1169 } ACPI_TABLE_FPDT;
1170
1171
1172 /* FPDT subtable header (Performance Record Structure) */
1173
1174 typedef struct acpi_fpdt_header
1175 {
1176 UINT16 Type;
1177 UINT8 Length;
1178 UINT8 Revision;
1179
1180 } ACPI_FPDT_HEADER;
1181
1182 /* Values for Type field above */
1183
1184 enum AcpiFpdtType
1185 {
1186 ACPI_FPDT_TYPE_BOOT = 0,
1187 ACPI_FPDT_TYPE_S3PERF = 1
1188 };
1189
1190
1191 /*
1192 * FPDT subtables
1193 */
1194
1195 /* 0: Firmware Basic Boot Performance Record */
1196
1197 typedef struct acpi_fpdt_boot_pointer
1198 {
1199 ACPI_FPDT_HEADER Header;
1200 UINT8 Reserved[4];
1201 UINT64 Address;
1202
1203 } ACPI_FPDT_BOOT_POINTER;
1204
1205
1206 /* 1: S3 Performance Table Pointer Record */
1207
1208 typedef struct acpi_fpdt_s3pt_pointer
1209 {
1210 ACPI_FPDT_HEADER Header;
1211 UINT8 Reserved[4];
1212 UINT64 Address;
1213
1214 } ACPI_FPDT_S3PT_POINTER;
1215
1216
1217 /*
1218 * S3PT - S3 Performance Table. This table is pointed to by the
1219 * S3 Pointer Record above.
1220 */
1221 typedef struct acpi_table_s3pt
1222 {
1223 UINT8 Signature[4]; /* "S3PT" */
1224 UINT32 Length;
1225
1226 } ACPI_TABLE_S3PT;
1227
1228
1229 /*
1230 * S3PT Subtables (Not part of the actual FPDT)
1231 */
1232
1233 /* Values for Type field in S3PT header */
1234
1235 enum AcpiS3ptType
1236 {
1237 ACPI_S3PT_TYPE_RESUME = 0,
1238 ACPI_S3PT_TYPE_SUSPEND = 1,
1239 ACPI_FPDT_BOOT_PERFORMANCE = 2
1240 };
1241
1242 typedef struct acpi_s3pt_resume
1243 {
1244 ACPI_FPDT_HEADER Header;
1245 UINT32 ResumeCount;
1246 UINT64 FullResume;
1247 UINT64 AverageResume;
1248
1249 } ACPI_S3PT_RESUME;
1250
1251 typedef struct acpi_s3pt_suspend
1252 {
1253 ACPI_FPDT_HEADER Header;
1254 UINT64 SuspendStart;
1255 UINT64 SuspendEnd;
1256
1257 } ACPI_S3PT_SUSPEND;
1258
1259
1260 /*
1261 * FPDT Boot Performance Record (Not part of the actual FPDT)
1262 */
1263 typedef struct acpi_fpdt_boot
1264 {
1265 ACPI_FPDT_HEADER Header;
1266 UINT8 Reserved[4];
1267 UINT64 ResetEnd;
1268 UINT64 LoadStart;
1269 UINT64 StartupStart;
1270 UINT64 ExitServicesEntry;
1271 UINT64 ExitServicesExit;
1272
1273 } ACPI_FPDT_BOOT;
1274
1275
1276 /*******************************************************************************
1277 *
1278 * GTDT - Generic Timer Description Table (ACPI 5.1)
1279 * Version 2
1280 *
1281 ******************************************************************************/
1282
1283 typedef struct acpi_table_gtdt
1284 {
1285 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1286 UINT64 CounterBlockAddresss;
1287 UINT32 Reserved;
1288 UINT32 SecureEl1Interrupt;
1289 UINT32 SecureEl1Flags;
1290 UINT32 NonSecureEl1Interrupt;
1291 UINT32 NonSecureEl1Flags;
1292 UINT32 VirtualTimerInterrupt;
1293 UINT32 VirtualTimerFlags;
1294 UINT32 NonSecureEl2Interrupt;
1295 UINT32 NonSecureEl2Flags;
1296 UINT64 CounterReadBlockAddress;
1297 UINT32 PlatformTimerCount;
1298 UINT32 PlatformTimerOffset;
1299
1300 } ACPI_TABLE_GTDT;
1301
1302 /* Flag Definitions: Timer Block Physical Timers and Virtual timers */
1303
1304 #define ACPI_GTDT_INTERRUPT_MODE (1)
1305 #define ACPI_GTDT_INTERRUPT_POLARITY (1<<1)
1306 #define ACPI_GTDT_ALWAYS_ON (1<<2)
1307
1308 typedef struct acpi_gtdt_el2
1309 {
1310 UINT32 VirtualEL2TimerGsiv;
1311 UINT32 VirtualEL2TimerFlags;
1312 } ACPI_GTDT_EL2;
1313
1314
1315 /* Common GTDT subtable header */
1316
1317 typedef struct acpi_gtdt_header
1318 {
1319 UINT8 Type;
1320 UINT16 Length;
1321
1322 } ACPI_GTDT_HEADER;
1323
1324 /* Values for GTDT subtable type above */
1325
1326 enum AcpiGtdtType
1327 {
1328 ACPI_GTDT_TYPE_TIMER_BLOCK = 0,
1329 ACPI_GTDT_TYPE_WATCHDOG = 1,
1330 ACPI_GTDT_TYPE_RESERVED = 2 /* 2 and greater are reserved */
1331 };
1332
1333
1334 /* GTDT Subtables, correspond to Type in acpi_gtdt_header */
1335
1336 /* 0: Generic Timer Block */
1337
1338 typedef struct acpi_gtdt_timer_block
1339 {
1340 ACPI_GTDT_HEADER Header;
1341 UINT8 Reserved;
1342 UINT64 BlockAddress;
1343 UINT32 TimerCount;
1344 UINT32 TimerOffset;
1345
1346 } ACPI_GTDT_TIMER_BLOCK;
1347
1348 /* Timer Sub-Structure, one per timer */
1349
1350 typedef struct acpi_gtdt_timer_entry
1351 {
1352 UINT8 FrameNumber;
1353 UINT8 Reserved[3];
1354 UINT64 BaseAddress;
1355 UINT64 El0BaseAddress;
1356 UINT32 TimerInterrupt;
1357 UINT32 TimerFlags;
1358 UINT32 VirtualTimerInterrupt;
1359 UINT32 VirtualTimerFlags;
1360 UINT32 CommonFlags;
1361
1362 } ACPI_GTDT_TIMER_ENTRY;
1363
1364 /* Flag Definitions: TimerFlags and VirtualTimerFlags above */
1365
1366 #define ACPI_GTDT_GT_IRQ_MODE (1)
1367 #define ACPI_GTDT_GT_IRQ_POLARITY (1<<1)
1368
1369 /* Flag Definitions: CommonFlags above */
1370
1371 #define ACPI_GTDT_GT_IS_SECURE_TIMER (1)
1372 #define ACPI_GTDT_GT_ALWAYS_ON (1<<1)
1373
1374
1375 /* 1: SBSA Generic Watchdog Structure */
1376
1377 typedef struct acpi_gtdt_watchdog
1378 {
1379 ACPI_GTDT_HEADER Header;
1380 UINT8 Reserved;
1381 UINT64 RefreshFrameAddress;
1382 UINT64 ControlFrameAddress;
1383 UINT32 TimerInterrupt;
1384 UINT32 TimerFlags;
1385
1386 } ACPI_GTDT_WATCHDOG;
1387
1388 /* Flag Definitions: TimerFlags above */
1389
1390 #define ACPI_GTDT_WATCHDOG_IRQ_MODE (1)
1391 #define ACPI_GTDT_WATCHDOG_IRQ_POLARITY (1<<1)
1392 #define ACPI_GTDT_WATCHDOG_SECURE (1<<2)
1393
1394
1395 /*******************************************************************************
1396 *
1397 * HEST - Hardware Error Source Table (ACPI 4.0)
1398 * Version 1
1399 *
1400 ******************************************************************************/
1401
1402 typedef struct acpi_table_hest
1403 {
1404 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1405 UINT32 ErrorSourceCount;
1406
1407 } ACPI_TABLE_HEST;
1408
1409
1410 /* HEST subtable header */
1411
1412 typedef struct acpi_hest_header
1413 {
1414 UINT16 Type;
1415 UINT16 SourceId;
1416
1417 } ACPI_HEST_HEADER;
1418
1419
1420 /* Values for Type field above for subtables */
1421
1422 enum AcpiHestTypes
1423 {
1424 ACPI_HEST_TYPE_IA32_CHECK = 0,
1425 ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
1426 ACPI_HEST_TYPE_IA32_NMI = 2,
1427 ACPI_HEST_TYPE_NOT_USED3 = 3,
1428 ACPI_HEST_TYPE_NOT_USED4 = 4,
1429 ACPI_HEST_TYPE_NOT_USED5 = 5,
1430 ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
1431 ACPI_HEST_TYPE_AER_ENDPOINT = 7,
1432 ACPI_HEST_TYPE_AER_BRIDGE = 8,
1433 ACPI_HEST_TYPE_GENERIC_ERROR = 9,
1434 ACPI_HEST_TYPE_GENERIC_ERROR_V2 = 10,
1435 ACPI_HEST_TYPE_IA32_DEFERRED_CHECK = 11,
1436 ACPI_HEST_TYPE_RESERVED = 12 /* 12 and greater are reserved */
1437 };
1438
1439
1440 /*
1441 * HEST substructures contained in subtables
1442 */
1443
1444 /*
1445 * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and
1446 * ACPI_HEST_IA_CORRECTED structures.
1447 */
1448 typedef struct acpi_hest_ia_error_bank
1449 {
1450 UINT8 BankNumber;
1451 UINT8 ClearStatusOnInit;
1452 UINT8 StatusFormat;
1453 UINT8 Reserved;
1454 UINT32 ControlRegister;
1455 UINT64 ControlData;
1456 UINT32 StatusRegister;
1457 UINT32 AddressRegister;
1458 UINT32 MiscRegister;
1459
1460 } ACPI_HEST_IA_ERROR_BANK;
1461
1462
1463 /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
1464
1465 typedef struct acpi_hest_aer_common
1466 {
1467 UINT16 Reserved1;
1468 UINT8 Flags;
1469 UINT8 Enabled;
1470 UINT32 RecordsToPreallocate;
1471 UINT32 MaxSectionsPerRecord;
1472 UINT32 Bus; /* Bus and Segment numbers */
1473 UINT16 Device;
1474 UINT16 Function;
1475 UINT16 DeviceControl;
1476 UINT16 Reserved2;
1477 UINT32 UncorrectableMask;
1478 UINT32 UncorrectableSeverity;
1479 UINT32 CorrectableMask;
1480 UINT32 AdvancedCapabilities;
1481
1482 } ACPI_HEST_AER_COMMON;
1483
1484 /* Masks for HEST Flags fields */
1485
1486 #define ACPI_HEST_FIRMWARE_FIRST (1)
1487 #define ACPI_HEST_GLOBAL (1<<1)
1488 #define ACPI_HEST_GHES_ASSIST (1<<2)
1489
1490 /*
1491 * Macros to access the bus/segment numbers in Bus field above:
1492 * Bus number is encoded in bits 7:0
1493 * Segment number is encoded in bits 23:8
1494 */
1495 #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF)
1496 #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF)
1497
1498
1499 /* Hardware Error Notification */
1500
1501 typedef struct acpi_hest_notify
1502 {
1503 UINT8 Type;
1504 UINT8 Length;
1505 UINT16 ConfigWriteEnable;
1506 UINT32 PollInterval;
1507 UINT32 Vector;
1508 UINT32 PollingThresholdValue;
1509 UINT32 PollingThresholdWindow;
1510 UINT32 ErrorThresholdValue;
1511 UINT32 ErrorThresholdWindow;
1512
1513 } ACPI_HEST_NOTIFY;
1514
1515 /* Values for Notify Type field above */
1516
1517 enum AcpiHestNotifyTypes
1518 {
1519 ACPI_HEST_NOTIFY_POLLED = 0,
1520 ACPI_HEST_NOTIFY_EXTERNAL = 1,
1521 ACPI_HEST_NOTIFY_LOCAL = 2,
1522 ACPI_HEST_NOTIFY_SCI = 3,
1523 ACPI_HEST_NOTIFY_NMI = 4,
1524 ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */
1525 ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */
1526 ACPI_HEST_NOTIFY_GPIO = 7, /* ACPI 6.0 */
1527 ACPI_HEST_NOTIFY_SEA = 8, /* ACPI 6.1 */
1528 ACPI_HEST_NOTIFY_SEI = 9, /* ACPI 6.1 */
1529 ACPI_HEST_NOTIFY_GSIV = 10, /* ACPI 6.1 */
1530 ACPI_HEST_NOTIFY_SOFTWARE_DELEGATED = 11, /* ACPI 6.2 */
1531 ACPI_HEST_NOTIFY_RESERVED = 12 /* 12 and greater are reserved */
1532 };
1533
1534 /* Values for ConfigWriteEnable bitfield above */
1535
1536 #define ACPI_HEST_TYPE (1)
1537 #define ACPI_HEST_POLL_INTERVAL (1<<1)
1538 #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2)
1539 #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
1540 #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4)
1541 #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5)
1542
1543
1544 /*
1545 * HEST subtables
1546 */
1547
1548 /* 0: IA32 Machine Check Exception */
1549
1550 typedef struct acpi_hest_ia_machine_check
1551 {
1552 ACPI_HEST_HEADER Header;
1553 UINT16 Reserved1;
1554 UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
1555 UINT8 Enabled;
1556 UINT32 RecordsToPreallocate;
1557 UINT32 MaxSectionsPerRecord;
1558 UINT64 GlobalCapabilityData;
1559 UINT64 GlobalControlData;
1560 UINT8 NumHardwareBanks;
1561 UINT8 Reserved3[7];
1562
1563 } ACPI_HEST_IA_MACHINE_CHECK;
1564
1565
1566 /* 1: IA32 Corrected Machine Check */
1567
1568 typedef struct acpi_hest_ia_corrected
1569 {
1570 ACPI_HEST_HEADER Header;
1571 UINT16 Reserved1;
1572 UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
1573 UINT8 Enabled;
1574 UINT32 RecordsToPreallocate;
1575 UINT32 MaxSectionsPerRecord;
1576 ACPI_HEST_NOTIFY Notify;
1577 UINT8 NumHardwareBanks;
1578 UINT8 Reserved2[3];
1579
1580 } ACPI_HEST_IA_CORRECTED;
1581
1582
1583 /* 2: IA32 Non-Maskable Interrupt */
1584
1585 typedef struct acpi_hest_ia_nmi
1586 {
1587 ACPI_HEST_HEADER Header;
1588 UINT32 Reserved;
1589 UINT32 RecordsToPreallocate;
1590 UINT32 MaxSectionsPerRecord;
1591 UINT32 MaxRawDataLength;
1592
1593 } ACPI_HEST_IA_NMI;
1594
1595
1596 /* 3,4,5: Not used */
1597
1598 /* 6: PCI Express Root Port AER */
1599
1600 typedef struct acpi_hest_aer_root
1601 {
1602 ACPI_HEST_HEADER Header;
1603 ACPI_HEST_AER_COMMON Aer;
1604 UINT32 RootErrorCommand;
1605
1606 } ACPI_HEST_AER_ROOT;
1607
1608
1609 /* 7: PCI Express AER (AER Endpoint) */
1610
1611 typedef struct acpi_hest_aer
1612 {
1613 ACPI_HEST_HEADER Header;
1614 ACPI_HEST_AER_COMMON Aer;
1615
1616 } ACPI_HEST_AER;
1617
1618
1619 /* 8: PCI Express/PCI-X Bridge AER */
1620
1621 typedef struct acpi_hest_aer_bridge
1622 {
1623 ACPI_HEST_HEADER Header;
1624 ACPI_HEST_AER_COMMON Aer;
1625 UINT32 UncorrectableMask2;
1626 UINT32 UncorrectableSeverity2;
1627 UINT32 AdvancedCapabilities2;
1628
1629 } ACPI_HEST_AER_BRIDGE;
1630
1631
1632 /* 9: Generic Hardware Error Source */
1633
1634 typedef struct acpi_hest_generic
1635 {
1636 ACPI_HEST_HEADER Header;
1637 UINT16 RelatedSourceId;
1638 UINT8 Reserved;
1639 UINT8 Enabled;
1640 UINT32 RecordsToPreallocate;
1641 UINT32 MaxSectionsPerRecord;
1642 UINT32 MaxRawDataLength;
1643 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
1644 ACPI_HEST_NOTIFY Notify;
1645 UINT32 ErrorBlockLength;
1646
1647 } ACPI_HEST_GENERIC;
1648
1649
1650 /* 10: Generic Hardware Error Source, version 2 */
1651
1652 typedef struct acpi_hest_generic_v2
1653 {
1654 ACPI_HEST_HEADER Header;
1655 UINT16 RelatedSourceId;
1656 UINT8 Reserved;
1657 UINT8 Enabled;
1658 UINT32 RecordsToPreallocate;
1659 UINT32 MaxSectionsPerRecord;
1660 UINT32 MaxRawDataLength;
1661 ACPI_GENERIC_ADDRESS ErrorStatusAddress;
1662 ACPI_HEST_NOTIFY Notify;
1663 UINT32 ErrorBlockLength;
1664 ACPI_GENERIC_ADDRESS ReadAckRegister;
1665 UINT64 ReadAckPreserve;
1666 UINT64 ReadAckWrite;
1667
1668 } ACPI_HEST_GENERIC_V2;
1669
1670
1671 /* Generic Error Status block */
1672
1673 typedef struct acpi_hest_generic_status
1674 {
1675 UINT32 BlockStatus;
1676 UINT32 RawDataOffset;
1677 UINT32 RawDataLength;
1678 UINT32 DataLength;
1679 UINT32 ErrorSeverity;
1680
1681 } ACPI_HEST_GENERIC_STATUS;
1682
1683 /* Values for BlockStatus flags above */
1684
1685 #define ACPI_HEST_UNCORRECTABLE (1)
1686 #define ACPI_HEST_CORRECTABLE (1<<1)
1687 #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2)
1688 #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3)
1689 #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */
1690
1691
1692 /* Generic Error Data entry */
1693
1694 typedef struct acpi_hest_generic_data
1695 {
1696 UINT8 SectionType[16];
1697 UINT32 ErrorSeverity;
1698 UINT16 Revision;
1699 UINT8 ValidationBits;
1700 UINT8 Flags;
1701 UINT32 ErrorDataLength;
1702 UINT8 FruId[16];
1703 UINT8 FruText[20];
1704
1705 } ACPI_HEST_GENERIC_DATA;
1706
1707 /* Extension for revision 0x0300 */
1708
1709 typedef struct acpi_hest_generic_data_v300
1710 {
1711 UINT8 SectionType[16];
1712 UINT32 ErrorSeverity;
1713 UINT16 Revision;
1714 UINT8 ValidationBits;
1715 UINT8 Flags;
1716 UINT32 ErrorDataLength;
1717 UINT8 FruId[16];
1718 UINT8 FruText[20];
1719 UINT64 TimeStamp;
1720
1721 } ACPI_HEST_GENERIC_DATA_V300;
1722
1723 /* Values for ErrorSeverity above */
1724
1725 #define ACPI_HEST_GEN_ERROR_RECOVERABLE 0
1726 #define ACPI_HEST_GEN_ERROR_FATAL 1
1727 #define ACPI_HEST_GEN_ERROR_CORRECTED 2
1728 #define ACPI_HEST_GEN_ERROR_NONE 3
1729
1730 /* Flags for ValidationBits above */
1731
1732 #define ACPI_HEST_GEN_VALID_FRU_ID (1)
1733 #define ACPI_HEST_GEN_VALID_FRU_STRING (1<<1)
1734 #define ACPI_HEST_GEN_VALID_TIMESTAMP (1<<2)
1735
1736
1737 /* 11: IA32 Deferred Machine Check Exception (ACPI 6.2) */
1738
1739 typedef struct acpi_hest_ia_deferred_check
1740 {
1741 ACPI_HEST_HEADER Header;
1742 UINT16 Reserved1;
1743 UINT8 Flags; /* See flags ACPI_HEST_GLOBAL, etc. above */
1744 UINT8 Enabled;
1745 UINT32 RecordsToPreallocate;
1746 UINT32 MaxSectionsPerRecord;
1747 ACPI_HEST_NOTIFY Notify;
1748 UINT8 NumHardwareBanks;
1749 UINT8 Reserved2[3];
1750
1751 } ACPI_HEST_IA_DEFERRED_CHECK;
1752
1753
1754 /*******************************************************************************
1755 *
1756 * HMAT - Heterogeneous Memory Attributes Table (ACPI 6.3)
1757 *
1758 ******************************************************************************/
1759
1760 typedef struct acpi_table_hmat
1761 {
1762 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1763 UINT32 Reserved;
1764
1765 } ACPI_TABLE_HMAT;
1766
1767
1768 /* Values for HMAT structure types */
1769
1770 enum AcpiHmatType
1771 {
1772 ACPI_HMAT_TYPE_ADDRESS_RANGE = 0, /* Memory subsystem address range */
1773 ACPI_HMAT_TYPE_LOCALITY = 1, /* System locality latency and bandwidth information */
1774 ACPI_HMAT_TYPE_CACHE = 2, /* Memory side cache information */
1775 ACPI_HMAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */
1776 };
1777
1778 typedef struct acpi_hmat_structure
1779 {
1780 UINT16 Type;
1781 UINT16 Reserved;
1782 UINT32 Length;
1783
1784 } ACPI_HMAT_STRUCTURE;
1785
1786
1787 /*
1788 * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
1789 */
1790
1791 /* 0: Memory proximity domain attributes */
1792
1793 typedef struct acpi_hmat_proximity_domain
1794 {
1795 ACPI_HMAT_STRUCTURE Header;
1796 UINT16 Flags;
1797 UINT16 Reserved1;
1798 UINT32 InitiatorPD; /* Attached Initiator proximity domain */
1799 UINT32 MemoryPD; /* Memory proximity domain */
1800 UINT32 Reserved2;
1801 UINT64 Reserved3;
1802 UINT64 Reserved4;
1803
1804 } ACPI_HMAT_PROXIMITY_DOMAIN;
1805
1806 /* Masks for Flags field above */
1807
1808 #define ACPI_HMAT_INITIATOR_PD_VALID (1) /* 1: InitiatorPD field is valid */
1809
1810
1811 /* 1: System locality latency and bandwidth information */
1812
1813 typedef struct acpi_hmat_locality
1814 {
1815 ACPI_HMAT_STRUCTURE Header;
1816 UINT8 Flags;
1817 UINT8 DataType;
1818 UINT8 MinTransferSize;
1819 UINT8 Reserved1;
1820 UINT32 NumberOfInitiatorPDs;
1821 UINT32 NumberOfTargetPDs;
1822 UINT32 Reserved2;
1823 UINT64 EntryBaseUnit;
1824
1825 } ACPI_HMAT_LOCALITY;
1826
1827 /* Masks for Flags field above */
1828
1829 #define ACPI_HMAT_MEMORY_HIERARCHY (0x0F) /* Bits 0-3 */
1830
1831 /* Values for Memory Hierarchy flags */
1832
1833 #define ACPI_HMAT_MEMORY 0
1834 #define ACPI_HMAT_1ST_LEVEL_CACHE 1
1835 #define ACPI_HMAT_2ND_LEVEL_CACHE 2
1836 #define ACPI_HMAT_3RD_LEVEL_CACHE 3
1837 #define ACPI_HMAT_MINIMUM_XFER_SIZE 0x10 /* Bit 4: ACPI 6.4 */
1838 #define ACPI_HMAT_NON_SEQUENTIAL_XFERS 0x20 /* Bit 5: ACPI 6.4 */
1839
1840
1841 /* Values for DataType field above */
1842
1843 #define ACPI_HMAT_ACCESS_LATENCY 0
1844 #define ACPI_HMAT_READ_LATENCY 1
1845 #define ACPI_HMAT_WRITE_LATENCY 2
1846 #define ACPI_HMAT_ACCESS_BANDWIDTH 3
1847 #define ACPI_HMAT_READ_BANDWIDTH 4
1848 #define ACPI_HMAT_WRITE_BANDWIDTH 5
1849
1850
1851 /* 2: Memory side cache information */
1852
1853 typedef struct acpi_hmat_cache
1854 {
1855 ACPI_HMAT_STRUCTURE Header;
1856 UINT32 MemoryPD;
1857 UINT32 Reserved1;
1858 UINT64 CacheSize;
1859 UINT32 CacheAttributes;
1860 UINT16 Reserved2;
1861 UINT16 NumberOfSMBIOSHandles;
1862
1863 } ACPI_HMAT_CACHE;
1864
1865 /* Masks for CacheAttributes field above */
1866
1867 #define ACPI_HMAT_TOTAL_CACHE_LEVEL (0x0000000F)
1868 #define ACPI_HMAT_CACHE_LEVEL (0x000000F0)
1869 #define ACPI_HMAT_CACHE_ASSOCIATIVITY (0x00000F00)
1870 #define ACPI_HMAT_WRITE_POLICY (0x0000F000)
1871 #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
1872
1873 /* Values for cache associativity flag */
1874
1875 #define ACPI_HMAT_CA_NONE (0)
1876 #define ACPI_HMAT_CA_DIRECT_MAPPED (1)
1877 #define ACPI_HMAT_CA_COMPLEX_CACHE_INDEXING (2)
1878
1879 /* Values for write policy flag */
1880
1881 #define ACPI_HMAT_CP_NONE (0)
1882 #define ACPI_HMAT_CP_WB (1)
1883 #define ACPI_HMAT_CP_WT (2)
1884
1885
1886 /*******************************************************************************
1887 *
1888 * HPET - High Precision Event Timer table
1889 * Version 1
1890 *
1891 * Conforms to "IA-PC HPET (High Precision Event Timers) Specification",
1892 * Version 1.0a, October 2004
1893 *
1894 ******************************************************************************/
1895
1896 typedef struct acpi_table_hpet
1897 {
1898 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1899 UINT32 Id; /* Hardware ID of event timer block */
1900 ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */
1901 UINT8 Sequence; /* HPET sequence number */
1902 UINT16 MinimumTick; /* Main counter min tick, periodic mode */
1903 UINT8 Flags;
1904
1905 } ACPI_TABLE_HPET;
1906
1907 /* Masks for Flags field above */
1908
1909 #define ACPI_HPET_PAGE_PROTECT_MASK (3)
1910
1911 /* Values for Page Protect flags */
1912
1913 enum AcpiHpetPageProtect
1914 {
1915 ACPI_HPET_NO_PAGE_PROTECT = 0,
1916 ACPI_HPET_PAGE_PROTECT4 = 1,
1917 ACPI_HPET_PAGE_PROTECT64 = 2
1918 };
1919
1920
1921 /*******************************************************************************
1922 *
1923 * IBFT - Boot Firmware Table
1924 * Version 1
1925 *
1926 * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b
1927 * Specification", Version 1.01, March 1, 2007
1928 *
1929 * Note: It appears that this table is not intended to appear in the RSDT/XSDT.
1930 * Therefore, it is not currently supported by the disassembler.
1931 *
1932 ******************************************************************************/
1933
1934 typedef struct acpi_table_ibft
1935 {
1936 ACPI_TABLE_HEADER Header; /* Common ACPI table header */
1937 UINT8 Reserved[12];
1938
1939 } ACPI_TABLE_IBFT;
1940
1941
1942 /* IBFT common subtable header */
1943
1944 typedef struct acpi_ibft_header
1945 {
1946 UINT8 Type;
1947 UINT8 Version;
1948 UINT16 Length;
1949 UINT8 Index;
1950 UINT8 Flags;
1951
1952 } ACPI_IBFT_HEADER;
1953
1954 /* Values for Type field above */
1955
1956 enum AcpiIbftType
1957 {
1958 ACPI_IBFT_TYPE_NOT_USED = 0,
1959 ACPI_IBFT_TYPE_CONTROL = 1,
1960 ACPI_IBFT_TYPE_INITIATOR = 2,
1961 ACPI_IBFT_TYPE_NIC = 3,
1962 ACPI_IBFT_TYPE_TARGET = 4,
1963 ACPI_IBFT_TYPE_EXTENSIONS = 5,
1964 ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */
1965 };
1966
1967
1968 /* IBFT subtables */
1969
1970 typedef struct acpi_ibft_control
1971 {
1972 ACPI_IBFT_HEADER Header;
1973 UINT16 Extensions;
1974 UINT16 InitiatorOffset;
1975 UINT16 Nic0Offset;
1976 UINT16 Target0Offset;
1977 UINT16 Nic1Offset;
1978 UINT16 Target1Offset;
1979
1980 } ACPI_IBFT_CONTROL;
1981
1982 typedef struct acpi_ibft_initiator
1983 {
1984 ACPI_IBFT_HEADER Header;
1985 UINT8 SnsServer[16];
1986 UINT8 SlpServer[16];
1987 UINT8 PrimaryServer[16];
1988 UINT8 SecondaryServer[16];
1989 UINT16 NameLength;
1990 UINT16 NameOffset;
1991
1992 } ACPI_IBFT_INITIATOR;
1993
1994 typedef struct acpi_ibft_nic
1995 {
1996 ACPI_IBFT_HEADER Header;
1997 UINT8 IpAddress[16];
1998 UINT8 SubnetMaskPrefix;
1999 UINT8 Origin;
2000 UINT8 Gateway[16];
2001 UINT8 PrimaryDns[16];
2002 UINT8 SecondaryDns[16];
2003 UINT8 Dhcp[16];
2004 UINT16 Vlan;
2005 UINT8 MacAddress[6];
2006 UINT16 PciAddress;
2007 UINT16 NameLength;
2008 UINT16 NameOffset;
2009
2010 } ACPI_IBFT_NIC;
2011
2012 typedef struct acpi_ibft_target
2013 {
2014 ACPI_IBFT_HEADER Header;
2015 UINT8 TargetIpAddress[16];
2016 UINT16 TargetIpSocket;
2017 UINT8 TargetBootLun[8];
2018 UINT8 ChapType;
2019 UINT8 NicAssociation;
2020 UINT16 TargetNameLength;
2021 UINT16 TargetNameOffset;
2022 UINT16 ChapNameLength;
2023 UINT16 ChapNameOffset;
2024 UINT16 ChapSecretLength;
2025 UINT16 ChapSecretOffset;
2026 UINT16 ReverseChapNameLength;
2027 UINT16 ReverseChapNameOffset;
2028 UINT16 ReverseChapSecretLength;
2029 UINT16 ReverseChapSecretOffset;
2030
2031 } ACPI_IBFT_TARGET;
2032
2033
2034 /* Reset to default packing */
2035
2036 #pragma pack()
2037
2038 #endif /* __ACTBL1_H__ */
2039