-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DynamicTablesPkg: Adds X64 support for CPU SSDT generator
Introduce support for generating ACPI CPU SSDT table for the X64 architecture. Cc: Sami Mujawar <[email protected]> Cc: Pierre Gondois <[email protected]> Signed-off-by: Abdul Lateef Attar <[email protected]>
- Loading branch information
Abdul Lateef Attar
authored and
Abdul Lateef Attar
committed
Nov 20, 2024
1 parent
1d8ca11
commit e41e493
Showing
3 changed files
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
105 changes: 105 additions & 0 deletions
105
...micTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/X64/X64SsdtCpuTopologyGenerator.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
/** @file | ||
X64 SSDT Cpu Topology Table Generator Helpers. | ||
Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. | ||
SPDX-License-Identifier: BSD-2-Clause-Patent | ||
@par Reference(s): | ||
- ACPI 6.3 Specification - January 2019 - s8.4 Declaring Processors | ||
**/ | ||
|
||
/** Create the processor hierarchy AML tree from arch specific CM objects. | ||
@param [in] Generator The SSDT Cpu Topology generator. | ||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager | ||
Protocol Interface. | ||
@param [in] ScopeNode Scope node handle ('\_SB' scope). | ||
@retval EFI_UNSUPPORTED Not supported | ||
**/ | ||
|
||
// Module specific include files. | ||
#include <ConfigurationManagerObject.h> | ||
#include <Library/AmlLib/AmlLib.h> | ||
|
||
#include "SsdtCpuTopologyGenerator.h" | ||
|
||
/** | ||
Create the processor hierarchy AML tree from arch specific CM objects. | ||
@param [in] Generator The SSDT Cpu Topology generator. | ||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager | ||
Protocol Interface. | ||
@param [in] ScopeNode Scope node handle ('\_SB' scope). | ||
@retval EFI_UNSUPPORTED Not supported | ||
**/ | ||
EFI_STATUS | ||
EFIAPI | ||
CreateTopologyFromIntC ( | ||
IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator, | ||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, | ||
IN AML_OBJECT_NODE_HANDLE ScopeNode | ||
) | ||
{ | ||
return EFI_UNSUPPORTED; | ||
} | ||
|
||
/** Add arch specific information to a CPU node in the asl description. | ||
@param [in] Generator The SSDT Cpu Topology generator. | ||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager | ||
Protocol Interface. | ||
@param [in] AcpiIdObjectToken AcpiIdObjectToken identifying the CPU to fetch the | ||
other fields from. | ||
@param [in] CpuName Value used to generate the CPU node name. | ||
@param [out] CpuNode CPU Node to which the ET device node is | ||
attached. | ||
@retval EFI_UNSUPPORTED Not supported | ||
**/ | ||
EFI_STATUS | ||
EFIAPI | ||
AddArchAmlCpuInfo ( | ||
IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator, | ||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, | ||
IN CM_OBJECT_TOKEN AcpiIdObjectToken, | ||
IN UINT32 CpuName, | ||
OUT AML_OBJECT_NODE_HANDLE *CpuNode | ||
) | ||
{ | ||
return EFI_UNSUPPORTED; | ||
} | ||
|
||
/** Get generic interrupt information from arch specific CM objects. | ||
The AcpiProcessorUid, CpcToken, etc. are held in arch specific CM objects, | ||
in the CM_ARM_GICC_INFO CM object for Arm for instance. | ||
This wrapper allows to get this information from each arch object. | ||
@param [in] CfgMgrProtocol Pointer to the Configuration Manager | ||
Protocol Interface. | ||
@param [in] AcpiIdObjectToken AcpiIdObjectToken identifying the CPU to fetch the | ||
other fields from. | ||
@param [out] AcpiProcessorUid AcpiProcessorUid of the CPU identified by | ||
the AcpiIdObjectToken. | ||
@param [out] CpcToken CpcToken of the CPU identified by | ||
the AcpiIdObjectToken. | ||
@param [out] PsdToken PsdToken of the CPU identified by | ||
the AcpiIdObjectToken. | ||
@retval EFI_UNSUPPORTED Not supported | ||
**/ | ||
EFI_STATUS | ||
EFIAPI | ||
GetIntCInfo ( | ||
IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, | ||
IN CM_OBJECT_TOKEN AcpiIdObjectToken, | ||
OUT UINT32 *AcpiProcessorUid, | ||
OUT CM_OBJECT_TOKEN *CpcToken, | ||
OUT CM_OBJECT_TOKEN *PsdToken | ||
) | ||
{ | ||
return EFI_UNSUPPORTED; | ||
} |