mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-21 12:44:50 +02:00
DynamicTablesPkg: Remove PPTT ID structure from ACPI 6.4 generator
Bugzilla: 3697 (https://bugzilla.tianocore.org/show_bug.cgi?id=3697) ACPI 6.3A deprecated PPTT ID (type 2) structure which was subsequently removed in ACPI 6.4. Therefore remove support for generating PPTT ID structures. Mantis ID for removing PPTT type 2 structure: 2072 (https://mantis.uefi.org/mantis/view.php?id=2072) Signed-off-by: Chris Jones <christopher.jones@arm.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
parent
8cf2bdfcfb
commit
b2bbe3df54
@ -50,7 +50,7 @@ typedef enum ArmObjectID {
|
|||||||
EArmObjSmmuInterruptArray, ///< 26 - SMMU Interrupt Array
|
EArmObjSmmuInterruptArray, ///< 26 - SMMU Interrupt Array
|
||||||
EArmObjProcHierarchyInfo, ///< 27 - Processor Hierarchy Info
|
EArmObjProcHierarchyInfo, ///< 27 - Processor Hierarchy Info
|
||||||
EArmObjCacheInfo, ///< 28 - Cache Info
|
EArmObjCacheInfo, ///< 28 - Cache Info
|
||||||
EArmObjProcNodeIdInfo, ///< 29 - Processor Node ID Info
|
EArmObjReserved29, ///< 29 - Reserved
|
||||||
EArmObjCmRef, ///< 30 - CM Object Reference
|
EArmObjCmRef, ///< 30 - CM Object Reference
|
||||||
EArmObjMemoryAffinityInfo, ///< 31 - Memory Affinity Info
|
EArmObjMemoryAffinityInfo, ///< 31 - Memory Affinity Info
|
||||||
EArmObjDeviceHandleAcpi, ///< 32 - Device Handle Acpi
|
EArmObjDeviceHandleAcpi, ///< 32 - Device Handle Acpi
|
||||||
@ -747,27 +747,6 @@ typedef struct CmArmCacheInfo {
|
|||||||
UINT16 LineSize;
|
UINT16 LineSize;
|
||||||
} CM_ARM_CACHE_INFO;
|
} CM_ARM_CACHE_INFO;
|
||||||
|
|
||||||
/** A structure that describes the ID Structure (Type 2) in PPTT
|
|
||||||
|
|
||||||
ID: EArmObjProcNodeIdInfo
|
|
||||||
*/
|
|
||||||
typedef struct CmArmProcNodeIdInfo {
|
|
||||||
/// A unique token used to identify this object
|
|
||||||
CM_OBJECT_TOKEN Token;
|
|
||||||
// Vendor ID (as described in ACPI ID registry)
|
|
||||||
UINT32 VendorId;
|
|
||||||
/// First level unique node ID
|
|
||||||
UINT64 Level1Id;
|
|
||||||
/// Second level unique node ID
|
|
||||||
UINT64 Level2Id;
|
|
||||||
/// Major revision of the node
|
|
||||||
UINT16 MajorRev;
|
|
||||||
/// Minor revision of the node
|
|
||||||
UINT16 MinorRev;
|
|
||||||
/// Spin revision of the node
|
|
||||||
UINT16 SpinRev;
|
|
||||||
} CM_ARM_PROC_NODE_ID_INFO;
|
|
||||||
|
|
||||||
/** A structure that describes a reference to another Configuration Manager
|
/** A structure that describes a reference to another Configuration Manager
|
||||||
object.
|
object.
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
The following Configuration Manager Object(s) are used by this Generator:
|
The following Configuration Manager Object(s) are used by this Generator:
|
||||||
- EArmObjProcHierarchyInfo (REQUIRED)
|
- EArmObjProcHierarchyInfo (REQUIRED)
|
||||||
- EArmObjCacheInfo
|
- EArmObjCacheInfo
|
||||||
- EArmObjProcNodeIdInfo
|
|
||||||
- EArmObjCmRef
|
- EArmObjCmRef
|
||||||
- EArmObjGicCInfo (REQUIRED)
|
- EArmObjGicCInfo (REQUIRED)
|
||||||
*/
|
*/
|
||||||
@ -59,16 +58,6 @@ GET_OBJECT_LIST (
|
|||||||
CM_ARM_CACHE_INFO
|
CM_ARM_CACHE_INFO
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
This macro expands to a function that retrieves the ID information for
|
|
||||||
Processor Hierarchy Nodes from the Configuration Manager.
|
|
||||||
*/
|
|
||||||
GET_OBJECT_LIST (
|
|
||||||
EObjNameSpaceArm,
|
|
||||||
EArmObjProcNodeIdInfo,
|
|
||||||
CM_ARM_PROC_NODE_ID_INFO
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This macro expands to a function that retrieves the cross-CM-object-
|
This macro expands to a function that retrieves the cross-CM-object-
|
||||||
reference information from the Configuration Manager.
|
reference information from the Configuration Manager.
|
||||||
@ -131,15 +120,6 @@ GET_SIZE_OF_PPTT_STRUCTS (
|
|||||||
CM_ARM_CACHE_INFO
|
CM_ARM_CACHE_INFO
|
||||||
);
|
);
|
||||||
|
|
||||||
/** This macro expands to a function that retrieves the amount of memory
|
|
||||||
required to store the ID Structures (Type 2) and updates the Node Indexer.
|
|
||||||
*/
|
|
||||||
GET_SIZE_OF_PPTT_STRUCTS (
|
|
||||||
IdStructs,
|
|
||||||
sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_ID),
|
|
||||||
CM_ARM_PROC_NODE_ID_INFO
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Search the Node Indexer and return the indexed PPTT node with the given
|
Search the Node Indexer and return the indexed PPTT node with the given
|
||||||
Token.
|
Token.
|
||||||
@ -373,8 +353,8 @@ AddPrivateResources (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The Node indexer has the Processor hierarchy nodes at the begining
|
// The Node indexer has the Processor hierarchy nodes at the begining
|
||||||
// followed by the cache structs and Id structs. Therefore we can
|
// followed by the cache structs. Therefore we can skip the Processor
|
||||||
// skip the Processor hierarchy nodes in the node indexer search.
|
// hierarchy nodes in the node indexer search.
|
||||||
Status = GetPpttNodeReferencedByToken (
|
Status = GetPpttNodeReferencedByToken (
|
||||||
Generator->CacheStructIndexedList,
|
Generator->CacheStructIndexedList,
|
||||||
(Generator->ProcTopologyStructCount -
|
(Generator->ProcTopologyStructCount -
|
||||||
@ -969,71 +949,6 @@ AddCacheTypeStructures (
|
|||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Update the ID Type Structure (Type 2) information.
|
|
||||||
|
|
||||||
This function populates the ID Type Structures with information from
|
|
||||||
the Configuration Manager and and adds this information to the PPTT table.
|
|
||||||
|
|
||||||
@param [in] Generator Pointer to the PPTT Generator.
|
|
||||||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager
|
|
||||||
Protocol Interface.
|
|
||||||
@param [in] Pptt Pointer to PPTT table structure.
|
|
||||||
@param [in] NodesStartOffset Offset from the start of PPTT table to the
|
|
||||||
start of ID Type Structures.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Structures updated successfully.
|
|
||||||
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
||||||
@retval EFI_NOT_FOUND A required object was not found.
|
|
||||||
**/
|
|
||||||
STATIC
|
|
||||||
EFI_STATUS
|
|
||||||
AddIdTypeStructures (
|
|
||||||
IN CONST ACPI_PPTT_GENERATOR *CONST Generator,
|
|
||||||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
|
|
||||||
IN CONST EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER *Pptt,
|
|
||||||
IN CONST UINT32 NodesStartOffset
|
|
||||||
)
|
|
||||||
{
|
|
||||||
EFI_ACPI_6_3_PPTT_STRUCTURE_ID *IdStruct;
|
|
||||||
CM_ARM_PROC_NODE_ID_INFO *ProcIdInfoNode;
|
|
||||||
PPTT_NODE_INDEXER *IdStructIterator;
|
|
||||||
UINT32 NodeCount;
|
|
||||||
|
|
||||||
ASSERT (
|
|
||||||
(Generator != NULL) &&
|
|
||||||
(CfgMgrProtocol != NULL) &&
|
|
||||||
(Pptt != NULL)
|
|
||||||
);
|
|
||||||
|
|
||||||
IdStruct = (EFI_ACPI_6_3_PPTT_STRUCTURE_ID *)((UINT8 *)Pptt + NodesStartOffset);
|
|
||||||
|
|
||||||
IdStructIterator = Generator->IdStructIndexedList;
|
|
||||||
NodeCount = Generator->IdStructCount;
|
|
||||||
while (NodeCount-- != 0) {
|
|
||||||
ProcIdInfoNode = (CM_ARM_PROC_NODE_ID_INFO *)IdStructIterator->Object;
|
|
||||||
|
|
||||||
// Populate the node
|
|
||||||
IdStruct->Type = EFI_ACPI_6_3_PPTT_TYPE_ID;
|
|
||||||
IdStruct->Length = sizeof (EFI_ACPI_6_3_PPTT_STRUCTURE_ID);
|
|
||||||
IdStruct->Reserved[0] = EFI_ACPI_RESERVED_BYTE;
|
|
||||||
IdStruct->Reserved[1] = EFI_ACPI_RESERVED_BYTE;
|
|
||||||
IdStruct->VendorId = ProcIdInfoNode->VendorId;
|
|
||||||
IdStruct->Level1Id = ProcIdInfoNode->Level1Id;
|
|
||||||
IdStruct->Level2Id = ProcIdInfoNode->Level2Id;
|
|
||||||
IdStruct->MajorRev = ProcIdInfoNode->MajorRev;
|
|
||||||
IdStruct->MinorRev = ProcIdInfoNode->MinorRev;
|
|
||||||
IdStruct->SpinRev = ProcIdInfoNode->SpinRev;
|
|
||||||
|
|
||||||
// Next ID Type Structure
|
|
||||||
IdStruct = (EFI_ACPI_6_3_PPTT_STRUCTURE_ID *)((UINT8 *)IdStruct +
|
|
||||||
IdStruct->Length);
|
|
||||||
IdStructIterator++;
|
|
||||||
} // ID Type Structure
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Construct the PPTT ACPI table.
|
Construct the PPTT ACPI table.
|
||||||
|
|
||||||
@ -1072,15 +987,12 @@ BuildPpttTable (
|
|||||||
UINT32 ProcTopologyStructCount;
|
UINT32 ProcTopologyStructCount;
|
||||||
UINT32 ProcHierarchyNodeCount;
|
UINT32 ProcHierarchyNodeCount;
|
||||||
UINT32 CacheStructCount;
|
UINT32 CacheStructCount;
|
||||||
UINT32 IdStructCount;
|
|
||||||
|
|
||||||
UINT32 ProcHierarchyNodeOffset;
|
UINT32 ProcHierarchyNodeOffset;
|
||||||
UINT32 CacheStructOffset;
|
UINT32 CacheStructOffset;
|
||||||
UINT32 IdStructOffset;
|
|
||||||
|
|
||||||
CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeList;
|
CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeList;
|
||||||
CM_ARM_CACHE_INFO *CacheStructList;
|
CM_ARM_CACHE_INFO *CacheStructList;
|
||||||
CM_ARM_PROC_NODE_ID_INFO *IdStructList;
|
|
||||||
|
|
||||||
ACPI_PPTT_GENERATOR *Generator;
|
ACPI_PPTT_GENERATOR *Generator;
|
||||||
|
|
||||||
@ -1155,27 +1067,6 @@ BuildPpttTable (
|
|||||||
ProcTopologyStructCount += CacheStructCount;
|
ProcTopologyStructCount += CacheStructCount;
|
||||||
Generator->CacheStructCount = CacheStructCount;
|
Generator->CacheStructCount = CacheStructCount;
|
||||||
|
|
||||||
// Get the processor hierarchy node ID info and update the processor topology
|
|
||||||
// structure count with ID Structures (Type 2)
|
|
||||||
Status = GetEArmObjProcNodeIdInfo (
|
|
||||||
CfgMgrProtocol,
|
|
||||||
CM_NULL_TOKEN,
|
|
||||||
&IdStructList,
|
|
||||||
&IdStructCount
|
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {
|
|
||||||
DEBUG ((
|
|
||||||
DEBUG_ERROR,
|
|
||||||
"ERROR: PPTT: Failed to get processor hierarchy node ID info. " \
|
|
||||||
"Status = %r\n",
|
|
||||||
Status
|
|
||||||
));
|
|
||||||
goto error_handler;
|
|
||||||
}
|
|
||||||
|
|
||||||
ProcTopologyStructCount += IdStructCount;
|
|
||||||
Generator->IdStructCount = IdStructCount;
|
|
||||||
|
|
||||||
// Allocate Node Indexer array
|
// Allocate Node Indexer array
|
||||||
NodeIndexer = (PPTT_NODE_INDEXER *)AllocateZeroPool (
|
NodeIndexer = (PPTT_NODE_INDEXER *)AllocateZeroPool (
|
||||||
sizeof (PPTT_NODE_INDEXER) *
|
sizeof (PPTT_NODE_INDEXER) *
|
||||||
@ -1241,27 +1132,6 @@ BuildPpttTable (
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Include the size of ID Type Structures and index them
|
|
||||||
if (Generator->IdStructCount != 0) {
|
|
||||||
IdStructOffset = TableSize;
|
|
||||||
Generator->IdStructIndexedList = NodeIndexer;
|
|
||||||
TableSize += GetSizeofIdStructs (
|
|
||||||
IdStructOffset,
|
|
||||||
IdStructList,
|
|
||||||
Generator->IdStructCount,
|
|
||||||
&NodeIndexer
|
|
||||||
);
|
|
||||||
DEBUG ((
|
|
||||||
DEBUG_INFO,
|
|
||||||
" IdStructCount = %d\n" \
|
|
||||||
" IdStructOffset = 0x%x\n" \
|
|
||||||
" IdStructIndexedList = 0x%p\n",
|
|
||||||
Generator->IdStructCount,
|
|
||||||
IdStructOffset,
|
|
||||||
Generator->IdStructIndexedList
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG ((
|
DEBUG ((
|
||||||
DEBUG_INFO,
|
DEBUG_INFO,
|
||||||
"INFO: PPTT:\n" \
|
"INFO: PPTT:\n" \
|
||||||
@ -1347,24 +1217,6 @@ BuildPpttTable (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add ID Type Structures (Type 2) to the generated table
|
|
||||||
if (Generator->IdStructCount != 0) {
|
|
||||||
Status = AddIdTypeStructures (
|
|
||||||
Generator,
|
|
||||||
CfgMgrProtocol,
|
|
||||||
Pptt,
|
|
||||||
IdStructOffset
|
|
||||||
);
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((
|
|
||||||
DEBUG_ERROR,
|
|
||||||
"ERROR: PPTT: Failed to add ID Type Structures. Status = %r\n",
|
|
||||||
Status
|
|
||||||
));
|
|
||||||
goto error_handler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate CM object cross-references in PPTT
|
// Validate CM object cross-references in PPTT
|
||||||
Status = DetectCyclesInTopology (Generator);
|
Status = DetectCyclesInTopology (Generator);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
@ -1488,8 +1340,6 @@ ACPI_PPTT_GENERATOR PpttGenerator = {
|
|||||||
0,
|
0,
|
||||||
// Count of Cache Structures
|
// Count of Cache Structures
|
||||||
0,
|
0,
|
||||||
// Count of Id Structures
|
|
||||||
0,
|
|
||||||
// Pointer to PPTT Node Indexer
|
// Pointer to PPTT Node Indexer
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
@ -171,8 +171,6 @@ typedef struct AcpiPpttGenerator {
|
|||||||
UINT32 ProcHierarchyNodeCount;
|
UINT32 ProcHierarchyNodeCount;
|
||||||
/// Count of Cache Structures
|
/// Count of Cache Structures
|
||||||
UINT32 CacheStructCount;
|
UINT32 CacheStructCount;
|
||||||
/// Count of Id Structures
|
|
||||||
UINT32 IdStructCount;
|
|
||||||
/// List of indexed CM objects for PPTT generation
|
/// List of indexed CM objects for PPTT generation
|
||||||
PPTT_NODE_INDEXER *NodeIndexer;
|
PPTT_NODE_INDEXER *NodeIndexer;
|
||||||
/// Pointer to the start of Processor Hierarchy nodes in
|
/// Pointer to the start of Processor Hierarchy nodes in
|
||||||
@ -180,8 +178,6 @@ typedef struct AcpiPpttGenerator {
|
|||||||
PPTT_NODE_INDEXER *ProcHierarchyNodeIndexedList;
|
PPTT_NODE_INDEXER *ProcHierarchyNodeIndexedList;
|
||||||
/// Pointer to the start of Cache Structures in the Node Indexer array
|
/// Pointer to the start of Cache Structures in the Node Indexer array
|
||||||
PPTT_NODE_INDEXER *CacheStructIndexedList;
|
PPTT_NODE_INDEXER *CacheStructIndexedList;
|
||||||
/// Pointer to the start of Id Structures in the Node Indexer array
|
|
||||||
PPTT_NODE_INDEXER *IdStructIndexedList;
|
|
||||||
} ACPI_PPTT_GENERATOR;
|
} ACPI_PPTT_GENERATOR;
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user