]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/Acpi64.h
MdePkg: Add the Platform Health Assessment Table (PHAT)
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Acpi64.h
index efbfd8b7a540a130b3de45e4cdd02f099a79dfc3..cd093003805799541696516e809d0c800137510e 100644 (file)
@@ -174,7 +174,7 @@ typedef struct {
 /// FADT Version (as defined in ACPI 6.4 spec.)\r
 ///\r
 #define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x06\r
-#define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x03\r
+#define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x04\r
 \r
 //\r
 // Fixed ACPI Description Table Preferred Power Management Profile\r
@@ -302,7 +302,7 @@ typedef struct {
 \r
 //\r
 // Multiple APIC Description Table APIC structure types\r
-// All other values between 0x0D and 0x7F are reserved and\r
+// All other values between 0x10 and 0x7F are reserved and\r
 // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.\r
 //\r
 #define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC           0x00\r
@@ -321,6 +321,7 @@ typedef struct {
 #define EFI_ACPI_6_4_GIC_MSI_FRAME                  0x0D\r
 #define EFI_ACPI_6_4_GICR                           0x0E\r
 #define EFI_ACPI_6_4_GIC_ITS                        0x0F\r
+#define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP          0x10\r
 \r
 //\r
 // APIC Structure Definitions\r
@@ -589,6 +590,32 @@ typedef struct {
   UINT32  Reserved2;\r
 } EFI_ACPI_6_4_GIC_ITS_STRUCTURE;\r
 \r
+///\r
+/// Multiprocessor Wakeup Structure\r
+///\r
+typedef struct {\r
+  UINT8   Type;\r
+  UINT8   Length;\r
+  UINT16  MailBoxVersion;\r
+  UINT32  Reserved;\r
+  UINT64  MailBoxAddress;\r
+} EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_STRUCTURE;\r
+\r
+///\r
+/// Multiprocessor Wakeup Mailbox Structure\r
+///\r
+typedef struct {\r
+  UINT16  Command;\r
+  UINT16  Reserved;\r
+  UINT32  AcpiId;\r
+  UINT64  WakeupVector;\r
+  UINT8   ReservedForOs[2032];\r
+  UINT8   ReservedForFirmware[2048];\r
+} EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_STRUCTURE;\r
+\r
+#define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_NOOP     0x0000\r
+#define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_WAKEUP   0x0001\r
+\r
 ///\r
 /// Smart Battery Description Table (SBST)\r
 ///\r
@@ -783,7 +810,8 @@ typedef struct {
 /// Generic Initiator Affinity Structure Flags. All other bits are reserved\r
 /// and must be 0.\r
 ///\r
-#define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ENABLED (1 << 0)\r
+#define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ENABLED                     BIT0\r
+#define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ARCHITECTURAL_TRANSACTIONS  BIT1\r
 \r
 ///\r
 /// System Locality Distance Information Table (SLIT).\r
@@ -1014,73 +1042,78 @@ typedef struct {
 } EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;\r
 \r
 ///\r
-/// Memory Topology Table definition.\r
+/// Platform Memory Topology Table definition.\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER Header;\r
-  UINT32                      Reserved;\r
-} EFI_ACPI_6_4_MEMORY_TOPOLOGY_TABLE;\r
+  EFI_ACPI_DESCRIPTION_HEADER             Header;\r
+  UINT32                                  NumberOfMemoryDevices;\r
+//EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  MemoryDeviceStructure[NumberOfMemoryDevices];\r
+} EFI_ACPI_6_4_PLATFORM_MEMORY_TOPOLOGY_TABLE;\r
 \r
 ///\r
 /// PMTT Version (as defined in ACPI 6.4 spec.)\r
 ///\r
-#define EFI_ACPI_6_4_MEMORY_TOPOLOGY_TABLE_REVISION 0x01\r
+#define EFI_ACPI_6_4_MEMORY_TOPOLOGY_TABLE_REVISION 0x02\r
 \r
 ///\r
-/// Common Memory Aggregator Device Structure.\r
+/// Common Memory Device.\r
 ///\r
 typedef struct {\r
-  UINT8                       Type;\r
-  UINT8                       Reserved;\r
-  UINT16                      Length;\r
-  UINT16                      Flags;\r
-  UINT16                      Reserved1;\r
-} EFI_ACPI_6_4_PMTT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;\r
+  UINT8                                   Type;\r
+  UINT8                                   Reserved;\r
+  UINT16                                  Length;\r
+  UINT16                                  Flags;\r
+  UINT16                                  Reserved1;\r
+  UINT32                                  NumberOfMemoryDevices;\r
+//UINT8                                   TypeSpecificData[];\r
+//EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  MemoryDeviceStructure[NumberOfMemoryDevices];\r
+} EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE;\r
 \r
 ///\r
-/// Memory Aggregator Device Type\r
+/// Memory Device Type.\r
 ///\r
-#define EFI_ACPI_6_4_PMTT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1\r
-#define EFI_ACPI_6_4_PMTT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2\r
-#define EFI_ACPI_6_4_PMTT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3\r
+#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_SOCKET               0x1\r
+#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_MEMORY_CONTROLLER    0x2\r
+#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_DIMM                 0x3\r
+#define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_VENDOR_SPECIFIC_TYPE 0xFF\r
 \r
 ///\r
-/// Socket Memory Aggregator Device Structure.\r
+/// Socket Type Data.\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;\r
-  UINT16                                                       SocketIdentifier;\r
-  UINT16                                                       Reserved;\r
-//EFI_ACPI_6_4_PMTT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];\r
-} EFI_ACPI_6_4_PMTT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;\r
+  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  CommonMemoryDeviceHeader;\r
+  UINT16                                  SocketIdentifier;\r
+  UINT16                                  Reserved;\r
+//EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  MemoryDeviceStructure[];\r
+} EFI_ACPI_6_4_PMTT_SOCKET_TYPE_DATA;\r
 \r
 ///\r
