From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 319ABC4727C for ; Thu, 1 Oct 2020 14:09:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C07B820B1F for ; Thu, 1 Oct 2020 14:09:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732319AbgJAOJn (ORCPT ); Thu, 1 Oct 2020 10:09:43 -0400 Received: from foss.arm.com ([217.140.110.172]:35318 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732147AbgJAOJn (ORCPT ); Thu, 1 Oct 2020 10:09:43 -0400 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 22681D6E; Thu, 1 Oct 2020 07:09:42 -0700 (PDT) Received: from [10.57.50.177] (unknown [10.57.50.177]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BB99A3F6CF; Thu, 1 Oct 2020 07:09:39 -0700 (PDT) Subject: Re: [PATCH 1/2] docs: Clarify abstract scale usage for power values in Energy Model To: Doug Anderson , Rajendra Nayak Cc: LKML , Linux PM , linux-doc@vger.kernel.org, Jonathan Corbet , Daniel Lezcano , Dietmar.Eggemann@arm.com, Quentin Perret , Matthias Kaehlcke , "Rafael J. Wysocki" References: <20200929121610.16060-1-lukasz.luba@arm.com> <62540312-65a2-b6d9-86ce-b4deaaa913c1@codeaurora.org> <1f713ff6-32f6-4ea6-b7f7-4c61f097cf2a@arm.com> From: Lukasz Luba Message-ID: Date: Thu, 1 Oct 2020 15:09:37 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org Hi Douglas On 9/30/20 6:24 PM, Doug Anderson wrote: > Hi, > > On Wed, Sep 30, 2020 at 8:48 AM Rajendra Nayak wrote: >> >> >> On 9/30/2020 7:34 PM, Lukasz Luba wrote: >>> >>> >>> On 9/30/20 11:55 AM, Rajendra Nayak wrote: >>>> >>>> On 9/30/2020 1:55 PM, Lukasz Luba wrote: >>>>> Hi Douglas, >>>>> >>>>> On 9/30/20 12:53 AM, Doug Anderson wrote: >>>>>> Hi, >>>>>> >>>>>> On Tue, Sep 29, 2020 at 5:16 AM Lukasz Luba wrote: >>>>>>> >>>>>>> The Energy Model (EM) can store power values in milli-Watts or in abstract >>>>>>> scale. This might cause issues in the subsystems which use the EM for >>>>>>> estimating the device power, such as: >>>>>>> - mixing of different scales in a subsystem which uses multiple >>>>>>> (cooling) devices (e.g. thermal Intelligent Power Allocation (IPA)) >>>>>>> - assuming that energy [milli-Joules] can be derived from the EM power >>>>>>> values which might not be possible since the power scale doesn't have to >>>>>>> be in milli-Watts >>>>>>> >>>>>>> To avoid misconfiguration add the needed documentation to the EM and >>>>>>> related subsystems: EAS and IPA. >>>>>>> >>>>>>> Signed-off-by: Lukasz Luba >>>>>>> --- >>>>>>> .../driver-api/thermal/power_allocator.rst | 8 ++++++++ >>>>>>> Documentation/power/energy-model.rst | 13 +++++++++++++ >>>>>>> Documentation/scheduler/sched-energy.rst | 5 +++++ >>>>>>> 3 files changed, 26 insertions(+) >>>>>> >>>>>> I haven't read through these files in massive detail, but the quick >>>>>> skim makes me believe that your additions seem sane. In general, I'm >>>>>> happy with documenting reality, thus: >>>>>> >>>>>> Reviewed-by: Douglas Anderson >>>>> >>>>> Thank you for the review. >>>>> >>>>>> >>>>>> I will note: you haven't actually updated the device tree bindings. >>>>>> Thus, presumably, anyone who is specifying these numbers in the device >>>>>> tree is still supposed to specify them in a way that mW can be >>>>>> recovered, right? Said another way: nothing about your patches makes >>>>>> it OK to specify numbers in device trees using an "abstract scale", >>>>>> right? >>>>> >>>>> For completeness, we are talking here about the binding from: >>>>> Documentation/devicetree/bindings/arm/cpus.yaml >>>>> which is 'dynamic-power-coefficient'. Yes, it stays untouched, also the >>>>> unit (uW/MHz/V^2) which then allows to have mW in the power >>>>> values in the EM. >>>> >>>> So for platforms where 'dynamic-power-coefficient' is specified in device tree, >>>> its always expected to be derived from 'real' power numbers on these platforms in >>>> 'real' mW? >>> >>> Yes, the purpose and the name of that binding was only for 'real' >>> power in mW. >>> >>>> >>>> Atleast on Qualcomm platforms we have these numbers scaled, so in essence it >>>> can't be used to derive 'real' mW values. That said we also do not have any of >>>> the 'platform might face potential issue of mixing devices in one thermal zone >>>> of two scales' problem. >>> >>> If you have these numbers scaled, then it's probably documented >>> somewhere in your docs for your OEMs, because they might assume it's in >>> uW/MHz/V^2 (according to the bindings doc). If not, they probably >>> realized it during the measurements and comparison (that the power in >>> EM is not what they see on the power meter). >>> This binding actually helps those developers who take the experiments >>> and based on measured power values, store derived coefficient. >>> Everyone can just measure in local setup and compare the results >>> easily, speaking the same language (proposing maybe a patch adjusting >>> the value in DT). >>> >>>> >>>> So the question is, can such platforms still use 'dynamic-power-coefficient' >>>> in device tree and create an abstract scale? The other way of doing this would >>>> be to *not* specify this value in device tree and have these values stored in the >>>> cpufreq driver and register a custom callback to do the math. >>> >>> But then we would also have to change the name of that binding. >>> >>> I'd recommend you the second way that you've described. It will avoid >>> your OEMs confusion. In your cpufreq driver you can simply register >>> to EM using the em_dev_register_perf_domain(). In your local >>> callback you can do whatever you need (read driver array, firmware, >>> DT, scale or not, etc). >>> The helper code in dev_pm_opp_of_register_em() is probably not suited >>> for your use case (when you don't want to share the real power of the >>> SoC). >> >> Got it, thanks for the clarification. I will get the cpufreq driver updated >> to use em_dev_register_perf_domain() with a custom callback and get rid of these >> values from device tree. > > This sounds good. ...except... > > How exactly are boards supposed to provide their "sustainable-power" > number in this model? As far as I'm aware, there's no place to > specify this board-specific file other than in device tree, and the > bindings [1] say that this value has to be in mW. Lukasz: how do you > envision boards can provide "sustainable-power" in cases where the > energy model is in "abstract scale"? > > [1] Documentation/devicetree/bindings/thermal/thermal-zones.yaml > I am currently investigating this issue. I will keep you in CC list when I send some patches. Regards, Lukasz