From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.7343.1663228927988629904 for ; Thu, 15 Sep 2022 01:02:08 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: pierre.gondois@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D8B601692; Thu, 15 Sep 2022 01:02:13 -0700 (PDT) Received: from [10.34.100.114] (pierre123.nice.arm.com [10.34.100.114]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 99CDF3F73B; Thu, 15 Sep 2022 01:02:06 -0700 (PDT) Message-ID: <0418ad2a-ad92-722d-30fd-4a3e0c8301b3@arm.com> Date: Thu, 15 Sep 2022 10:02:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH v2 1/3] DynamicTablesPkg: Add CM_ARM_CPC_INFO object To: Jeff Brasen , devel@edk2.groups.io Cc: ardb+tianocore@kernel.org, Sami.Mujawar@arm.com, Alexei.Fedorov@arm.com References: <562f833e95d7bbb6769094f17bd980cb9e8909ba.1663191097.git.jbrasen@nvidia.com> From: "PierreGondois" In-Reply-To: <562f833e95d7bbb6769094f17bd980cb9e8909ba.1663191097.git.jbrasen@nvidia.com> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello Jeff, Just one remark: On 9/14/22 23:34, Jeff Brasen wrote: > 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 > --- > .../Include/ArmNameSpaceObjects.h | 148 ++++++++++++++++-- > .../ConfigurationManagerObjectParser.c | 79 ++++++++++ > 2 files changed, 210 insertions(+), 17 deletions(-) > [snip] > diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c > index c1b21d24a4..e2c608443b 100644 > --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c > +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c > @@ -423,6 +423,83 @@ STATIC CONST CM_OBJ_PARSER CmPciInterruptMapInfoParser[] = { > ARRAY_SIZE (CmArmGenericInterruptParser) }, > }; > > +/** A parser for EArmObjCpcInfo. > +*/ > +STATIC CONST CM_OBJ_PARSER CmArmCpcInfoParser[] = { > + { "HighestPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), Could it be move to 6_4 aswell ? > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "HighestPerformanceInteger", 4, "0x%llx", NULL }, > + { "NominalPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "NominalPerformanceInteger", 4, "0x%llx", NULL }, > + { "LowestNonlinearPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "LowestNonlinearPerformanceInteger", 4, "0x%llx", NULL }, > + { "LowestPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "LowestPerformanceInteger", 4, "0x%llx", NULL }, > + { "GuaranteedPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "DesiredPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "MinimumPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "MaximumPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "PerformanceReductionToleranceRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "TimeWindowRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "CounterWraparoundTimeBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "CounterWraparoundTimeInteger", 4, "0x%llx", NULL }, > + { "ReferencePerformanceCounterRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "DeliveredPerformanceCounterRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "PerformanceLimitedRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "CPPCEnableRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "AutonomousSelectionEnableBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "AutonomousSelectionEnableInteger", 4, "0x%llx", NULL }, > + { "AutonomousActivityWindowRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "EnergyPerformancePreferenceRegister", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "ReferencePerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "ReferencePerformanceInteger", 4, "0x%llx", NULL }, > + { "LowestFrequencyBuffer", sizeof (EFI_ACPI_6_3_GENERIC_ADDRESS_STRUCTURE), > + NULL, NULL, AcpiGenericAddressParser, > + ARRAY_SIZE (AcpiGenericAddressParser) }, > + { "LowestFrequencyInteger", 4, "0x%llx", NULL }, > + { "NominalFrequencyBuffer", sizeof (EFI_ACPI_6_3_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 +578,8 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { > ARRAY_SIZE (CmArmPciAddressMapInfoParser) }, > { "EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser, > ARRAY_SIZE (CmPciInterruptMapInfoParser) }, > + { "EArmObjCpcInfo", CmArmCpcInfoParser, > + ARRAY_SIZE (CmArmCpcInfoParser) }, > { "EArmObjMax", NULL, 0 }, > }; >