From: Lukasz Luba <lukasz.luba@arm.com>
To: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: rui.zhang@intel.com, amit.kucheria@verdurent.com,
linux-kernel@vger.kernel.org, amit.kachhap@gmail.com,
daniel.lezcano@linaro.org, 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 v5 11/23] PM: EM: Add API for updating the runtime modifiable EM
Date: Wed, 20 Dec 2023 08:06:12 +0000 [thread overview]
Message-ID: <22c41b1a-333e-42b1-839f-a755d88313af@arm.com> (raw)
In-Reply-To: <2236f098-b889-4d70-b863-11a3f246889c@arm.com>
On 12/12/23 18:50, Dietmar Eggemann wrote:
> On 29/11/2023 12:08, Lukasz Luba wrote:
>
> [...]
>
>> diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
>> index 489a358b9a00..614891fde8df 100644
>> --- a/kernel/power/energy_model.c
>> +++ b/kernel/power/energy_model.c
>> @@ -221,6 +221,52 @@ static int em_allocate_perf_table(struct em_perf_domain *pd,
>> return 0;
>> }
>>
>> +/**
>> + * em_dev_update_perf_domain() - Update runtime EM table for a device
>> + * @dev : Device for which the EM is to be updated
>> + * @table : The new EM table that is going to used from now
>
> s/going to used/going to be used
>
>> + *
>> + * Update EM runtime modifiable table for the @dev using the privided @table.
>
> s/privided/provided
>
>> + *
>> + * This function uses mutex to serialize writers, so it must not be called
>> + * from non-sleeping context.
>> + *
>> + * Return 0 on success or a proper error in case of failure.
>> + */
>> +int em_dev_update_perf_domain(struct device *dev,
>> + struct em_perf_table __rcu *new_table)
>> +{
>> + struct em_perf_table __rcu *old_table;
>> + struct em_perf_domain *pd;
>> +
>> + /*
>> + * The lock serializes update and unregister code paths. When the
>> + * EM has been unregistered in the meantime, we should capture that
>> + * when entering this critical section. It also makes sure that
>
> What do you want to capture here? You want to block in this moment,
> right? Don't understand the 2. sentence here.
>
> [...]
There is general issue with module... they can reload. A driver which
registered EM can than later disappear. I had similar issues for the
devfreq cooling. It can happen at any time. In this scenario let's
consider scenario w/ 2 kernel drivers:
1. Main driver which registered EM, e.g. GPU driver
2. Thermal driver which updates that EM
When 1. starts unload process, it has to make sure that it will
not free the main EM 'pd', because the 2. might try to use e.g.
'pd->nr_perf_states' while doing update at the moment.
Thus, this 'pd' has local mutex, to avoid issues of
module unload vs. EM update. The EM unregister will block on
that mutex and let the background update finish it's critical
section.
next prev parent reply other threads:[~2023-12-20 8:05 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-29 11:08 [PATCH v5 00/23] Introduce runtime modifiable Energy Model Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 01/23] PM: EM: Add missing newline for the message log Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 02/23] PM: EM: Refactor em_cpufreq_update_efficiencies() arguments Lukasz Luba
2023-12-17 17:58 ` Qais Yousef
2023-12-19 10:30 ` Lukasz Luba
2023-12-28 16:59 ` Qais Yousef
2024-01-02 9:40 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 03/23] PM: EM: Find first CPU active while updating OPP efficiency Lukasz Luba
2023-12-17 17:58 ` Qais Yousef
2023-12-19 10:53 ` Lukasz Luba
2023-12-28 17:13 ` Qais Yousef
2024-01-02 9:42 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 04/23] PM: EM: Refactor em_pd_get_efficient_state() to be more flexible Lukasz Luba
2023-12-12 18:49 ` Dietmar Eggemann
2023-12-19 10:58 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 05/23] PM: EM: Refactor a new function em_compute_costs() Lukasz Luba
2023-12-17 17:58 ` Qais Yousef
2023-12-19 10:59 ` Lukasz Luba
2023-12-28 17:14 ` Qais Yousef
2024-01-02 9:43 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 06/23] PM: EM: Check if the get_cost() callback is present in em_compute_costs() Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 07/23] PM: EM: Refactor how the EM table is allocated and populated Lukasz Luba
2023-12-12 18:50 ` Dietmar Eggemann
2023-12-19 13:19 ` Lukasz Luba
2023-12-17 17:59 ` Qais Yousef
2023-11-29 11:08 ` [PATCH v5 08/23] PM: EM: Introduce runtime modifiable table Lukasz Luba
2023-12-12 18:50 ` Dietmar Eggemann
2023-12-19 11:33 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 09/23] PM: EM: Use runtime modified EM for CPUs energy estimation in EAS Lukasz Luba
2023-12-17 17:59 ` Qais Yousef
2023-12-19 4:03 ` Xuewen Yan
2023-12-19 8:32 ` Lukasz Luba
2023-12-28 17:32 ` Qais Yousef
2024-01-02 11:17 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 10/23] PM: EM: Add API for memory allocations for new tables Lukasz Luba
2023-12-17 17:59 ` Qais Yousef
2023-12-19 8:45 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 11/23] PM: EM: Add API for updating the runtime modifiable EM Lukasz Luba
2023-12-12 18:50 ` Dietmar Eggemann
2023-12-20 8:06 ` Lukasz Luba [this message]
2024-01-04 15:45 ` Dietmar Eggemann
2024-01-04 16:55 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 12/23] PM: EM: Add helpers to read under RCU lock the EM table Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 13/23] PM: EM: Add performance field to struct em_perf_state Lukasz Luba
2023-12-17 18:00 ` Qais Yousef
2023-12-20 8:21 ` Lukasz Luba
2023-12-28 17:45 ` Qais Yousef
2023-11-29 11:08 ` [PATCH v5 14/23] PM: EM: Support late CPUs booting and capacity adjustment Lukasz Luba
2023-12-12 18:50 ` Dietmar Eggemann
2023-12-20 8:23 ` Lukasz Luba
2023-12-17 18:00 ` Qais Yousef
2024-01-02 11:39 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 15/23] PM: EM: Optimize em_cpu_energy() and remove division Lukasz Luba
2023-12-12 18:50 ` Dietmar Eggemann
2023-12-20 8:42 ` Lukasz Luba
2024-01-04 16:30 ` Dietmar Eggemann
2024-01-04 16:56 ` Lukasz Luba
2023-12-28 18:06 ` Qais Yousef
2024-01-02 11:47 ` Lukasz Luba
2024-01-04 19:23 ` Qais Yousef
2024-01-10 13:53 ` Lukasz Luba
2024-01-15 12:21 ` Qais Yousef
2024-01-15 12:36 ` Lukasz Luba
2024-01-16 13:10 ` Qais Yousef
2024-01-16 15:34 ` Lukasz Luba
2024-01-16 19:33 ` Qais Yousef
2023-11-29 11:08 ` [PATCH v5 16/23] powercap/dtpm_cpu: Use new Energy Model interface to get table Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 17/23] powercap/dtpm_devfreq: " Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 18/23] drivers/thermal/cpufreq_cooling: Use new Energy Model interface Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 19/23] drivers/thermal/devfreq_cooling: " Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 20/23] PM: EM: Change debugfs configuration to use runtime EM table data Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 21/23] PM: EM: Remove old table Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 22/23] PM: EM: Add em_dev_compute_costs() as API for device drivers Lukasz Luba
2023-12-12 18:50 ` Dietmar Eggemann
2023-12-17 18:03 ` Qais Yousef
2023-12-18 11:56 ` Lukasz Luba
2023-12-20 11:14 ` Lukasz Luba
2023-11-29 11:08 ` [PATCH v5 23/23] Documentation: EM: Update with runtime modification design Lukasz Luba
2023-12-12 18:51 ` Dietmar Eggemann
2023-12-19 9:35 ` Lukasz Luba
2023-12-19 4:42 ` Xuewen Yan
2023-12-19 8:47 ` Lukasz Luba
2023-12-19 6:22 ` Xuewen Yan
2023-12-19 9:32 ` Lukasz Luba
2023-12-20 2:08 ` Xuewen Yan
2023-12-20 7:57 ` Lukasz Luba
2023-12-12 18:48 ` [PATCH v5 00/23] Introduce runtime modifiable Energy Model Dietmar Eggemann
2023-12-13 9:23 ` Lukasz Luba
2023-12-13 11:34 ` Dietmar Eggemann
2023-12-13 11:45 ` Rafael J. Wysocki
2023-12-13 12:20 ` Lukasz Luba
2023-12-12 18:49 ` Rafael J. Wysocki
2023-12-13 9:32 ` Lukasz Luba
2023-12-13 13:40 ` Hongyan Xia
2023-12-13 13:16 ` Lukasz Luba
2023-12-17 18:22 ` Qais Yousef
2023-12-19 10:22 ` Lukasz Luba
2023-12-28 18:41 ` Qais Yousef
2024-01-02 12:12 ` 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=22c41b1a-333e-42b1-839f-a755d88313af@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
all inboxes | Powered by JetHome®