Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp2244226imw; Wed, 6 Jul 2022 02:34:53 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tTicLueyzG2qt8HBA9i/fRvwJ7OUgbOHaGYh3QivgxWLADm3CB4ef+YKulQOoa41vu4Psy X-Received: by 2002:aa7:9a11:0:b0:525:2412:920a with SMTP id w17-20020aa79a11000000b005252412920amr47494627pfj.66.1657100093395; Wed, 06 Jul 2022 02:34:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657100093; cv=none; d=google.com; s=arc-20160816; b=uHqKqFQCcCouUv+RKtWH04j4gJtDfAFcG/maKV1rzlPeeeyWrZJSikYteM4h5qsLBz 29gprpL0sozhbuzytB/QG2+dr70lkWtU6R4+vck8NbAOUmq/CEq4x6Eu28VgHLCiPQ0L 7yv61989fC8VQmx7OTAFWQNOUqOBFNaO54aL/DjuwcobUWAOvHhwsGvCE7d6VZP3BWRj xXS2/GsOeMFf4KSb7vyBDMXlMuLWFuQ2J4wcHW4SAT7q7OciHUT1v2Urv1F5iGjTnSXF lqxmdnc8mtF7DduRb2gXpJpl0ezMfYgKz6CzL09H1r5cl3+EEWPs7lQb7VmFl4TlJXDs ltSg== 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=q6Dux5fMTxURnflKZSbjOk0x93w1gw0BOVgqiKA6vZA=; b=b3Tcwoy8xtNgzI0X7J9hqUu87KPKzoMjIsrvuJC38Lb5MdbkHLOUkWWex5jYwSg3Ia ADdJ4f96s2kqJIVbYXQw62oYLAYd6p5maqi0eQTqh9HF1l5W2SorSPvKePoLwC8WI7Rx 1cXLggNcXR7SY5/o4tLkPd/5Cl3TjGhi3KBMFYSjPGkNYqyvWMKyZlVhFqEpKqHRiXvM +aZ8Q/ZfrUw3SW7+AGZyxrHZ2lgLfZppLQwYod58kq+UiZLOTsumwIZd2UIyOFu/r9KF NtxdatR8IpmevM7OKkV7GpADIpZXAtr1p6akoUfprmvhuSPK+P4BzKlJ/alWewN86VDz vzxw== 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:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bv13-20020a17090af18d00b001efba5ba265si718975pjb.103.2022.07.06.02.34.30; Wed, 06 Jul 2022 02:34:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233050AbiGFJLe (ORCPT + 99 others); Wed, 6 Jul 2022 05:11:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232926AbiGFJLS (ORCPT ); Wed, 6 Jul 2022 05:11:18 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 51E872872E; Wed, 6 Jul 2022 02:08:10 -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 2673115A1; Wed, 6 Jul 2022 02:08:10 -0700 (PDT) Received: from [10.57.9.19] (unknown [10.57.9.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 08F243F66F; Wed, 6 Jul 2022 02:08:06 -0700 (PDT) Message-ID: <95d76278-ce40-aab8-1418-322f8b4a3072@arm.com> Date: Wed, 6 Jul 2022 10:08:05 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH 4/4] cpufreq: scmi: Support the power scale in micro-Watts in SCMI v3.1 Content-Language: en-US To: Daniel Lezcano Cc: amitk@kernel.org, rui.zhang@intel.com, viresh.kumar@linaro.org, rafael@kernel.org, dietmar.eggemann@arm.com, nm@ti.com, sboyd@kernel.org, sudeep.holla@arm.com, cristian.marussi@arm.com, linux-kernel@vger.kernel.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org References: <20220622145802.13032-1-lukasz.luba@arm.com> <20220622145802.13032-5-lukasz.luba@arm.com> <653f63e5-c794-27fb-115a-7b051850991b@linaro.org> From: Lukasz Luba In-Reply-To: <653f63e5-c794-27fb-115a-7b051850991b@linaro.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham 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 7/5/22 10:25, Daniel Lezcano wrote: > On 22/06/2022 16:58, Lukasz Luba wrote: >> The SCMI v3.1 adds support for power values in micro-Watts. They are not >> always in milli-Watts anymore (ignoring the bogo-Watts). Thus, the power >> must be converted conditionally before sending to Energy Model. Add the >> logic which handles the needed checks and conversions. >> >> Signed-off-by: Lukasz Luba >> --- >>   drivers/cpufreq/scmi-cpufreq.c | 15 ++++++++++----- >>   1 file changed, 10 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/cpufreq/scmi-cpufreq.c >> b/drivers/cpufreq/scmi-cpufreq.c >> index bfd35583d653..513a071845c2 100644 >> --- a/drivers/cpufreq/scmi-cpufreq.c >> +++ b/drivers/cpufreq/scmi-cpufreq.c >> @@ -100,7 +100,7 @@ static int __maybe_unused >>   scmi_get_cpu_power(struct device *cpu_dev, unsigned long *power, >>              unsigned long *KHz) >>   { >> -    bool power_scale_mw = perf_ops->power_scale_mw_get(ph); >> +    enum scmi_power_scale power_scale = perf_ops->power_scale_get(ph); >>       unsigned long Hz; >>       int ret, domain; >> @@ -114,8 +114,8 @@ scmi_get_cpu_power(struct device *cpu_dev, >> unsigned long *power, >>       if (ret) >>           return ret; >> -    /* Provide bigger resolution power to the Energy Model */ >> -    if (power_scale_mw) >> +    /* Convert the power to uW if it is mW (ignore bogoW) */ >> +    if (power_scale == SCMI_POWER_MILLIWATTS) >>           *power *= MICROWATT_PER_MILLIWATT; >>       /* The EM framework specifies the frequency in KHz. */ >> @@ -255,8 +255,9 @@ static int scmi_cpufreq_exit(struct cpufreq_policy >> *policy) >>   static void scmi_cpufreq_register_em(struct cpufreq_policy *policy) >>   { >>       struct em_data_callback em_cb = EM_DATA_CB(scmi_get_cpu_power); >> -    bool power_scale_mw = perf_ops->power_scale_mw_get(ph); >> +    enum scmi_power_scale power_scale = perf_ops->power_scale_get(ph); >>       struct scmi_data *priv = policy->driver_data; >> +    bool em_power_scale = false; > > Just pass 'false' to em_dev_register_perf_domain() We cannot, > >>       /* >>        * This callback will be called for each policy, but we don't >> need to >> @@ -268,9 +269,13 @@ static void scmi_cpufreq_register_em(struct >> cpufreq_policy *policy) >>       if (!priv->nr_opp) >>           return; >> +    if (power_scale == SCMI_POWER_MILLIWATTS >> +        || power_scale == SCMI_POWER_MICROWATTS) >> +        em_power_scale = true; >> + because sometimes it's 'true'. >>       em_dev_register_perf_domain(get_cpu_device(policy->cpu), >> priv->nr_opp, >>                       &em_cb, priv->opp_shared_cpus, >> -                    power_scale_mw); >> +                    em_power_scale); Then we just use the variable here in single call. >>   } >>   static struct cpufreq_driver scmi_cpufreq_driver = { > >