Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp625809pxb; Thu, 17 Feb 2022 11:04:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJz8xMknDZQFaB/WMDsUum14c7c4YAs3rEgNQ6QMMO7X9yZZVKIV7d01FzRNEj6ms8qTKZnY X-Received: by 2002:a17:906:d935:b0:6cc:fcfc:c286 with SMTP id rn21-20020a170906d93500b006ccfcfcc286mr3451046ejb.423.1645124665248; Thu, 17 Feb 2022 11:04:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645124665; cv=none; d=google.com; s=arc-20160816; b=RNrPGBmv2cRK0ustUsM+wwnCtvUdjjHi3aPuqbXqRTVfXDm0axRVUnXfVXoNsM5w0s G7thIokIp08X3xjmgeq84mzsq+BrLuZE/9ngbpioT/BJqWv3YyZVJTF65p2JdRblb7NH /1EGWOBfGNsQq90W8Pr1g4ykduU4sBdVnCku0ETIYPhTamtgYJTe86CBB6efWx9FRkxE 04J/vYAtX5jabiygFd1RadXjwGHD6YZyseX8mhcb5cTMdxJB6XsFaUHfs6Atlq3bYI+V NrEuDlMS5xMNrtWAFYzoI7LaahGzalHZYcah1BD4iE0uy0f2u9bZ1gX28edLffCfaFFU e1Yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=JsvdilibKA558COydy489Ka9rgV+u9nS4CLEyuS7f4Y=; b=hkGH6pvwfG381evbo7O+A49Cu8tPYT5Xyn7NCZRT3aR4TvSpb8N2Ar/fcao2Wmp4Hq XljjXBJTwxYxsiKzy06yuKmc888RMhJJIO0lN2vVcBJm4gBOTThqAiaQFta93M4ZIbw6 KjsvyXQ2ktLnpf9aV0oZwfxGUNEs/0z8sUErtwuuVsdWgnmPK/EJLsrSjaaZUsvcEPWo vtCLtOdKr/eBGRThKYetRwLviXnjYXEKcSIye1ORtMYf2TQaM0Dm511ntQahuNeV0dLP 1Gt6d13bD2NExVHUF4qeVD7nH74MBVTSOQVlBnw2BfVP4DrQE9DM/FAuAX7wJXb0idgf isTw== 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 b9si1827043edz.481.2022.02.17.11.03.59; Thu, 17 Feb 2022 11:04:25 -0800 (PST) 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 S243966AbiBQSFf (ORCPT + 99 others); Thu, 17 Feb 2022 13:05:35 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:54346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241274AbiBQSFe (ORCPT ); Thu, 17 Feb 2022 13:05:34 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 59C1D284D21; Thu, 17 Feb 2022 10:05:19 -0800 (PST) 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 217B6113E; Thu, 17 Feb 2022 10:05:19 -0800 (PST) Received: from [10.57.17.240] (unknown [10.57.17.240]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0A1D03F718; Thu, 17 Feb 2022 10:05:15 -0800 (PST) Subject: Re: [PATCH 1/2] thermal: cooling: Check Energy Model type in cpufreq_cooling and devfreq_cooling To: Matthias Kaehlcke , Doug Anderson Cc: Daniel Lezcano , LKML , Linux PM , amit daniel kachhap , Viresh Kumar , "Rafael J. Wysocki" , Amit Kucheria , Zhang Rui , Dietmar Eggemann , Pierre.Gondois@arm.com, Stephen Boyd , Rajendra Nayak , Bjorn Andersson , jorcrous@amazon.com, Rob Clark References: <4a7d4e94-1461-5bac-5798-29998af9793a@arm.com> <7c059f4f-7439-0cad-c398-96dbde4e49c1@linaro.org> <5b8ca53e-3595-85fd-5ae9-a5e8285e8513@arm.com> From: Lukasz Luba Message-ID: <7b51e2a9-99c3-f33c-690a-fa72692da612@arm.com> Date: Thu, 17 Feb 2022 18:05:14 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.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 X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS,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 2/17/22 5:14 PM, Matthias Kaehlcke wrote: > On Thu, Feb 17, 2022 at 08:37:39AM -0800, Doug Anderson wrote: >> Hi, >> >> On Thu, Feb 17, 2022 at 2:47 AM Lukasz Luba wrote: >>> >>> Hi Daniel, >>> >>> On 2/17/22 10:10 AM, Daniel Lezcano wrote: >>>> On 16/02/2022 18:33, Doug Anderson wrote: >>>>> Hi, >>>>> >>>>> On Wed, Feb 16, 2022 at 7:35 AM Lukasz Luba wrote: >>>>>> >>>>>> Hi Matthias, >>>>>> >>>>>> On 2/9/22 10:17 PM, Matthias Kaehlcke wrote: >>>>>>> On Wed, Feb 09, 2022 at 11:16:36AM +0000, Lukasz Luba wrote: >>>>>>>> >>>>>>>> >>>>>>>> On 2/8/22 5:25 PM, Matthias Kaehlcke wrote: >>>>>>>>> On Tue, Feb 08, 2022 at 09:32:28AM +0000, Lukasz Luba wrote: >>>>>>>>>> >>>>>>>>>> >>>>>> >>>>>> [snip] >>>>>> >>>>>>>>>> Could you point me to those devices please? >>>>>>>>> >>>>>>>>> arch/arm64/boot/dts/qcom/sc7180-trogdor-* >>>>>>>>> >>>>>>>>> Though as per above they shouldn't be impacted by your change, >>>>>>>>> since the >>>>>>>>> CPUs always pretend to use milli-Watts. >>>>>>>>> >>>>>>>>> [skipped some questions/answers since sc7180 isn't actually >>>>>>>>> impacted by >>>>>>>>> the change] >>>>>>>> >>>>>>>> Thank you Matthias. I will investigate your setup to get better >>>>>>>> understanding. >>>>>>> >>>>>>> Thanks! >>>>>>> >>>>>> >>>>>> I've checked those DT files and related code. >>>>>> As you already said, this patch is safe for them. >>>>>> So we can apply it IMO. >>>>>> >>>>>> >>>>>> -------------Off-topic------------------ >>>>>> Not in $subject comments: >>>>>> >>>>>> AFAICS based on two files which define thermal zones: >>>>>> sc7180-trogdor-homestar.dtsi >>>>>> sc7180-trogdor-coachz.dtsi >>>>>> >>>>>> only the 'big' cores are used as cooling devices in the >>>>>> 'skin_temp_thermal' - the CPU6 and CPU7. >>>>>> >>>>>> I assume you don't want to model at all the power usage >>>>>> from the Little cluster (which is quite big: 6 CPUs), do you? >>>>>> I can see that the Little CPUs have small dyn-power-coeff >>>>>> ~30% of the big and lower max freq, but still might be worth >>>>>> to add them to IPA. You might give them more 'weight', to >>>>>> make sure they receive more power during power split. >>>>>> >>>>>> You also don't have GPU cooling device in that thermal zone. >>>>>> Based on my experience if your GPU is a power hungry one, >>>>>> e.g. 2-4Watts, you might get better results when you model >>>>>> this 'hot' device (which impacts your temp sensor reported value). >>>>> >>>>> I think the two boards you point at (homestar and coachz) are just the >>>>> two that override the default defined in the SoC dtsi file. If you >>>>> look in sc7180.dtsi you'll see 'gpuss1-thermal' which has a cooling >>>>> map. You can also see the cooling maps for the littles. >>>>> >>>>> I guess we don't have a `dynamic-power-coefficient` for the GPU, >>>>> though? Seems like we should, but I haven't dug through all the code >>>>> here... >>>> >>>> The dynamic-power-coefficient is available for OPPs which includes >>>> CPUfreq and devfreq. As the GPU is managed by devfreq, setting the >>>> dynamic-power-coefficient makes the energy model available for it. >>>> >>>> However, the OPPs must define the frequency and the voltage. That is the >>>> case for most platforms except on QCom platform. >>>> >>>> That may not be specified as it uses a frequency index and the hardware >>>> does the voltage change in our back. The QCom cpufreq backend get the >>>> voltage table from a register (or whatever) and completes the voltage >>>> values for the OPPs, thus adding the information which is missing in the >>>> device tree. The energy model can then initializes itself and allows the >>>> usage of the Energy Aware Scheduler. >>>> >>>> However this piece of code is missing for the GPU part. >>>> >>> >>> Thank you for joining the discussion. I don't know about that Qcom >>> GPU voltage information is missing. >>> >>> If the voltage is not available (only the frequencies), there is >>> another way. There is an 'advanced' EM which uses registration function: >>> em_dev_register_perf_domain(). It uses a local driver callback to get >>> power for each found frequency. It has benefit because there is no >>> restriction to 'fit' into the math formula, instead just avg power >>> values can be feed into EM. It's called 'advanced' EM [1]. >> >> It seems like there _should_ be a way to get the voltage out for GPU >> operating points, like is done with cpufreq in >> qcom_cpufreq_hw_read_lut(), but it might need someone with Qualcomm >> documentation to help with it. Maybe Rajendra would be able to help? >> Adding Jordon and Rob to this conversation in case they're aware of >> anything. >> >> As you said, we could just list a power for each frequency, though. >> >> I'm actually not sure which one would be more accurate across a range >> of devices with different "corners": specifying a dynamic power >> coefficient used for all "corners" and then using the actual voltage >> and doing the math, or specifying a power number for each frequency >> and ignoring the actual voltage used. In any case we're trying to get >> ballpark numbers and not every device will be exactly the same, so >> probably it doesn't matter that much. >> >> >>> Now we hit (again) the DT & EM issue (it's an old one, IIRC Morten >>> was proposing from ~2014 this upstream, but EAS wasn't merged back >>> then): >>> where to store these power-freq values, which are then used by the >>> callback. We have the 'dynamic-power-coefficient' in DT, but >>> it has limitations. It would be good to have this simple array >>> attached to the GPU/CPU node. IMHO it meet the requirement of DT, >>> it describes the HW (it would have HZ and Watts values). >>> >>> Doug, Matthias could you have a look at that function and its >>> usage, please [1]? >>> If you guys would support me in this, I would start, with an RFC >>> proposal, a discussion on LKML. >>> >>> [1] >>> https://elixir.bootlin.com/linux/v5.17-rc4/source/Documentation/power/energy-model.rst#L87 >> >> Matthias: I think you've spent more time on the thermal stuff than me >> so I'll assume you'll follow-up here. If not then please yell! >> >> Ideally, though, someone from Qualcomm would jump in an own this. >> Basically it allows more intelligently throttling the GPU and CPU >> together in tandem instead of treating them separately IIUC, right? > > Yes, I think for the em_dev_register_perf_domain() route support from > Qualcomm would be needed since "Drivers must provide a callback > function returning tuples for each performance > state. ". > Not necessarily. It might be done 'generically' by fwk. There are other benefits of this 'energy-model' entry in the DT. I'll list them in the cover letter. Let me send an RFC, so we could discuss there. Thanks guys! Regards, Lukasz