Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1631712pxp; Thu, 17 Mar 2022 13:09:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyI7+UsTMvdy9OSGHIonhUqVwRN83vHom7g2PZPTJHun9szoUhZH3GOmqRXPEonRld3ES/ X-Received: by 2002:a62:1650:0:b0:4fa:5a40:6681 with SMTP id 77-20020a621650000000b004fa5a406681mr3343495pfw.86.1647547746878; Thu, 17 Mar 2022 13:09:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647547746; cv=none; d=google.com; s=arc-20160816; b=EKjdPkA/q/LF5zGCAIJKKOrfjsRQwg9lSZ7szgHLH3ZnLuHhdYfZjL7EClwpeNtmbg njj2k/eQRRbUuIivJ9bQllogzHI9hKj1eD+qHFqqlx7LkqMD+bMw+mc4aUDTHAAIWHMZ yN9LlxxHQwLX/52EC/peHEaOkAqRDWgmJ0KAj9wymtJ2KcsO0+IzARmoYTjTcrQe8o95 IV0FgU5wGHsykiVEFIfgjrPVRdHm1Z+vY8gAqZh5PXg3bfu27toHLoRQN84WHl3rTDDs a+8Dvq5btmjepo8HHZR1tXg3LYAaaFX1lmM0hx0pCAuzTr+o/g6DnOC5lkSswrQEjMTZ KJ3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=k/75BLzgmbwH23XUPZB+u0jrL8mAZ3G6XnT2L81MLWI=; b=rL5bSB7gUc6t3/BMpto+aibOzQtkUeWeXtrTaXDH8l6abX975K/J2TMww4ttqn7/6H CNMqVp2gQF/TANlpHsGR35BnQxQBN/BX/k4yP8Csr0pO0PYwV9dFnYIXxEOs9I+sQ5dy aNO9yG3DXP1sr5jJc5ycYn/p0ET1hIVJhiIChiRWnvCw7Wjw+lPtOgbnFLR7g+7ZEzfA HwuGXVpRP7hU205ZBn4RClO0cVegphB4/HrxlFT1dsRflxBpim/rzjxb7jW/mmoa74kC 6o4SA3BIdW4RZdaT26aV00IRFdopyppVtbLO3EB/FffVLPATLaKy7QgUXfQSU9zaooN7 /dsw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id o9-20020a63a809000000b003816043efc5si3335231pgf.442.2022.03.17.13.09.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Mar 2022 13:09:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 06EA229527B; Thu, 17 Mar 2022 12:56:17 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235137AbiCQOqG (ORCPT + 99 others); Thu, 17 Mar 2022 10:46:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229595AbiCQOqD (ORCPT ); Thu, 17 Mar 2022 10:46:03 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 90DAED9EAE; Thu, 17 Mar 2022 07:44:45 -0700 (PDT) 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 88A451570; Thu, 17 Mar 2022 07:44:45 -0700 (PDT) Received: from [10.57.41.19] (unknown [10.57.41.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C71FD3F7B4; Thu, 17 Mar 2022 07:44:41 -0700 (PDT) Message-ID: <76a15179-560f-d412-1512-7ec28ea62cd9@arm.com> Date: Thu, 17 Mar 2022 15:44:35 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH v1 1/3] cpufreq: CPPC: Add cppc_cpufreq_search_cpu_data Content-Language: en-US To: Marc Zyngier Cc: linux-kernel@vger.kernel.org, Ionela.Voinescu@arm.com, Lukasz.Luba@arm.com, Morten.Rasmussen@arm.com, Dietmar.Eggemann@arm.com, mka@chromium.org, daniel.lezcano@linaro.org, Catalin Marinas , Will Deacon , "Rafael J. Wysocki" , Viresh Kumar , Mark Rutland , Ard Biesheuvel , Fuad Tabba , Rob Herring , linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org References: <20220317133419.3901736-1-Pierre.Gondois@arm.com> <20220317133419.3901736-2-Pierre.Gondois@arm.com> <746641141c630dc1d02943d6133a6c8d@kernel.org> From: Pierre Gondois In-Reply-To: <746641141c630dc1d02943d6133a6c8d@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A, RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/17/22 15:20, Marc Zyngier wrote: > On 2022-03-17 13:34, Pierre Gondois wrote: >> cppc_cpufreq_get_cpu_data() allocates a new struct cppc_cpudata >> for the input CPU at each call. >> >> To search the struct associated with a cpu without allocating >> a new one, add cppc_cpufreq_search_cpu_data(). >> Also add an early prototype. >> >> This will be used in a later patch, when generating artificial >> performance states to register an artificial Energy Model in the >> cppc_cpufreq driver and enable the Energy Aware Scheduler for ACPI >> based systems. >> >> Signed-off-by: Pierre Gondois >> --- >> drivers/cpufreq/cppc_cpufreq.c | 15 +++++++++++++++ >> 1 file changed, 15 insertions(+) >> >> diff --git a/drivers/cpufreq/cppc_cpufreq.c >> b/drivers/cpufreq/cppc_cpufreq.c >> index 82d370ae6a4a..8f950fe72765 100644 >> --- a/drivers/cpufreq/cppc_cpufreq.c >> +++ b/drivers/cpufreq/cppc_cpufreq.c >> @@ -41,6 +41,8 @@ >> */ >> static LIST_HEAD(cpu_data_list); >> >> +static struct cppc_cpudata *cppc_cpufreq_search_cpu_data(unsigned int >> cpu); >> + >> static bool boost_supported; >> >> struct cppc_workaround_oem_info { >> @@ -479,6 +481,19 @@ static void cppc_cpufreq_put_cpu_data(struct >> cpufreq_policy *policy) >> policy->driver_data = NULL; >> } >> >> +static inline struct cppc_cpudata * > > Why the inline? This is hardly performance critical, and if > it is, you want something better than iterating over a list. This was made inline mainly because the function was small. The function is called only at boot, so it should not be performance critical. The 'inline' can be removed if necessary. Would letting it inlined have a negative impact ? > >> +cppc_cpufreq_search_cpu_data(unsigned int cpu) >> +{ >> + struct cppc_cpudata *iter, *tmp; >> + >> + list_for_each_entry_safe(iter, tmp, &cpu_data_list, node) { >> + if (cpumask_test_cpu(cpu, iter->shared_cpu_map)) >> + return iter; >> + } >> + >> + return NULL; >> +} >> + >> static int cppc_cpufreq_cpu_init(struct cpufreq_policy *policy) >> { >> unsigned int cpu = policy->cpu; > > Thanks, > > M. Regards, Pierre