63 EArmGicItsSubTableType,
101 IN OUT UINT32 *ArchOffset
106 ASSERT (CfgMgrProtocol !=
NULL);
107 ASSERT (ArchOffset !=
NULL);
109 Status = GetEArmObjGicCInfo (
113 &mSratSubTable[EArmGicCSubTableType].Count
115 if (EFI_ERROR (Status)) {
118 "ERROR: SRAT: Failed to get GICC Info. Status = %r\n",
124 if (mSratSubTable[EArmGicCSubTableType].Count == 0) {
127 "ERROR: SRAT: GIC CPU Interface information not provided.\n"
130 return EFI_INVALID_PARAMETER;
133 Status = GetEArmObjGicItsInfo (
137 &mSratSubTable[EArmGicItsSubTableType].Count
139 if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {
142 "ERROR: SRAT: Failed to get GIC ITS Info. Status = %r\n",
148 mSratSubTable[EArmGicCSubTableType].
Offset = *ArchOffset;
150 mSratSubTable[EArmGicCSubTableType].Count);
152 if (mSratSubTable[EArmGicItsSubTableType].Count != 0) {
153 mSratSubTable[EArmGicItsSubTableType].
Offset = *ArchOffset;
155 mSratSubTable[EArmGicItsSubTableType].Count);
178 GicCInfo = mSratSubTable[EArmGicCSubTableType].
CmInfo;
180 mSratSubTable[EArmGicCSubTableType].
Offset);
182 while (mSratSubTable[EArmGicCSubTableType].Count-- != 0) {
183 DEBUG ((DEBUG_INFO,
"SRAT: GicCAff = 0x%p\n", GicCAff));
185 GicCAff->Type = EFI_ACPI_6_3_GICC_AFFINITY;
215 GicItsInfo = mSratSubTable[EArmGicItsSubTableType].
CmInfo;
217 mSratSubTable[EArmGicItsSubTableType].
Offset);
219 while (mSratSubTable[EArmGicItsSubTableType].Count-- != 0) {
220 DEBUG ((DEBUG_INFO,
"SRAT: GicItsAff = 0x%p\n", GicItsAff));
222 GicItsAff->Type = EFI_ACPI_6_3_GIC_ITS_AFFINITY;
225 GicItsAff->Reserved[0] = EFI_ACPI_RESERVED_BYTE;
226 GicItsAff->Reserved[1] = EFI_ACPI_RESERVED_BYTE;
227 GicItsAff->ItsId = GicItsInfo->
GicItsId;
252 ASSERT (CfgMgrProtocol !=
NULL);
253 ASSERT (Srat !=
NULL);
257 if (mSratSubTable[EArmGicCSubTableType].Count != 0) {
@ EArmObjGicCInfo
2 - GIC CPU Interface Info
@ EArmObjGicItsInfo
6 - GIC ITS Info
STATIC VOID EFIAPI AddGICItsAffinity(IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, IN EFI_ACPI_6_3_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER *CONST Srat)
EFI_STATUS EFIAPI AddArchObjects(IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, IN EFI_ACPI_6_3_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER *CONST Srat)
enum ArmSratSubTableType EARM_SRAT_SUB_TABLE_TYPE
STATIC VOID EFIAPI AddGICCAffinity(IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, IN EFI_ACPI_6_3_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER *CONST Srat)
EFI_STATUS EFIAPI ArchReserveOffsets(IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, IN OUT UINT32 *ArchOffset)
#define GET_OBJECT_LIST(CmObjectNameSpace, CmObjectId, Type)
@ EObjNameSpaceArm
ARM Objects Namespace.
#define DEBUG(Expression)
UINT32 GicItsId
The GIC ITS ID.
VOID * CmInfo
Array of CmInfo objects of the relevant type.
UINT32 Offset
Start offset of the arch specific sub-table.