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