@@ -62,6 +62,8 @@ typedef enum ArchCommonObjectID {
62
62
EArchCommonObjStaInfo , ///< 34 - _STA (Device Status) Info
63
63
EArchCommonObjMemoryRangeDescriptor , ///< 35 - Memory Range Descriptor
64
64
EArchCommonObjGenericDbg2DeviceInfo , ///< 36 - Generic DBG2 Device Info
65
+ EArchCommonObjCxlHostBridgeInfo , ///< 37 - CXL Host Bridge Info
66
+ EArchCommonObjCxlFixedMemoryWindowInfo , ///< 38 - CXL Fixed Memory Window Info
65
67
EArchCommonObjMax
66
68
} EARCH_COMMON_OBJECT_ID ;
67
69
@@ -850,6 +852,60 @@ typedef struct CmArchCommonDbg2DeviceInfo {
850
852
CHAR8 ObjectName [AML_NAME_SEG_SIZE + 1 ];
851
853
} CM_ARCH_COMMON_DBG2_DEVICE_INFO ;
852
854
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
+
853
909
#pragma pack()
854
910
855
911
#endif // ARCH_COMMON_NAMESPACE_OBJECTS_H_
0 commit comments