From: Lukasz Luba <lukasz.luba@arm.com>
To: Doug Anderson <dianders@chromium.org>
Cc: Matthias Kaehlcke <mka@chromium.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>,
amit daniel kachhap <amit.kachhap@gmail.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Amit Kucheria <amitk@kernel.org>, Zhang Rui <rui.zhang@intel.com>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Pierre.Gondois@arm.com, Stephen Boyd <swboyd@chromium.org>,
Rajendra Nayak <rnayak@codeaurora.org>,
Bjorn Andersson <bjorn.andersson@linaro.org>
Subject: Re: [PATCH 1/2] thermal: cooling: Check Energy Model type in cpufreq_cooling and devfreq_cooling
Date: Wed, 16 Feb 2022 23:28:17 +0000 [thread overview]
Message-ID: <adbc1cd5-7598-a0b1-629c-8dd920aac2d0@arm.com> (raw)
In-Reply-To: <CAD=FV=UtQgrwPXg4zTZtBin3LWY1yTgCKQ05MmCNqK_6F5S8VA@mail.gmail.com>
On 2/16/22 5:21 PM, Doug Anderson wrote:
> Hi,
>
> On Tue, Feb 8, 2022 at 1:32 AM Lukasz Luba <lukasz.luba@arm.com> wrote:
>>
>>> Another important thing is the consistent scale of the power values
>>> provided by the cooling devices. All of the cooling devices in a single
>>> thermal zone should have power values reported either in milli-Watts
>>> or scaled to the same 'abstract scale'.
>>
>> This can change. We have removed the userspace governor from kernel
>> recently. The trend is to implement thermal policy in FW. Dealing with
>> some intermediate configurations are causing complicated design, support
>> of the algorithm logic is also more complex.
>
> One thing that didn't get addressed is the whole "The trend is to
> implement thermal policy in FW". I'm not sure I can get on board with
> that trend. IMO "moving to FW" isn't a super great trend. FW is harder
> to update than kernel and trying to keep it in sync with the kernel
> isn't wonderful. Unless something _has_ to be in FW I personally
> prefer it to be in the kernel.
There are pros and cons for both approaches (as always).
Although, there are some use cases, where the kernel is not able to
react that fast, e.g. sudden power usage changes, which can cause
that the power rail is not able to sustain within required conditions.
When we are talking about tough requirements for those power & thermal
policies, the mechanism must be fast, precised and reliable.
Here you can find Arm reference FW implementation and an IPA clone
in there (I have been reviewing this) [1][2].
As you can see there is a new FW feature set:
"MPMM, Traffic-cop and Thermal management".
Apart from Arm implementation, there are already known thermal
monitoring mechanisms in HW/FW. Like in the new Qcom SoCs which
are using this driver code [3]. The driver receives an interrupt
about throttling conditions and just populates the thermal pressure.
>
> ...although now that I re-read this, I'm not sure which firmware you
> might be talking about. Is this the AP firmware, or some companion
> chip / coprocessor? Even so, I'd still rather see things done in the
> kernel when possible...
It's a FW run on a dedicated microprocessor. In Arm SoCs it's usually
some Cortex-M. We communicated with it from the kernel via SCMI drivers
(using shared memory and mailboxes). We recommend to use the SCMI
protocol to send e.g. 'performance request' to the FW via 'fast
channel' instead of having an implementation of PMIC and clock, and do
the voltage & freq change in the kernel (using drivers & locking). That
implementation allows to avoid costly locking and allows to go via
that SCMI cpufreq driver [4] and SCMI perf layer [5] the task scheduler.
We don't need a dedicated 'sugov' kthread in a Deadline policy to
do that work and preempt the currently running task.
IMHO the FW approach opens new opportunities.
Regards,
Lukasz
[1] https://github.com/ARM-software/SCP-firmware/pull/588
[2]
https://github.com/ARM-software/SCP-firmware/pull/588/commits/59c62ead5eb66353ae805c367bfa86192e28c410
[3]
https://elixir.bootlin.com/linux/v5.17-rc4/source/drivers/cpufreq/qcom-cpufreq-hw.c#L287
[4]
https://elixir.bootlin.com/linux/latest/source/drivers/cpufreq/scmi-cpufreq.c#L65
[5]
https://elixir.bootlin.com/linux/v5.17-rc4/source/drivers/firmware/arm_scmi/perf.c#L465
next prev parent reply other threads:[~2022-02-16 23:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-07 7:30 [PATCH 0/2] Ignore Energy Model with abstract scale in IPA and DTPM Lukasz Luba
2022-02-07 7:30 ` [PATCH 1/2] thermal: cooling: Check Energy Model type in cpufreq_cooling and devfreq_cooling Lukasz Luba
2022-02-08 0:50 ` Matthias Kaehlcke
2022-02-08 9:32 ` Lukasz Luba
2022-02-08 17:25 ` Matthias Kaehlcke
2022-02-09 11:16 ` Lukasz Luba
2022-02-09 22:17 ` Matthias Kaehlcke
2022-02-16 15:35 ` Lukasz Luba
2022-02-16 17:33 ` Doug Anderson
2022-02-16 22:13 ` Matthias Kaehlcke
2022-02-16 22:43 ` Lukasz Luba
2022-02-17 0:26 ` Matthias Kaehlcke
2022-02-17 10:15 ` Daniel Lezcano
2022-02-17 9:59 ` Daniel Lezcano
2022-02-17 10:10 ` Daniel Lezcano
2022-02-17 10:47 ` Lukasz Luba
2022-02-17 11:28 ` Daniel Lezcano
2022-02-17 12:11 ` Lukasz Luba
2022-02-17 12:33 ` Daniel Lezcano
2022-02-17 12:37 ` Lukasz Luba
2022-02-17 16:46 ` Matthias Kaehlcke
2022-02-17 16:37 ` Doug Anderson
2022-02-17 17:14 ` Matthias Kaehlcke
2022-02-17 18:05 ` Lukasz Luba
2022-02-17 18:27 ` Daniel Lezcano
2022-02-16 17:21 ` Doug Anderson
2022-02-16 23:28 ` Lukasz Luba [this message]
2022-02-17 16:50 ` Doug Anderson
2022-02-17 17:58 ` Lukasz Luba
2022-02-17 18:18 ` Lukasz Luba
2022-02-22 17:05 ` Lukasz Luba
2022-02-22 18:12 ` Daniel Lezcano
2022-02-22 18:31 ` Lukasz Luba
2022-02-22 22:10 ` Daniel Lezcano
2022-02-23 9:10 ` Lukasz Luba
2022-02-07 7:30 ` [PATCH 2/2] powercap: DTPM: Check Energy Model type for power values scale Lukasz Luba
2022-02-07 10:41 ` [PATCH 0/2] Ignore Energy Model with abstract scale in IPA and DTPM Daniel Lezcano
2022-02-07 11:44 ` Lukasz Luba
2022-02-08 7:39 ` Daniel Lezcano
2022-02-08 9:47 ` Lukasz Luba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=adbc1cd5-7598-a0b1-629c-8dd920aac2d0@arm.com \
--to=lukasz.luba@arm.com \
--cc=Pierre.Gondois@arm.com \
--cc=amit.kachhap@gmail.com \
--cc=amitk@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=daniel.lezcano@linaro.org \
--cc=dianders@chromium.org \
--cc=dietmar.eggemann@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mka@chromium.org \
--cc=rafael@kernel.org \
--cc=rnayak@codeaurora.org \
--cc=rui.zhang@intel.com \
--cc=swboyd@chromium.org \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®