-/// MemoryController Memory Aggregator Device Structure.\r
+/// Memory Controller Type Data.\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;\r
-  UINT32                                                       ReadLatency;\r
-  UINT32                                                       WriteLatency;\r
-  UINT32                                                       ReadBandwidth;\r
-  UINT32                                                       WriteBandwidth;\r
-  UINT16                                                       OptimalAccessUnit;\r
-  UINT16                                                       OptimalAccessAlignment;\r
-  UINT16                                                       Reserved;\r
-  UINT16                                                       NumberOfProximityDomains;\r
-//UINT32                                                       ProximityDomain[NumberOfProximityDomains];\r
-//EFI_ACPI_6_4_PMTT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];\r
-} EFI_ACPI_6_4_PMTT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;\r
+  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  CommonMemoryDeviceHeader;\r
+  UINT16                                  MemoryControllerIdentifier;\r
+  UINT16                                  Reserved;\r
+//EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  MemoryDeviceStructure[];\r
+} EFI_ACPI_6_4_PMTT_MEMORY_CONTROLLER_TYPE_DATA;\r
 \r
 ///\r
-/// DIMM Memory Aggregator Device Structure.\r
+/// DIMM Type Specific Data.\r
 ///\r
 typedef struct {\r
-  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;\r
-  UINT16                                                       PhysicalComponentIdentifier;\r
-  UINT16                                                       Reserved;\r
-  UINT32                                                       SizeOfDimm;\r
-  UINT32                                                       SmbiosHandle;\r
-} EFI_ACPI_6_4_PMTT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;\r
+  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE  CommonMemoryDeviceHeader;\r
+  UINT32                                  SmbiosHandle;\r
+} EFI_ACPI_6_4_PMTT_DIMM_TYPE_SPECIFIC_DATA;\r
+\r
+///\r
+/// Vendor Specific Type Data.\r
+///\r
+typedef struct {\r
+  EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE        CommonMemoryDeviceHeader;\r
+  UINT8                                         TypeUuid[16];\r
+//EFI_ACPI_6_4_PMTT_VENDOR_SPECIFIC_TYPE_DATA   VendorSpecificData[];\r
+//EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE        MemoryDeviceStructure[];\r
+} EFI_ACPI_6_4_PMTT_VENDOR_SPECIFIC_TYPE_DATA;\r
 \r
 ///\r
 /// Boot Graphics Resource Table definition.\r
