Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions DynamicTablesPkg/DynamicTables.dsc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#
DynamicTablesPkg/Library/Acpi/Common/AcpiDbg2Lib/AcpiDbg2Lib.inf
DynamicTablesPkg/Library/Acpi/Common/AcpiFadtLib/AcpiFadtLib.inf
DynamicTablesPkg/Library/Acpi/Common/AcpiHmatLib/AcpiHmatLib.inf
DynamicTablesPkg/Library/Acpi/Common/AcpiMcfgLib/AcpiMcfgLib.inf
DynamicTablesPkg/Library/Acpi/Common/AcpiPcctLib/AcpiPcctLib.inf
DynamicTablesPkg/Library/Acpi/Common/AcpiPpttLib/AcpiPpttLib.inf
Expand Down Expand Up @@ -71,6 +72,7 @@
# Generators
# Common
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiFadtLib/AcpiFadtLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiHmatLib/AcpiHmatLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiSratLib/AcpiSratLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiSpmiLib/AcpiSpmiLib.inf
# X64 specific
Expand Down Expand Up @@ -105,6 +107,7 @@
# Common
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiDbg2Lib/AcpiDbg2Lib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiFadtLib/AcpiFadtLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiHmatLib/AcpiHmatLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiMcfgLib/AcpiMcfgLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiPcctLib/AcpiPcctLib.inf
NULL|DynamicTablesPkg/Library/Acpi/Common/AcpiPpttLib/AcpiPpttLib.inf
Expand Down
3 changes: 3 additions & 0 deletions DynamicTablesPkg/Include/AcpiTableGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ The Dynamic Tables Framework implements the following ACPI table generators:
is in the way the ACPI Table Data is generated from an AML file.
- FADT : The FADT generator collates the required platform information from
the Configuration Manager and builds the FADT table.
- HMAT : The HMAT generator collates the required platform information from
the Configuration Manager and builds the HMAT table.
- MADT : The MADT generator collates the GIC information from the
Configuration Manager and builds the MADT table.
- GTDT : The GTDT generator collates the Timer information from the
Expand Down Expand Up @@ -95,6 +97,7 @@ typedef enum StdAcpiTableId {
EStdAcpiTableIdDsdt = EStdAcpiTableIdRaw, ///< DSDT Generator
EStdAcpiTableIdSsdt = EStdAcpiTableIdRaw, ///< SSDT Generator
EStdAcpiTableIdFadt, ///< FADT Generator
EStdAcpiTableIdHmat, ///< HMAT Generator
EStdAcpiTableIdMadt, ///< MADT Generator
EStdAcpiTableIdGtdt, ///< GTDT Generator
EStdAcpiTableIdDbg2, ///< DBG2 Generator
Expand Down
87 changes: 87 additions & 0 deletions DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@ typedef enum ArchCommonObjectID {
EArchCommonObjPssInfo, ///< 32 - P-State status (PSS) Info
EArchCommonObjPpcInfo, ///< 33 - P-State control (PPC) Info
EArchCommonObjStaInfo, ///< 34 - _STA (Device Status) Info
EArchCommonObjMemoryProxDomainAttrInfo, ///< 35 - Memory Proximity Attribute Info
EArchCommonObjMemoryLatBwInfo, ///< 36 - Memory Latency and Bandwidth Info
EArchCommonObjInitiatorDomainList, ///< 37 - Memory Initiator Domain List
EArchCommonObjTargetDomainList, ///< 38 - Memory Target Domain List
EArchCommonObjRelativeDistanceEntry, ///< 39 - Memory Relative Distance Entry
EArchCommonObjMemoryCacheInfo, ///< 40 - Memory Cache Info
EArchCommonObjSmbiosHandle, ///< 41 - Smbios Handles
EArchCommonObjMax
} EARCH_COMMON_OBJECT_ID;

Expand Down Expand Up @@ -812,6 +819,86 @@ typedef struct CmArchCommonStaInfo {
UINT32 DeviceStatus;
} CM_ARCH_COMMON_STA_INFO;

/** A structure that describes the Memory Proximity Domain Attribute.

ID: EArchCommonObjMemoryProxDomainAttrInfo
*/

typedef struct CmArchCommonMemoryProxDomainAttrInfo {
UINT16 Type;
UINT16 Flags;
UINT32 ProcessorProximityDomain;
UINT32 MemoryProximityDomain;
} CM_ARCH_COMMON_MEMORY_PROX_DOMAIN_ATTR_INFO;

/** A structure that describes the Memory Latency Bandwidth Info.

ID: EArchCommonObjMemoryLatBwInfo
*/

typedef struct CmArchCommonMemoryLatBwInfo {
UINT8 Flags;
UINT8 DataType;
UINT8 MinTransferSize;
UINT32 InitiatorProximityDomainsNumber;
UINT32 TargetProximityDomainsNumber;
UINT64 EntryBaseUnit;
// Token referencing CM_ARCH_COMMON_INITIATOR_DOMAIN_LIST
CM_ARCH_COMMON_OBJ_REF InitiatorProximityDomainListToken;
// Token referencing CM_ARCH_COMMON_TARGET_DOMAIN_LIST
CM_ARCH_COMMON_OBJ_REF TargetProximityDomainListToken;
// Token referencing CM_ARCH_COMMON_RELATIVE_DISTANCE_ENTRY
CM_ARCH_COMMON_OBJ_REF RelativeDistanceEntryToken;
} CM_ARCH_COMMON_MEMORY_LAT_BW_INFO;

/** A structure that describes the Initiator Proximity Domain List Info.

ID: EArchCommonObjInitiatorDomainList
*/
typedef struct CmArchCommonInitiatorProximityDomainList {
UINT32 InitiatorProximityDomainList;
} CM_ARCH_COMMON_INITIATOR_DOMAIN_LIST;

/** A structure that describes the Target Proximity Domain List Info.

ID: EArchCommonObjTargetDomainList
*/
typedef struct CmArchCommonTargetProximityDomainList {
UINT32 TargetProximityDomainList;
} CM_ARCH_COMMON_TARGET_DOMAIN_LIST;

/** A structure that describes the Relative Distance Entry Info.

ID: EArchCommonObjRelativeDistanceEntry
*/
typedef struct CmArchCommonRelativeDistanceEntry
UINT16 RelativeDistanceEntry;
}
CM_ARCH_COMMON_RELATIVE_DISTANCE_ENTRY;

