From: Lukasz Luba <lukasz.luba@arm.com>
To: Changwoo Min <changwoo@igalia.com>
Cc: christian.loehle@arm.com, tj@kernel.org, pavel@kernel.org,
len.brown@intel.com, rafael@kernel.org, kernel-dev@igalia.com,
linux-pm@vger.kernel.org, sched-ext@lists.linux.dev,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND v4 03/10] PM: EM: Add an iterator and accessor for the performance domain
Date: Mon, 6 Oct 2025 16:14:38 +0100 [thread overview]
Message-ID: <13c009f6-5fc9-41ef-aa94-acd99b9c774d@arm.com> (raw)
In-Reply-To: <20250921031928.205869-4-changwoo@igalia.com>
On 9/21/25 04:19, Changwoo Min wrote:
> Add an iterator function (for_each_em_perf_domain) that iterates all the
> performance domains in the global list. A passed callback function (cb) is
> called for each performance domain.
>
> Additionally, add a lookup function (em_perf_domain_get_by_id) that
> searches for a performance domain by matching the ID in the global list.
>
> Signed-off-by: Changwoo Min <changwoo@igalia.com>
> ---
> include/linux/energy_model.h | 15 +++++++++++++++
> kernel/power/energy_model.c | 34 ++++++++++++++++++++++++++++++++++
> 2 files changed, 49 insertions(+)
>
> diff --git a/include/linux/energy_model.h b/include/linux/energy_model.h
> index 43aa6153dc57..21279e779188 100644
> --- a/include/linux/energy_model.h
> +++ b/include/linux/energy_model.h
> @@ -344,6 +344,10 @@ struct em_perf_state *em_perf_state_from_pd(struct em_perf_domain *pd)
> return rcu_dereference(pd->em_table)->state;
> }
>
> +int for_each_em_perf_domain(int (*cb)(struct em_perf_domain*, void *),
> + void *data);
> +struct em_perf_domain *em_perf_domain_get_by_id(int id);
> +
This doesn't have to go into this header.
> #else
> struct em_data_callback {};
> #define EM_ADV_DATA_CB(_active_power_cb, _cost_cb) { }
> @@ -420,6 +424,17 @@ int em_update_performance_limits(struct em_perf_domain *pd,
> }
> static inline void em_adjust_cpu_capacity(unsigned int cpu) {}
> static inline void em_rebuild_sched_domains(void) {}
> +static inline
> +int for_each_em_perf_domain(int (*cb)(struct em_perf_domain*, void *),
> + void *data)
> +{
> + return -EINVAL;
> +}
> +static inline
> +struct em_perf_domain *em_perf_domain_get_by_id(int id)
> +{
> + return NULL;
> +}
> #endif
Please create a local helpers header:
kernel/power/em_helpers.h
and add these two declarations there. In that new
local header there is no need to implement the empty
inline functions as well (so would be simpler).
>
> #endif
> diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
> index 8998a7f4910a..740076d24479 100644
> --- a/kernel/power/energy_model.c
> +++ b/kernel/power/energy_model.c
> @@ -1000,3 +1000,37 @@ void em_rebuild_sched_domains(void)
> */
> schedule_work(&rebuild_sd_work);
> }
> +
> +int for_each_em_perf_domain(int (*cb)(struct em_perf_domain*, void *),
> + void *data)
> +{
> + struct em_perf_domain *pd;
> +
> + lockdep_assert_not_held(&em_pd_mutex);
> + guard(mutex)(&em_pd_list_mutex);
> +
> + list_for_each_entry(pd, &em_pd_list, node) {
> + int ret;
> +
> + ret = cb(pd, data);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> +struct em_perf_domain *em_perf_domain_get_by_id(int id)
> +{
> + struct em_perf_domain *pd;
> +
> + lockdep_assert_not_held(&em_pd_mutex);
> + guard(mutex)(&em_pd_list_mutex);
> +
> + list_for_each_entry(pd, &em_pd_list, node) {
> + if (pd->id == id)
> + return pd;
> + }
> +
> + return NULL;
> +}
That code looks good, you can keep it. Although, please
add the comments above these functions that they are
only used locally as helpers for the notifications.
next prev parent reply other threads:[~2025-10-06 15:14 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-21 3:19 [PATCH RESEND v4 00/10] PM: EM: Add netlink support for the energy model Changwoo Min
2025-09-21 3:19 ` [PATCH RESEND v4 01/10] PM: EM: Assign a unique ID when creating a performance domain Changwoo Min
2025-10-06 8:17 ` Lukasz Luba
2025-10-06 12:24 ` Lukasz Luba
2025-10-13 13:46 ` Changwoo Min
2025-09-21 3:19 ` [PATCH RESEND v4 02/10] PM: EM: Expose the ID of a performance domain via debugfs Changwoo Min
2025-10-06 14:26 ` Lukasz Luba
2025-09-21 3:19 ` [PATCH RESEND v4 03/10] PM: EM: Add an iterator and accessor for the performance domain Changwoo Min
2025-10-06 15:14 ` Lukasz Luba [this message]
2025-09-21 3:19 ` [PATCH RESEND v4 04/10] PM: EM: Add em.yaml and autogen files Changwoo Min
2025-10-06 15:25 ` Lukasz Luba
2025-09-21 3:19 ` [PATCH RESEND v4 05/10] PM: EM: Add a skeleton code for netlink notification Changwoo Min
2025-10-06 15:44 ` Lukasz Luba
2025-10-13 13:46 ` Changwoo Min
2025-10-13 13:53 ` Lukasz Luba
2025-10-13 14:43 ` Changwoo Min
2025-09-21 3:19 ` [PATCH RESEND v4 06/10] PM: EM: Implement em_nl_get_pds_doit() Changwoo Min
2025-10-10 9:32 ` Lukasz Luba
2025-09-21 3:19 ` [PATCH RESEND v4 07/10] PM: EM: Implement em_nl_get_pd_table_doit() Changwoo Min
2025-10-10 10:01 ` Lukasz Luba
2025-10-13 13:47 ` Changwoo Min
2025-09-21 3:19 ` [PATCH RESEND v4 08/10] PM: EM: Implement em_notify_pd_deleted() Changwoo Min
2025-10-10 10:17 ` Lukasz Luba
2025-09-21 3:19 ` [PATCH RESEND v4 09/10] PM: EM: Implement em_notify_pd_created/updated() Changwoo Min
2025-10-10 10:19 ` Lukasz Luba
2025-09-21 3:19 ` [PATCH RESEND v4 10/10] PM: EM: Notify an event when the performance domain changes Changwoo Min
2025-10-10 10:20 ` 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=13c009f6-5fc9-41ef-aa94-acd99b9c774d@arm.com \
--to=lukasz.luba@arm.com \
--cc=changwoo@igalia.com \
--cc=christian.loehle@arm.com \
--cc=kernel-dev@igalia.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@kernel.org \
--cc=rafael@kernel.org \
--cc=sched-ext@lists.linux.dev \
--cc=tj@kernel.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®