diff options
Diffstat (limited to 'DynamicTablesPkg/Library/Acpi')
-rw-r--r-- | DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c index 91199c4af2..c24da8ec71 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c @@ -553,7 +553,7 @@ GenerateLpiStates ( @param [in] Generator The SSDT Cpu Topology generator.
@param [in] ParentNode Parent node to attach the Cpu node to.
@param [in] GicCInfo CM_ARM_GICC_INFO object used to create the node.
- @param [in] CpuIndex Index used to generate the node name.
+ @param [in] CpuName Value used to generate the node name.
@param [out] CpuNodePtr If not NULL, return the created Cpu node.
@retval EFI_SUCCESS Success.
@@ -567,7 +567,7 @@ CreateAmlCpu ( IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,
IN AML_NODE_HANDLE ParentNode,
IN CM_ARM_GICC_INFO *GicCInfo,
- IN UINT32 CpuIndex,
+ IN UINT32 CpuName,
OUT AML_OBJECT_NODE_HANDLE *CpuNodePtr OPTIONAL
)
{
@@ -579,7 +579,7 @@ CreateAmlCpu ( ASSERT (ParentNode != NULL);
ASSERT (GicCInfo != NULL);
- Status = WriteAslName ('C', CpuIndex, AslName);
+ Status = WriteAslName ('C', CpuName, AslName);
if (EFI_ERROR (Status)) {
ASSERT (0);
return Status;
@@ -628,7 +628,7 @@ CreateAmlCpu ( @param [in] CfgMgrProtocol Pointer to the Configuration Manager
Protocol Interface.
@param [in] ParentNode Parent node to attach the Cpu node to.
- @param [in] CpuIndex Index used to generate the node name.
+ @param [in] CpuName Value used to generate the node name.
@param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO describing
the Cpu.
@@ -643,7 +643,7 @@ CreateAmlCpuFromProcHierarchy ( IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator,
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
IN AML_NODE_HANDLE ParentNode,
- IN UINT32 CpuIndex,
+ IN UINT32 CpuName,
IN CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeInfo
)
{
@@ -668,7 +668,7 @@ CreateAmlCpuFromProcHierarchy ( return Status;
}
- Status = CreateAmlCpu (Generator, ParentNode, GicCInfo, CpuIndex, &CpuNode);
+ Status = CreateAmlCpu (Generator, ParentNode, GicCInfo, CpuName, &CpuNode);
if (EFI_ERROR (Status)) {
ASSERT (0);
return Status;
@@ -735,7 +735,8 @@ CreateAmlProcessorContainer ( IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol,
IN AML_NODE_HANDLE ParentNode,
IN CM_ARM_PROC_HIERARCHY_INFO *ProcHierarchyNodeInfo,
- IN UINT32 ProcContainerIndex,
+ IN UINT16 ProcContainerName,
+ IN UINT32 ProcContainerUid,
OUT AML_OBJECT_NODE_HANDLE *ProcContainerNodePtr
)
{
@@ -749,7 +750,7 @@ CreateAmlProcessorContainer ( ASSERT (ProcHierarchyNodeInfo != NULL);
ASSERT (ProcContainerNodePtr != NULL);
- Status = WriteAslName ('C', ProcContainerIndex, AslNameProcContainer);
+ Status = WriteAslName ('C', ProcContainerName, AslNameProcContainer);
if (EFI_ERROR (Status)) {
ASSERT (0);
return Status;
@@ -765,7 +766,7 @@ CreateAmlProcessorContainer ( // and EFI_ACPI_6_3_PPTT_PROCESSOR_ID_INVALID is set for non-Cpus.
Status = AmlCodeGenNameInteger (
"_UID",
- ProcContainerIndex,
+ ProcContainerUid,
ProcContainerNode,
NULL
);
@@ -838,6 +839,8 @@ CreateAmlCpuTopologyTree ( UINT32 Index;
UINT32 CpuIndex;
AML_OBJECT_NODE_HANDLE ProcContainerNode;
+ UINT32 Uid;
+ UINT16 Name;
ASSERT (Generator != NULL);
ASSERT (Generator->ProcNodeList != NULL);
@@ -868,11 +871,17 @@ CreateAmlCpuTopologyTree ( return EFI_INVALID_PARAMETER;
}
+ if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) {
+ Name = Generator->ProcNodeList[Index].OverrideName;
+ } else {
+ Name = CpuIndex;
+ }
+
Status = CreateAmlCpuFromProcHierarchy (
Generator,
CfgMgrProtocol,
ParentNode,
- CpuIndex,
+ Name,
&Generator->ProcNodeList[Index]
);
if (EFI_ERROR (Status)) {
@@ -897,12 +906,21 @@ CreateAmlCpuTopologyTree ( return EFI_INVALID_PARAMETER;
}
+ if (Generator->ProcNodeList[Index].OverrideNameUidEnabled) {
+ Name = Generator->ProcNodeList[Index].OverrideName;
+ Uid = Generator->ProcNodeList[Index].OverrideUid;
+ } else {
+ Name = *ProcContainerIndex;
+ Uid = *ProcContainerIndex;
+ }
+
Status = CreateAmlProcessorContainer (
Generator,
CfgMgrProtocol,
ParentNode,
&Generator->ProcNodeList[Index],
- *ProcContainerIndex,
+ Name,
+ Uid,
&ProcContainerNode
);
if (EFI_ERROR (Status)) {
|