/** A structure that describes Memory Cache Info.

ID: EArchCommonObjMemoryCacheInfo
*/

typedef struct CmArchCommonMemoryCacheInfo {
UINT32 MemoryProximityDomain;
UINT64 MemorySideCacheSize;
UINT32 CacheAttributes;
UINT16 NumSmbiosHandles;
// Token referencing CM_ARCH_COMMON_SMBIOS_HANDLES
CM_ARCH_COMMON_OBJ_REF SmbiosHandlesToken;
} CM_ARCH_COMMON_MEMORY_CACHE_INFO;

/** A structure that describes Smbio Handles.

ID: EArchCommonObjSmbiosHandle
*/

typedef struct CmArchCommonSmbioHandles {
UINT16 SmbiosHandles;
} CM_ARCH_COMMON_SMBIOS_HANDLES;

#pragma pack()

#endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
1 change: 1 addition & 0 deletions DynamicTablesPkg/Include/TableGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ _______________________________________________________________________________
8 - SPCR
9 - MCFG
10 - PPTT
11 - HMAT

Standard SMBIOS Table IDs:
0 - Reserved
Expand Down
25 changes: 25 additions & 0 deletions DynamicTablesPkg/Library/Acpi/Common/AcpiHmatLib/AcpiHmatLib.inf
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## @file
# HMAT Table Generator
#
# Copyright (c) 2025, Arm Limited. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
##

[Defines]
INF_VERSION = 0x00010019
BASE_NAME = AcpiHmatLib
FILE_GUID = 1724d37a-fb05-4fe6-bb13-c04a46efe0ac
VERSION_STRING = 1.0
MODULE_TYPE = DXE_DRIVER
LIBRARY_CLASS = NULL|DXE_DRIVER
CONSTRUCTOR = AcpiHmatLibConstructor
DESTRUCTOR = AcpiHmatLibDestructor

[Sources]
HmatGenerator.c

[Packages]
MdePkg/MdePkg.dec
EmbeddedPkg/EmbeddedPkg.dec
DynamicTablesPkg/DynamicTablesPkg.dec
Loading
Loading