@@ -1373,7 +1406,7 @@ typedef struct {
 /// Platform Timer Type\r
 ///\r
 #define EFI_ACPI_6_4_GTDT_GT_BLOCK                       0\r
-#define EFI_ACPI_6_4_GTDT_SBSA_GENERIC_WATCHDOG          1\r
+#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG           1\r
 \r
 ///\r
 /// GT Block Structure\r
@@ -1415,7 +1448,7 @@ typedef struct {
 #define EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY      BIT1\r
 \r
 ///\r
-/// SBSA Generic Watchdog Structure\r
+/// Arm Generic Watchdog Structure\r
 ///\r
 typedef struct {\r
   UINT8   Type;\r
@@ -1425,14 +1458,14 @@ typedef struct {
   UINT64  WatchdogControlFramePhysicalAddress;\r
   UINT32  WatchdogTimerGSIV;\r
   UINT32  WatchdogTimerFlags;\r
-} EFI_ACPI_6_4_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;\r
+} EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE;\r
 \r
 ///\r
-/// SBSA Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.\r
+/// Arm Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.\r
 ///\r
-#define EFI_ACPI_6_4_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0\r
-#define EFI_ACPI_6_4_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1\r
-#define EFI_ACPI_6_4_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2\r
+#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0\r
+#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1\r
+#define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2\r
 \r
 //\r
 // NVDIMM Firmware Interface Table definition.\r
@@ -1471,6 +1504,8 @@ typedef struct {
 //\r
 #define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT      BIT0\r
 #define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID             BIT1\r
+#define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_SPA_LOCATION_COOKIE_VALID          BIT2\r
+\r
 #define EFI_ACPI_6_4_NFIT_GUID_VOLATILE_MEMORY_REGION                             { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }}\r
 #define EFI_ACPI_6_4_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION          { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }}\r
 #define EFI_ACPI_6_4_NFIT_GUID_NVDIMM_CONTROL_REGION                              { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }}\r
@@ -1479,6 +1514,7 @@ typedef struct {
 #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE     { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }}\r
 #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }}\r
 #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT   { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }}\r
+\r
 typedef struct {\r
   UINT16                                      Type;\r
   UINT16                                      Length;\r
@@ -1490,6 +1526,7 @@ typedef struct {
   UINT64                                      SystemPhysicalAddressRangeBase;\r
   UINT64                                      SystemPhysicalAddressRangeLength;\r
   UINT64                                      AddressRangeMemoryMappingAttribute;\r
+  UINT64                                      SPALocationCookie;\r
 } EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE;\r
 \r
 //\r
@@ -1511,6 +1548,7 @@ typedef struct {
 #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF                 BIT4\r
 #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS  BIT5\r
 #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_NOT_MAP_NVDIMM_TO_SPA                          BIT6\r
+\r
 typedef struct {\r
   UINT16                                      Type;\r
   UINT16                                      Length;\r
@@ -1557,6 +1595,7 @@ typedef struct {
 #define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_VALID_FIELDS_MANUFACTURING           BIT0\r
 \r
 #define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED    BIT0\r
+\r
 typedef struct {\r
   UINT16                                      Type;\r
   UINT16                                      Length;\r
@@ -2068,7 +2107,8 @@ typedef struct {
 ///\r
 typedef struct {\r
   UINT8                         MemoryHierarchy:4;\r
-  UINT8                         Reserved:4;\r
+  UINT8                         AccessAttributes:2;\r
+  UINT8                         Reserved:2;\r
 } EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS;\r
 \r
 ///\r
@@ -2080,7 +2120,8 @@ typedef struct {
   UINT32                                                                        Length;\r
   EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS  Flags;\r
   UINT8                                                                         DataType;\r
-  UINT8                                                                         Reserved1[2];\r
+  UINT8                                                                         MinTransferSize;\r
+  UINT8                                                                         Reserved1;\r
   UINT32                                                                        NumberOfInitiatorProximityDomains;\r
   UINT32                                                                        NumberOfTargetProximityDomains;\r
   UINT8                                                                         Reserved2[4];\r
@@ -2315,6 +2356,7 @@ typedef struct {
 #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS     0x02\r
 #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_3_EXTENDED_PCC                  0x03\r
 #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_4_EXTENDED_PCC                  0x04\r
+#define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_5_HW_REGISTERS_COMMUNICATIONS   0x05\r
 \r
 ///\r
 /// PCC Subspace Structure Header\r
@@ -2454,6 +2496,34 @@ typedef struct {
   UINT32                                    Command;\r
 } EFI_ACPI_6_4_PCCT_EXTENDED_PCC_SHARED_MEMORY_REGION_HEADER;\r
 \r
+///\r
+/// Type 5 HW Registers based Communications Subspace Structure\r
+///\r
+typedef struct {\r
+  UINT8                                   Type;\r
+  UINT8                                   Length;\r
+  UINT16                                  Version;\r
+  UINT64                                  BaseAddress;\r
+  UINT64                                  SharedMemoryRangeLength;\r
+  EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE  DoorbellRegister;\r
+  UINT64                                  DoorbellPreserve;\r
+  UINT64                                  DoorbellWrite;\r
+  EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE  CommandCompleteCheckRegister;\r
+  UINT64                                  CommandCompleteCheckMask;\r
+  EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE  ErrorStatusRegister;\r
+  UINT64                                  ErrorStatusMask;\r
+  UINT32                                  NominalLatency;\r
+  UINT32                                  MinimumRequestTurnaroundTime;\r
+} EFI_ACPI_6_4_PCCT_SUBSPACE_5_HW_REGISTERS_COMMUNICATIONS;\r
+\r
+///\r
+/// Reduced PCC Subspace Shared Memory Region\r
+///\r
+typedef struct {\r
+  UINT32      Signature;\r
+//UINT8       CommunicationSubspace[];\r
+} EFI_6_4_PCCT_REDUCED_PCC_SUBSPACE_SHARED_MEMORY_REGION;\r
+\r
 ///\r
 /// Platform Debug Trigger Table (PDTT)\r
 ///\r
@@ -2643,6 +2713,80 @@ typedef struct {
   UINT16                        SpinRev;\r
 } EFI_ACPI_6_4_PPTT_STRUCTURE_ID;\r
 \r
+///\r
+/// Platform Health Assessment Table (PHAT) Format\r
+///\r
+typedef struct {\r
+  EFI_ACPI_DESCRIPTION_HEADER   Header;\r
+//UINT8                         PlatformTelemetryRecords[];\r
+} EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE;\r
+\r
+#define EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE_REVISION 0x01\r
+\r
+///\r
+/// PHAT Record Format\r
+///\r
+typedef struct {\r
+  UINT16  PlatformHealthAssessmentRecordType;\r
+  UINT16  RecordLength;\r
+  UINT8   Revision;\r
+//UINT8   Data[];\r
+} EFI_ACPI_6_4_PHAT_RECORD;\r
+\r
+///\r
+/// PHAT Record Type Format\r
+///\r
+#define EFI_ACPI_6_4_PHAT_RECORD_TYPE_FIRMWARE_VERSION_DATA_RECORD  0x0000\r
+#define EFI_ACPI_6_4_PHAT_RECORD_TYPE_FIRMWARE_HEALTH_DATA_RECORD   0x0001\r
+\r
+///\r
+/// PHAT Version Element\r
+///\r
+typedef struct {\r
+  GUID    ComponentId;\r
+  UINT64  VersionValue;\r
+  UINT32  ProducerId;\r
+} EFI_ACPI_6_4_PHAT_VERSION_ELEMENT;\r
+\r
+///\r
+/// PHAT Firmware Version Data Record\r
+///\r
+typedef struct {\r
+  UINT16  PlatformRecordType;\r
+  UINT16  RecordLength;\r
+  UINT8   Revision;\r
+  UINT8   Reserved[3];\r
+  UINT32  RecordCount;\r
+//UINT8   PhatVersionElement[];\r
+} EFI_ACPI_6_4_PHAT_FIRMWARE_VERISON_DATA_RECORD;\r
+\r
+#define EFI_ACPI_6_4_PHAT_FIRMWARE_VERSION_DATA_RECORD_REVISION   0x01\r
+\r
+///\r
+/// Firmware Health Data Record Structure\r
+///\r
+typedef struct {\r
+  UINT16  PlatformRecordType;\r
+  UINT16  RecordLength;\r
+  UINT8   Revision;\r
+  UINT16  Reserved;\r
+  UINT8   AmHealthy;\r
+  GUID    DeviceSignature;\r
+  UINT32  DeviceSpecificDataOffset;\r
+//UINT8   DevicePath[];\r
+//UINT8   DeviceSpecificData[];\r
+} EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_STRUCTURE;\r
+\r
+#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_REVISION  0x01\r
+\r
+///\r
+/// Firmware Health Data Record device health state\r
+///\r
+#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ERRORS_FOUND      0x00\r
+#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_NO_ERRORS_FOUND   0x01\r
+#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_UNKNOWN           0x02\r
+#define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ADVISORY          0x03\r
+\r
 //\r
 // Known table signatures\r
 //\r
@@ -2832,11 +2976,6 @@ typedef struct {
 ///\r
 #define EFI_ACPI_6_4_DMA_REMAPPING_TABLE_SIGNATURE  SIGNATURE_32('D', 'M', 'A', 'R')\r
 \r
-///\r
-/// "DPPT" DMA Protection Policy Table\r
-///\r
-#define EFI_ACPI_6_4_DMA_PROTECTION_POLICY_TABLE_SIGNATURE  SIGNATURE_32('D', 'P', 'P', 'T')\r
-\r
 ///\r
 /// "DRTM" Dynamic Root of Trust for Measurement Table\r
 ///\r
@@ -2892,6 +3031,11 @@ typedef struct {
 ///\r
 #define EFI_ACPI_6_4_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE  SIGNATURE_32('P', 'C', 'C', 'T')\r
 \r
+///\r
+/// "PHAT" Platform Health Assessment Table\r
+///\r
+#define EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE_SIGNATURE SIGNATURE_32('P', 'H', 'A', 'T')\r
+\r
 ///\r
 /// "SDEI" Software Delegated Exceptions Interface Table\r
 ///\r