[PATCH v3 0/3] DynamicTablesPkg: _CPC support
Jeff Brasen
Add generator for creating the _CPC object for CPU nodes.
If viewing this review by a pull request is helpful one exists here: https://github.com/NVIDIA/edk2/pull/12 Change Log: v1 - Initial Revision v2 - Added revision to object, improved error handling, changed to ACPI 6.4 structures. v3 - Minor review feedback Jeff Brasen (3): DynamicTablesPkg: Add CM_ARM_CPC_INFO object DynamicTablesPkg: AML Code generation to add _CPC entries DynamicTablesPkg: SSDT CPU _CPC generator .../Include/ArmNameSpaceObjects.h | 148 ++++- .../Include/Library/AmlLib/AmlLib.h | 156 +++++ .../SsdtCpuTopologyGenerator.c | 223 ++++++- .../Common/AmlLib/CodeGen/AmlCodeGen.c | 543 ++++++++++++++++++ .../ConfigurationManagerObjectParser.c | 80 +++ 5 files changed, 1127 insertions(+), 23 deletions(-) -- 2.25.1 |
|
[PATCH v3 3/3] DynamicTablesPkg: SSDT CPU _CPC generator
Jeff Brasen
Add code to use a token attached to GICC to generate _CPC object on cpus.
Signed-off-by: Jeff Brasen <jbrasen@...> --- .../SsdtCpuTopologyGenerator.c | 223 +++++++++++++++++- 1 file changed, 217 insertions(+), 6 deletions(-) diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c index 8561f48e1f..5d41d57064 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtCpuTopologyLibArm/SsdtCpuTopologyGenerator.c @@ -76,6 +76,16 @@ GET_OBJECT_LIST ( CM_ARM_LPI_INFO ); +/** + This macro expands to a function that retrieves the CPC + information from the Configuration Manager. +*/ +GET_OBJECT_LIST ( + EObjNameSpaceArm, + EArmObjCpcInfo, + CM_ARM_CPC_INFO + ); + /** Initialize the TokenTable. One entry should be allocated for each CM_ARM_PROC_HIERARCHY_INFO @@ -229,6 +239,183 @@ WriteAslName ( return EFI_SUCCESS; } +/** Utility function to check if generic address points to NULL + + @param [in] Address Pointer to the Generic address + + @retval TRUE Address is system memory with an Address of 0. + @retval FALSE Address does not point to NULL. +**/ +STATIC +BOOLEAN +EFIAPI +IsNullGenericAddress ( + IN EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE *Address + ) +{ + if ((Address == NULL) || + ((Address->AddressSpaceId == EFI_ACPI_6_4_SYSTEM_MEMORY) && + (Address->Address == 0x0))) + { + return TRUE; + } + + return FALSE; +} + +/** Create and add an _CPC Node to Cpu Node. + + For instance, transform an AML node from: + Device (C002) + { + Name (_UID, 2) + Name (_HID, "ACPI0007") + } + + To: + Device (C002) + { + Name (_UID, 2) + Name (_HID, "ACPI0007") + Name(_CPC, Package() + { + NumEntries, // Integer + Revision, // Integer + HighestPerformance, // Integer or Buffer (Resource Descriptor) + NominalPerformance, // Integer or Buffer (Resource Descriptor) + LowestNonlinearPerformance, // Integer or Buffer (Resource Descriptor) + LowestPerformance, // Integer or Buffer (Resource Descriptor) + GuaranteedPerformanceRegister, // Buffer (Resource Descriptor) + DesiredPerformanceRegister , // Buffer (Resource Descriptor) + MinimumPerformanceRegister , // Buffer (Resource Descriptor) + MaximumPerformanceRegister , // Buffer (Resource Descriptor) + PerformanceReductionToleranceRegister, // Buffer (Resource Descriptor) + TimeWindowRegister, // Buffer (Resource Descriptor) + CounterWraparoundTime, // Integer or Buffer (Resource Descriptor) + ReferencePerformanceCounterRegister, // Buffer (Resource Descriptor) + DeliveredPerformanceCounterRegister, // Buffer (Resource Descriptor) + PerformanceLimitedRegister, // Buffer (Resource Descriptor) + CPPCEnableRegister // Buffer (Resource Descriptor) + AutonomousSelectionEnable, // Integer or Buffer (Resource Descriptor) + AutonomousActivityWindowRegister, // Buffer (Resource Descriptor) + EnergyPerformancePreferenceRegister, // Buffer (Resource Descriptor) + ReferencePerformance // Integer or Buffer (Resource Descriptor) + LowestFrequency, // Integer or Buffer (Resource Descriptor) + NominalFrequency // Integer or Buffer (Resource Descriptor) + }) + } + + @param [in] Generator The SSDT Cpu Topology generator. + @param [in] CfgMgrProtocol Pointer to the Configuration Manager + Protocol Interface. + @param [in] ProcHierarchyNodeInfo CM_ARM_PROC_HIERARCHY_INFO describing + the Cpu. + @param [in] Node CPU Node to which the _CPC node is + attached. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. +**/ +STATIC +EFI_STATUS +EFIAPI +CreateAmlCpcNode ( + IN ACPI_CPU_TOPOLOGY_GENERATOR *Generator, + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL *CONST CfgMgrProtocol, + IN CM_ARM_GICC_INFO *GicCInfo, + IN AML_OBJECT_NODE_HANDLE *Node + ) +{ + EFI_STATUS Status; + CM_ARM_CPC_INFO *CpcInfo; + + Status = GetEArmObjCpcInfo ( + CfgMgrProtocol, + GicCInfo->CpcToken, + &CpcInfo, + NULL + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status = AmlCreateCpcNode ( + CpcInfo->Revision, + IsNullGenericAddress (&CpcInfo->HighestPerformanceBuffer) ? + NULL : + &CpcInfo->HighestPerformanceBuffer, + CpcInfo->HighestPerformanceInteger, + IsNullGenericAddress (&CpcInfo->NominalPerformanceBuffer) ? + NULL : + &CpcInfo->NominalPerformanceBuffer, + CpcInfo->NominalPerformanceInteger, + IsNullGenericAddress (&CpcInfo->LowestNonlinearPerformanceBuffer) ? + NULL : + &CpcInfo->LowestNonlinearPerformanceBuffer, + CpcInfo->LowestNonlinearPerformanceInteger, + IsNullGenericAddress (&CpcInfo->LowestPerformanceBuffer) ? + NULL : + &CpcInfo->LowestPerformanceBuffer, + CpcInfo->LowestPerformanceInteger, + IsNullGenericAddress (&CpcInfo->GuaranteedPerformanceRegister) ? + NULL : + &CpcInfo->GuaranteedPerformanceRegister, + IsNullGenericAddress (&CpcInfo->DesiredPerformanceRegister) ? + NULL : + &CpcInfo->DesiredPerformanceRegister, + IsNullGenericAddress (&CpcInfo->MinimumPerformanceRegister) ? + NULL : + &CpcInfo->MinimumPerformanceRegister, + IsNullGenericAddress (&CpcInfo->MaximumPerformanceRegister) ? + NULL : + &CpcInfo->MaximumPerformanceRegister, + IsNullGenericAddress (&CpcInfo->PerformanceReductionToleranceRegister) ? + NULL : + &CpcInfo->PerformanceReductionToleranceRegister, + IsNullGenericAddress (&CpcInfo->TimeWindowRegister) ? + NULL : + &CpcInfo->TimeWindowRegister, + IsNullGenericAddress (&CpcInfo->CounterWraparoundTimeBuffer) ? + NULL : + &CpcInfo->CounterWraparoundTimeBuffer, + CpcInfo->CounterWraparoundTimeInteger, + &CpcInfo->ReferencePerformanceCounterRegister, + &CpcInfo->DeliveredPerformanceCounterRegister, + &CpcInfo->PerformanceLimitedRegister, + IsNullGenericAddress (&CpcInfo->CPPCEnableRegister) ? + NULL : + &CpcInfo->CPPCEnableRegister, + IsNullGenericAddress (&CpcInfo->AutonomousSelectionEnableBuffer) ? + NULL : + &CpcInfo->AutonomousSelectionEnableBuffer, + CpcInfo->AutonomousSelectionEnableInteger, + IsNullGenericAddress (&CpcInfo->AutonomousActivityWindowRegister) ? + NULL : + &CpcInfo->AutonomousActivityWindowRegister, + IsNullGenericAddress (&CpcInfo->EnergyPerformancePreferenceRegister) ? + NULL : + &CpcInfo->EnergyPerformancePreferenceRegister, + IsNullGenericAddress (&CpcInfo->ReferencePerformanceBuffer) ? + NULL : + &CpcInfo->ReferencePerformanceBuffer, + CpcInfo->ReferencePerformanceInteger, + IsNullGenericAddress (&CpcInfo->LowestFrequencyBuffer) ? + NULL : + &CpcInfo->LowestFrequencyBuffer, + CpcInfo->LowestFrequencyInteger, + IsNullGenericAddress (&CpcInfo->NominalFrequencyBuffer) ? + NULL : + &CpcInfo->NominalFrequencyBuffer, + CpcInfo->NominalFrequencyInteger, + Node, + NULL + ); + ASSERT_EFI_ERROR (Status); + return Status; +} + /** Create and add an _LPI method to Cpu/Cluster Node. For instance, transform an AML node from: @@ -581,7 +768,20 @@ CreateAmlCpuFromProcHierarchy ( // CM_ARM_PROC_HIERARCHY_INFO, create an _LPI method returning them. if (ProcHierarchyNodeInfo->LpiToken != CM_NULL_TOKEN) { Status = CreateAmlLpiMethod (Generator, ProcHierarchyNodeInfo, CpuNode); - ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + return Status; + } + } + + // If a CPC info is associated with the + // GicCinfo, create an _CPC method returning them. + if (GicCInfo->CpcToken != CM_NULL_TOKEN) { + Status = CreateAmlCpcNode (Generator, CfgMgrProtocol, GicCInfo, CpuNode); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + return Status; + } } return Status; @@ -934,10 +1134,11 @@ CreateTopologyFromGicC ( IN AML_OBJECT_NODE_HANDLE ScopeNode ) { - EFI_STATUS Status; - CM_ARM_GICC_INFO *GicCInfo; - UINT32 GicCInfoCount; - UINT32 Index; + EFI_STATUS Status; + CM_ARM_GICC_INFO *GicCInfo; + UINT32 GicCInfoCount; + UINT32 Index; + AML_OBJECT_NODE_HANDLE CpuNode; ASSERT (Generator != NULL); ASSERT (CfgMgrProtocol != NULL); @@ -961,12 +1162,22 @@ CreateTopologyFromGicC ( ScopeNode, &GicCInfo[Index], Index, - NULL + &CpuNode ); if (EFI_ERROR (Status)) { ASSERT (0); break; } + + // If a CPC info is associated with the + // GicCinfo, create an _CPC method returning them. + if (GicCInfo->CpcToken != CM_NULL_TOKEN) { + Status = CreateAmlCpcNode (Generator, CfgMgrProtocol, &GicCInfo[Index], CpuNode); + if (EFI_ERROR (Status)) { + ASSERT_EFI_ERROR (Status); + break; + } + } } // for return Status; -- 2.25.1 |
|
[PATCH v3 1/3] DynamicTablesPkg: Add CM_ARM_CPC_INFO object
Jeff Brasen
Introduce the CM_ARM_CPC_INFO CmObj in the ArmNameSpaceObjects.
This allows to describe CPC information, as described in ACPI 6.4, s8.4.7.1 "_CPC (Continuous Performance Control)". Signed-off-by: Jeff Brasen <jbrasen@...> --- .../Include/ArmNameSpaceObjects.h | 148 ++++++++++++++++-- .../ConfigurationManagerObjectParser.c | 80 ++++++++++ 2 files changed, 211 insertions(+), 17 deletions(-) diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h index 102e0f96be..d76cc08e14 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -63,6 +63,7 @@ typedef enum ArmObjectID { EArmObjPciInterruptMapInfo, ///< 39 - Pci Interrupt Map Info EArmObjRmr, ///< 40 - Reserved Memory Range Node EArmObjMemoryRangeDescriptor, ///< 41 - Memory Range Descriptor + EArmObjCpcInfo, ///< 42 - Continuous Performance Control Info EArmObjMax } EARM_OBJECT_ID; @@ -97,99 +98,105 @@ typedef struct CmArmPowerManagementProfileInfo { */ typedef struct CmArmGicCInfo { /// The GIC CPU Interface number. - UINT32 CPUInterfaceNumber; + UINT32 CPUInterfaceNumber; /** The ACPI Processor UID. This must match the _UID of the CPU Device object information described in the DSDT/SSDT for the CPU. */ - UINT32 AcpiProcessorUid; + UINT32 AcpiProcessorUid; /** The flags field as described by the GICC structure in the ACPI Specification. */ - UINT32 Flags; + UINT32 Flags; /** The parking protocol version field as described by the GICC structure in the ACPI Specification. */ - UINT32 ParkingProtocolVersion; + UINT32 ParkingProtocolVersion; /** The Performance Interrupt field as described by the GICC structure in the ACPI Specification. */ - UINT32 PerformanceInterruptGsiv; + UINT32 PerformanceInterruptGsiv; /** The CPU Parked address field as described by the GICC structure in the ACPI Specification. */ - UINT64 ParkedAddress; + UINT64 ParkedAddress; /** The base address for the GIC CPU Interface as described by the GICC structure in the ACPI Specification. */ - UINT64 PhysicalBaseAddress; + UINT64 PhysicalBaseAddress; /** The base address for GICV interface as described by the GICC structure in the ACPI Specification. */ - UINT64 GICV; + UINT64 GICV; /** The base address for GICH interface as described by the GICC structure in the ACPI Specification. */ - UINT64 GICH; + UINT64 GICH; /** The GICV maintenance interrupt as described by the GICC structure in the ACPI Specification. */ - UINT32 VGICMaintenanceInterrupt; + UINT32 VGICMaintenanceInterrupt; /** The base address for GICR interface as described by the GICC structure in the ACPI Specification. */ - UINT64 GICRBaseAddress; + UINT64 GICRBaseAddress; /** The MPIDR for the CPU as described by the GICC structure in the ACPI Specification. */ - UINT64 MPIDR; + UINT64 MPIDR; /** The Processor Power Efficiency class as described by the GICC structure in the ACPI Specification. */ - UINT8 ProcessorPowerEfficiencyClass; + UINT8 ProcessorPowerEfficiencyClass; /** Statistical Profiling Extension buffer overflow GSIV. Zero if unsupported by this processor. This field was introduced in ACPI 6.3 (MADT revision 5) and is therefore ignored when generating MADT revision 4 or lower. */ - UINT16 SpeOverflowInterrupt; + UINT16 SpeOverflowInterrupt; /** The proximity domain to which the logical processor belongs. This field is used to populate the GICC affinity structure in the SRAT table. */ - UINT32 ProximityDomain; + UINT32 ProximityDomain; /** The clock domain to which the logical processor belongs. This field is used to populate the GICC affinity structure in the SRAT table. */ - UINT32 ClockDomain; + UINT32 ClockDomain; /** The GICC Affinity flags field as described by the GICC Affinity structure in the SRAT table. */ - UINT32 AffinityFlags; + UINT32 AffinityFlags; + + /** Optional field: Reference Token for the Cpc info of this processor. + Token identifying a CM_ARM_OBJ_REF structure, itself referencing + CM_ARM_CPC_INFO objects. + */ + CM_OBJECT_TOKEN CpcToken; } CM_ARM_GICC_INFO; /** A structure that describes the @@ -1070,6 +1077,113 @@ typedef struct CmArmRmrDescriptor { UINT64 Length; } CM_ARM_MEMORY_RANGE_DESCRIPTOR; +/** A structure that describes the Cpc information. + + Continuous Performance Control is described in DSDT/SSDT and associated + to cpus/clusters in the cpu topology. + + Unsupported Optional registers should be encoded with NULL resource + Register {(SystemMemory, 0, 0, 0, 0)} + + For values that support Integer or Buffer, integer will be used + if buffer is NULL resource. + If resource is not NULL then Integer must be 0 + + Cf. ACPI 6.4, s8.4.7.1 _CPC (Continuous Performance Control) + + ID: EArmObjCpcInfo +*/ +typedef struct CmArmCpcInfo { + /// The revision number of the _CPC package format. + UINT32 Revision; + + /// Indicates the highest level of performance the processor + /// is theoretically capable of achieving. + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE HighestPerformanceBuffer; + UINT32 HighestPerformanceInteger; + + /// Indicates the highest sustained performance level of the processor. + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalPerformanceBuffer; + UINT32 NominalPerformanceInteger; + + /// Indicates the lowest performance level of the processor with non-linear power savings. + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestNonlinearPerformanceBuffer; + UINT32 LowestNonlinearPerformanceInteger; + + /// Indicates the lowest performance level of the processor.. + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestPerformanceBuffer; + UINT32 LowestPerformanceInteger; + + /// Guaranteed Performance Register Buffer. + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE GuaranteedPerformanceRegister; + + /// Desired Performance Register Buffer. + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DesiredPerformanceRegister; + + /// Minimum Performance Register Buffer. + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MinimumPerformanceRegister; + + /// Maximum Performance Register Buffer. + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MaximumPerformanceRegister; + + /// Performance Reduction Tolerance Register. + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceReductionToleranceRegister; + + /// Time Window Register. + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE TimeWindowRegister; + + /// Counter Wraparound Time + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CounterWraparoundTimeBuffer; + UINT32 CounterWraparoundTimeInteger; + + /// Reference Performance Counter Register + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceCounterRegister; + + /// Delivered Performance Counter Register + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DeliveredPerformanceCounterRegister; + + /// Performance Limited Register + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceLimitedRegister; + + /// CPPC EnableRegister + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CPPCEnableRegister; + + /// Autonomous Selection Enable + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousSelectionEnableBuffer; + UINT32 AutonomousSelectionEnableInteger; + + /// AutonomousActivity-WindowRegister + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousActivityWindowRegister; + + /// EnergyPerformance-PreferenceRegister + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EnergyPerformancePreferenceRegister; + + /// Reference Performance + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceBuffer; + UINT32 ReferencePerformanceInteger; + + /// Lowest Frequency + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestFrequencyBuffer; + UINT32 LowestFrequencyInteger; + + /// Nominal Frequency + /// Optional + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalFrequencyBuffer; + UINT32 NominalFrequencyInteger; +} CM_ARM_CPC_INFO; + #pragma pack() #endif // ARM_NAMESPACE_OBJECTS_H_ diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c index c1b21d24a4..c7e0d51397 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c @@ -423,6 +423,84 @@ STATIC CONST CM_OBJ_PARSER CmPciInterruptMapInfoParser[] = { ARRAY_SIZE (CmArmGenericInterruptParser) }, }; +/** A parser for EArmObjCpcInfo. +*/ +STATIC CONST CM_OBJ_PARSER CmArmCpcInfoParser[] = { + { "Revision", 4, "0x%llx", NULL }, + { "HighestPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "HighestPerformanceInteger", 4, "0x%llx", NULL }, + { "NominalPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "NominalPerformanceInteger", 4, "0x%llx", NULL }, + { "LowestNonlinearPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "LowestNonlinearPerformanceInteger", 4, "0x%llx", NULL }, + { "LowestPerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "LowestPerformanceInteger", 4, "0x%llx", NULL }, + { "GuaranteedPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "DesiredPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "MinimumPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "MaximumPerformanceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "PerformanceReductionToleranceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "TimeWindowRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "CounterWraparoundTimeBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "CounterWraparoundTimeInteger", 4, "0x%llx", NULL }, + { "ReferencePerformanceCounterRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "DeliveredPerformanceCounterRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "PerformanceLimitedRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "CPPCEnableRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "AutonomousSelectionEnableBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "AutonomousSelectionEnableInteger", 4, "0x%llx", NULL }, + { "AutonomousActivityWindowRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "EnergyPerformancePreferenceRegister", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "ReferencePerformanceBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "ReferencePerformanceInteger", 4, "0x%llx", NULL }, + { "LowestFrequencyBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "LowestFrequencyInteger", 4, "0x%llx", NULL }, + { "NominalFrequencyBuffer", sizeof (EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE), + NULL, NULL, AcpiGenericAddressParser, + ARRAY_SIZE (AcpiGenericAddressParser) }, + { "NominalFrequencyInteger", 4, "0x%llx", NULL }, +}; + /** A parser for Arm namespace objects. */ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { @@ -501,6 +579,8 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { ARRAY_SIZE (CmArmPciAddressMapInfoParser) }, { "EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser, ARRAY_SIZE (CmPciInterruptMapInfoParser) }, + { "EArmObjCpcInfo", CmArmCpcInfoParser, + ARRAY_SIZE (CmArmCpcInfoParser) }, { "EArmObjMax", NULL, 0 }, }; -- 2.25.1 |
|
Re: [PATCH] Maintainers.txt: Update reviewers for IntelSiliconPkg
Ni, Ray
Reviewed-by: Ray Ni <ray.ni@...>
toggle quoted message
Show quoted text
-----Original Message----- |
|
Re: [PATCH v2 10/34] ShellPkg: Add LOONGARCH64 architecture for EDK2 CI.
Zhichao, Ok, I will add all of R-B information in the V3. Thanks for reminding. :)
On 9月 15 2022, at 4:56 下午, "Gao, Zhichao" <zhichao.gao@...> wrote:
|
|
Re: [edk2-platforms][PATCH 1/2] SbsaQemu/OemMiscLib: Update for new OemMiscLib APIs
Leif Lindholm
On Tue, Sep 13, 2022 at 13:17:34 +0700, Nhi Pham wrote:
This is to reflect the new APIs added to edk2/OemMiscLib library.Matching my comment on OemMiscLibNull - could you use PcdSystemBiosRelease and PcdEmbeddedControllerFirmwareRelease here? / Leif --- |
|
Re: [edk2-platforms][PATCH 2/2] SbsaQemu/OemMiscLib: Fix typo of "AssetTagType02"
Leif Lindholm
On Tue, Sep 13, 2022 at 13:17:35 +0700, Nhi Pham wrote:
This fixes the typo of AssetTagType02 according to the recent changesReviewed-by: Leif Lindholm <quic_llindhol@...> --- |
|
Re: [PATCH v3 6/6] ArmPkg/SmbiosMiscDxe: Get SMBIOS information from OemMiscLib
Leif Lindholm
On Tue, Sep 13, 2022 at 13:19:47 +0700, Nhi Pham wrote:
From: Minh Nguyen <minhn@...>This is a change in behaviour. The pre-existing behaviour would be preserved by returning the value of PcdGet16 (PcdSystemBiosRelease), which defaults to 0xFFFF. +}Same as above, but PcdEmbeddedControllerFirmwareRelease. No other comments on this set. (Feel free to see that as Acked-by: Leif Lindholm <quic_llindhol@...> for 1-5/6, but you already have the tags you need for those.) / Leif +} |
|
Re: [edk2-platforms][PATCH V3 0/4] QemuOpenBoardPkg: Add QemuOpenBoardPkg
Leif Lindholm
We appear to be missing a Maintainers.txt entry for this new package.
toggle quoted message
Show quoted text
Could someone cook one up? / Leif On Wed, Sep 14, 2022 at 20:14:27 +0000, Oram, Isaac W wrote:
Series pushed as 9a7234827f..f4679715a4 |
|
Re: [PATCH EDK2 v1 1/1] CryptoPkg/BaseCryptLib:Remove redundant init
Xiaoyu Lu
Reviewed-by: Xiaoyu Lu <xiaoyu1.lu@...>
toggle quoted message
Show quoted text
-----Original Message-----
From: Wenyi Xie <xiewenyi2@...> Sent: Thursday, September 15, 2022 5:26 PM To: devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@...>; Wang, Jian J <jian.j.wang@...>; Lu, Xiaoyu1 <xiaoyu1.lu@...>; Jiang, Guomin <guomin.jiang@...> Cc: songdongkuang@...; xiewenyi2@... Subject: [PATCH EDK2 v1 1/1] CryptoPkg/BaseCryptLib:Remove redundant init CertCtx is used to be defined as a struct and ZeroMem is called to init this struct. But now CertCtx is defined as a point, so use ZeroMem (&CertCtx, sizeof (CertCtx)) is not correct any more. Cc: Jiewen Yao <jiewen.yao@...> Cc: Jian J Wang <jian.j.wang@...> Cc: Xiaoyu Lu <xiaoyu1.lu@...> Cc: Guomin Jiang <guomin.jiang@...> Signed-off-by: Wenyi Xie <xiewenyi2@...> --- CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c index 3336d2f60a6a..f8028181e47f 100644 --- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c +++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c @@ -502,8 +502,6 @@ Pkcs7GetCertificatesList ( OldBuf = NULL; Signers = NULL; - ZeroMem (&CertCtx, sizeof (CertCtx)); - // // Parameter Checking // -- 2.20.1.windows.1 |
|
[PATCH EDK2 v1 1/1] CryptoPkg/BaseCryptLib:Remove redundant init
wenyi,xie
CertCtx is used to be defined as a struct and ZeroMem is called to
init this struct. But now CertCtx is defined as a point, so use ZeroMem (&CertCtx, sizeof (CertCtx)) is not correct any more. Cc: Jiewen Yao <jiewen.yao@...> Cc: Jian J Wang <jian.j.wang@...> Cc: Xiaoyu Lu <xiaoyu1.lu@...> Cc: Guomin Jiang <guomin.jiang@...> Signed-off-by: Wenyi Xie <xiewenyi2@...> --- CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c index 3336d2f60a6a..f8028181e47f 100644 --- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c +++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c @@ -502,8 +502,6 @@ Pkcs7GetCertificatesList ( OldBuf = NULL; Signers = NULL; - ZeroMem (&CertCtx, sizeof (CertCtx)); - // // Parameter Checking // -- 2.20.1.windows.1 |
|
[PATCH EDK2 v1 0/1] CryptoPkg/BaseCryptLib:Remove redundant init
wenyi,xie
Main Changes :
1.Remove redundant memory init. Wenyi Xie (1): CryptoPkg/BaseCryptLib:Remove redundant init CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyCommon.c | 2 -- 1 file changed, 2 deletions(-) -- 2.20.1.windows.1 |
|
Re: [PATCH v2 30/34] MdeModulePkg/Logo: Add LoongArch64 architecture.
Gao, Zhichao
Reviewed-by: Zhichao Gao <zhichao.gao@...>
toggle quoted message
Show quoted text
Thanks, Zhichao -----Original Message----- |
|
Re: [PATCH v2 10/34] ShellPkg: Add LOONGARCH64 architecture for EDK2 CI.
Gao, Zhichao
Reviewed-by: Zhichao Gao <zhichao.gao@...>
toggle quoted message
Show quoted text
Please add Mike's R-B. If the patches are not changed, you can keep the received R-B so the maintainers/reviewers can avoid review the same content again. Thanks, Zhichao -----Original Message----- |
|
[PATCH] Maintainers.txt: Update email address
Nickle Wang
Update Nickle's email address from csie.io to nvidia.com for those
packages which are reviewed by Nickle. Per suggestion from Abner, change Nickle from reviewer to maintainer for RedfishPkg. Cc: Andrew Fish <afish@...> Cc: Leif Lindholm <quic_llindhol@...> Cc: Michael D Kinney <michael.d.kinney@...> Cc: Abner Chang <abner.chang@...> Signed-off-by: Nickle Wang <nicklew@...> --- Maintainers.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintainers.txt b/Maintainers.txt index 73ce13126b..390f084c03 100644 --- a/Maintainers.txt +++ b/Maintainers.txt @@ -197,7 +197,7 @@ S: Maintained EmulatorPkg: Redfish-related modules F: EmulatorPkg/*Redfish* M: Abner Chang <abner.chang@...> [changab] -R: Nickle Wang <nickle@...> [nicklela] +M: Nickle Wang <nicklew@...> [nicklela] FatPkg F: FatPkg/ @@ -544,7 +544,7 @@ R: Ankit Sinha <ankit.sinha@...> [ankit13s] RedfishPkg: Redfish related modules F: RedfishPkg/ M: Abner Chang <abner.chang@...> [changab] -R: Nickle Wang <nickle@...> [nicklela] +M: Nickle Wang <nicklew@...> [nicklela] SecurityPkg F: SecurityPkg/ -- 2.34.1 |
|
Re: [PATCH v2 2/3] DynamicTablesPkg: AML Code generation to add _CPC
entries
PierreGondois
Hello Jeff,
toggle quoted message
Show quoted text
This patch looks good to me: Reviewed-by: Pierre Gondois <pierre.gondois@...> On 9/14/22 23:34, Jeff Brasen wrote:
_CPC entries can describe CPU performance information. |
|
Re: [PATCH v2 3/3] DynamicTablesPkg: SSDT CPU _CPC generator
PierreGondois
Hello Jeff,
Just one remark: On 9/14/22 23:34, Jeff Brasen wrote: Add code to use a token attached to GICC to generate _CPC object on cpus.[snip] @@ -934,10 +1134,11 @@ CreateTopologyFromGicC (Could it be replaced with a 'break' just to be consistent in the loop ? + } |
|
Re: [PATCH v2 1/3] DynamicTablesPkg: Add CM_ARM_CPC_INFO object
PierreGondois
Hello Jeff,
Just one remark: On 9/14/22 23:34, Jeff Brasen wrote: Introduce the CM_ARM_CPC_INFO CmObj in the ArmNameSpaceObjects.[snip] diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.cCould it be move to 6_4 aswell ? + NULL, NULL, AcpiGenericAddressParser, |
|
Re: 回复: edk2-devel] [PATCH v2 34/34] BaseTools: Add LoongArch64 binding.
Liming, Ok, in V3, I will put this patch together with BaseTools changes.
On 9月 15 2022, at 2:34 下午, "gaoliming" <gaoliming@...> wrote:
|
|
Re: 回复: PATCH v2 17/34] BaseTools: BaseTools changes for LoongArch platform.
Liming, Ok, I will change the commit title in the V3.
On 9月 15 2022, at 2:30 下午, "gaoliming" <gaoliming@...> wrote:
|
|