Skip to content

Commit 4b464e8

Browse files
DynamicTablesPkg: Add CXL CEDT namespace objects
- Add objects for CEDT CHBS and CEDT CFMWS. These describe CXL host bridges and CXL fixed memory windows, respectively. Signed-off-by: Nick Graves <[email protected]>
1 parent 7711e8a commit 4b464e8

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h

100755100644
+56
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ typedef enum ArchCommonObjectID {
6262
EArchCommonObjStaInfo, ///< 34 - _STA (Device Status) Info
6363
EArchCommonObjMemoryRangeDescriptor, ///< 35 - Memory Range Descriptor
6464
EArchCommonObjGenericDbg2DeviceInfo, ///< 36 - Generic DBG2 Device Info
65+
EArchCommonObjCxlHostBridgeInfo, ///< 37 - CXL Host Bridge Info
66+
EArchCommonObjCxlFixedMemoryWindowInfo, ///< 38 - CXL Fixed Memory Window Info
6567
EArchCommonObjMax
6668
} EARCH_COMMON_OBJECT_ID;
6769

@@ -850,6 +852,60 @@ typedef struct CmArchCommonDbg2DeviceInfo {
850852
CHAR8 ObjectName[AML_NAME_SEG_SIZE + 1];
851853
} CM_ARCH_COMMON_DBG2_DEVICE_INFO;
852854

855+
/** A structure that describes a CXL Host Bridge Structure (Type 0).
856+
857+
ID: EArchCommonObjCxlHostBridgeInfo
858+
*/
859+
860+
typedef struct CmArchCommonCxlHostBridgeInfo {
861+
/// Token to identify this object.
862+
CM_OBJECT_TOKEN Token;
863+
864+
/// Unique id to associate with a host bridge instance.
865+
UINT32 Uid;
866+
867+
/// CXL version.
868+
UINT32 Version;
869+
870+
/// Base address of the component registers.
871+
UINT64 ComponentRegisterBase;
872+
} CM_ARCH_COMMON_CXL_HOST_BRIDGE_INFO;
873+
874+
#define CFMWS_MAX_INTERLEAVE_WAYS (16)
875+
876+
/** A structure that describes the CXL Fixed Memory Window Structure (Type 1).
877+
878+
ID: EArchCommonObjCxlFixedMemoryWindowInfo
879+
*/
880+
typedef struct CmArchCommonCxlFixedMemoryWindowInfo {
881+
/// Base host physical address. Should be 256 MB aligned.
882+
UINT64 BaseHostPhysicalAddress;
883+
884+
/// Size of the window in bytes. Should be 256 MB aligned.
885+
UINT64 WindowSizeBytes;
886+
887+
/// Number of ways the memory region is interleaved.
888+
UINT8 NumberOfInterleaveWays;
889+
890+
/// Interleave arithmetic method.
891+
UINT8 InterleaveArithmetic;
892+
893+
/// Number of consecutive bytes per interleave.
894+
UINT32 HostBridgeInterleaveGranularity;
895+
896+
/// Bit vector of window restriction settings.
897+
UINT16 WindowRestrictions;
898+
899+
/// ID of Quality of Service Throttling Group for this window.
900+
UINT16 QtgId;
901+
902+
/// Host bridge UIDs that are part of the interleave configuration.
903+
/// The number of InterleaveTargetTokens is equal to NumberOfInterleaveWays.
904+
/// Each array element identifies a CM_ARCH_COMMON_CXL_HOST_BRIDGE_INFO
905+
/// structure via token matching.
906+
CM_OBJECT_TOKEN InterleaveTargetTokens[CFMWS_MAX_INTERLEAVE_WAYS];
907+
} CM_ARCH_COMMON_CXL_FIXED_MEMORY_WINDOW_INFO;
908+
853909
#pragma pack()
854910

855911
#endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_

0 commit comments

Comments
 (0)