From: Lukasz Luba <lukasz.luba@arm.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: dietmar.eggemann@arm.com, rui.zhang@intel.com,
linux-kernel@vger.kernel.org, amit.kucheria@verdurent.com,
amit.kachhap@gmail.com, viresh.kumar@linaro.org,
len.brown@intel.com, pavel@ucw.cz, mhiramat@kernel.org,
qyousef@layalina.io, wvw@google.com, linux-pm@vger.kernel.org,
rafael@kernel.org
Subject: Re: [PATCH v4 06/18] PM: EM: Check if the get_cost() callback is present in em_compute_costs()
Date: Tue, 24 Oct 2023 09:14:17 +0100 [thread overview]
Message-ID: <2ed209ec-2eef-4a41-9591-275e7d8f7676@arm.com> (raw)
In-Reply-To: <3a70280b-8cc4-9f22-92b7-088fa9cb45df@linaro.org>
On 10/23/23 19:23, Daniel Lezcano wrote:
> On 25/09/2023 10:11, Lukasz Luba wrote:
>> The em_compute_cost() is going to be re-used in runtime modified EM
>> code path. Thus, make sure that this common code is safe and won't
>> try to use the NULL pointer. The former em_compute_cost() didn't have to
>> care about runtime modification code path. The upcoming changes introduce
>> such option, but with different callback. Those two paths which use
>> get_cost() (during first EM registration) or update_power() (during
>> runtime modification) need to be safely handled in em_compute_costs().
>>
>> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
>> ---
>> kernel/power/energy_model.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
>> index 7ea882401833..35e07933b34a 100644
>> --- a/kernel/power/energy_model.c
>> +++ b/kernel/power/energy_model.c
>> @@ -116,7 +116,7 @@ static int em_compute_costs(struct device *dev,
>> struct em_perf_state *table,
>> for (i = nr_states - 1; i >= 0; i--) {
>> unsigned long power_res, cost;
>> - if (flags & EM_PERF_DOMAIN_ARTIFICIAL) {
>> + if (flags & EM_PERF_DOMAIN_ARTIFICIAL && cb->get_cost) {
>> ret = cb->get_cost(dev, table[i].frequency, &cost);
>> if (ret || !cost || cost > EM_MAX_POWER) {
>> dev_err(dev, "EM: invalid cost %lu %d\n",
>
> I do believe & operator has lower precedence than && operator, thus the
> test is actually:
>
> (flags & (EM_PERF_DOMAIN_ARTIFICIAL && cb->get_cost))
>
> but it should be
>
> ((flags & EM_PERF_DOMAIN_ARTIFICIAL) && cb->get_cost)
>
> Right ?
>
The bitwise '&' is stronger than logical '&&', so the code will
work as in your 2nd example. Although, I will change it and add
parentheses for better reading.
Thanks!
next prev parent reply other threads:[~2023-10-24 8:13 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-25 8:11 [PATCH v4 00/18] Introduce runtime modifiable Energy Model Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 01/18] PM: EM: Add missing newline for the message log Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 02/18] PM: EM: Refactor em_cpufreq_update_efficiencies() arguments Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 03/18] PM: EM: Find first CPU online while updating OPP efficiency Lukasz Luba
2023-09-26 18:32 ` Rafael J. Wysocki
2023-09-29 8:32 ` Lukasz Luba
2023-10-23 17:06 ` Daniel Lezcano
2023-10-24 7:50 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 04/18] PM: EM: Refactor em_pd_get_efficient_state() to be more flexible Lukasz Luba
2023-10-23 17:39 ` Daniel Lezcano
2023-10-24 8:09 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 05/18] PM: EM: Refactor a new function em_compute_costs() Lukasz Luba
2023-09-26 18:39 ` Rafael J. Wysocki
2023-09-29 8:38 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 06/18] PM: EM: Check if the get_cost() callback is present in em_compute_costs() Lukasz Luba
2023-09-26 18:46 ` Rafael J. Wysocki
2023-09-29 8:42 ` Lukasz Luba
2023-10-23 18:23 ` Daniel Lezcano
2023-10-24 8:14 ` Lukasz Luba [this message]
2023-09-25 8:11 ` [PATCH v4 07/18] PM: EM: Refactor struct em_perf_domain and add default_table Lukasz Luba
2023-09-26 18:52 ` Rafael J. Wysocki
2023-09-29 8:45 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 08/18] PM: EM: Add update_power() callback for runtime modifications Lukasz Luba
2023-09-26 18:59 ` Rafael J. Wysocki
2023-09-29 9:00 ` Lukasz Luba
2023-09-29 12:18 ` Rafael J. Wysocki
2023-09-25 8:11 ` [PATCH v4 09/18] PM: EM: Introduce runtime modifiable table Lukasz Luba
2023-09-26 19:12 ` Rafael J. Wysocki
2023-09-29 9:16 ` Lukasz Luba
2023-09-29 12:27 ` Rafael J. Wysocki
2023-10-06 8:03 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 10/18] PM: EM: Add RCU mechanism which safely cleans the old data Lukasz Luba
2023-09-26 10:28 ` kernel test robot
2023-09-26 19:26 ` Rafael J. Wysocki
2023-09-29 9:36 ` Lukasz Luba
2023-09-29 12:59 ` Rafael J. Wysocki
2023-10-02 13:44 ` Lukasz Luba
2023-10-06 8:46 ` Lukasz Luba
2023-10-11 16:02 ` Wei Wang
2023-10-11 16:07 ` Rafael J. Wysocki
2023-10-12 13:16 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 11/18] PM: EM: Add runtime update interface to modify EM power Lukasz Luba
2023-09-26 17:21 ` kernel test robot
2023-09-26 19:48 ` Rafael J. Wysocki
2023-09-29 10:00 ` Lukasz Luba
2023-09-29 13:18 ` Rafael J. Wysocki
2023-10-02 14:09 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 12/18] PM: EM: Use runtime modified EM for CPUs energy estimation in EAS Lukasz Luba
2023-09-26 19:54 ` Rafael J. Wysocki
2023-09-29 10:10 ` Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 13/18] Documentation: EM: Update with runtime modification design Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 14/18] PM: EM: Add performance field to struct em_perf_state Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 15/18] PM: EM: Adjust performance with runtime modification callback Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 16/18] PM: EM: Support late CPUs booting and capacity adjustment Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 17/18] PM: EM: Optimize em_cpu_energy() and remove division Lukasz Luba
2023-09-25 8:11 ` [PATCH v4 18/18] Documentation: EM: Update information about performance field Lukasz Luba
2023-09-28 21:56 ` [PATCH v4 00/18] Introduce runtime modifiable Energy Model Qais Yousef
2023-10-03 8:06 ` 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=2ed209ec-2eef-4a41-9591-275e7d8f7676@arm.com \
--to=lukasz.luba@arm.com \
--cc=amit.kachhap@gmail.com \
--cc=amit.kucheria@verdurent.com \
--cc=daniel.lezcano@linaro.org \
--cc=dietmar.eggemann@arm.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=pavel@ucw.cz \
--cc=qyousef@layalina.io \
--cc=rafael@kernel.org \
--cc=rui.zhang@intel.com \
--cc=viresh.kumar@linaro.org \
--cc=wvw@google.com \
/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
Powered by JetHome