mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Changwoo Min <changwoo@igalia.com>
To: lukasz.luba@arm.com, rafael@kernel.org, len.brown@intel.com,
	pavel@kernel.org
Cc: christian.loehle@arm.com, tj@kernel.org, kernel-dev@igalia.com,
	linux-pm@vger.kernel.org, sched-ext@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Subject: Re: [PATCH v2 00/10] PM: EM: Add netlink support for the energy model.
Date: Fri, 27 Jun 2025 12:37:45 +0900	[thread overview]
Message-ID: <b74f6484-dd16-430a-bad9-4dca6384d1dc@igalia.com> (raw)
In-Reply-To: <20250613094428.267791-1-changwoo@igalia.com>

Gentle ping as it reaches 2-weeks.

@Lukasz, @Rafael -- I have a question related to the energy model
in general. As far as I understand, the energy model describes
the performance-energy consumption tradeoff when a single CPU in
a performance domain is running. However, in reality, SoCs may
have thermal constraints, which would result in additional
constraints. For example, running all CPUs with the highest
frequency may not be possible. My question is this: does kernel
maintain and use such (thermal?) constraints?

Regards,
Changwoo Min

On 6/13/25 18:44, Changwoo Min wrote:
> There is a need to access the energy model from the userspace. One such
> example is the sched_ext schedulers [1]. The userspace part of the
> sched_ext schedules could feed the (post-processed) energy-model
> information to the BPF part of the scheduler.
> 
> Currently, debugfs is the only way to read the energy model from userspace;
> however, it lacks proper notification mechanisms when a performance domain
> and its associated energy model change.
> 
> This patch set introduces a generic netlink for the energy model, as
> discussed in [2]. It allows a userspace program to read the performance
> domain and its energy model. It notifies the userspace program when a
> performance domain is created or deleted or its energy model is updated
> through a multicast interface.
> 
> Specifically, it supports two commands:
>    - EM_CMD_GET_PDS: Get the list of information for all performance
>      domains.
>    - EM_CMD_GET_PD_TABLE: Get the energy model table of a performance
>      domain.
> 
> Also, it supports three notification events:
>    - EM_CMD_PD_CREATED: When a performance domain is created.
>    - EM_CMD_PD_DELETED: When a performance domain is deleted.
>    - EM_CMD_PD_UPDATED: When the energy model table of a performance domain
>      is updated.
> 
> This can be tested using the tool, tools/net/ynl/pyynl/cli.py, for example,
> with the following commands:
> 
>    $> tools/net/ynl/pyynl/cli.py \
>       --spec Documentation/netlink/specs/em.yaml \
>       --do get-pds
>    $> tools/net/ynl/pyynl/cli.py \
>       --spec Documentation/netlink/specs/em.yaml \
>       --do get-pd-table --json '{"pd-id": 0}'
>    $> tools/net/ynl/pyynl/cli.py \
>       --spec Documentation/netlink/specs/em.yaml \
>       --subscribe event  --sleep 10
> 
> [1] https://lwn.net/Articles/922405/
> [2] https://lore.kernel.org/lkml/a82423bc-8c38-4d57-93da-c4f20011cc92@arm.com/
> 
> ChangeLog v1 -> v2:
>    - Use YNL to generate boilerplate code. Overhaul the naming conventions
>      (command, event, notification, attribute) to follow the typical
>      conventions of other YNL-based netlink implementations.
>    - Calculate the exact message size instead of using NLMSG_GOODSIZE
>      when allocating a message (genlmsg_new). This avoids the reallocation
>      of a message.
>    - Remove an unnecessary function, em_netlink_exit(), and initialize the
>      netlink (em_netlink_init) at em_netlink.c without touching energy_model.c.
> 
> CC: Lukasz Luba <lukasz.luba@arm.com>
> CC: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> CC: Tejun Heo <tj@kernel.org>
> Signed-off-by: Changwoo Min <changwoo@igalia.com>
> 
> Changwoo Min (10):
>    PM: EM: Add em.yaml and autogen files.
>    PM: EM: Add a skeleton code for netlink notification.
>    PM: EM: Assign a unique ID when creating a performance domain.
>    PM: EM: Expose the ID of a performance domain via debugfs.
>    PM: EM: Add an iterator and accessor for the performance domain.
>    PM: EM: Implement em_nl_get_pds_doit().
>    PM: EM: Implement em_nl_get_pd_table_doit().
>    PM: EM: Implement em_notify_pd_deleted().
>    PM: EM: Implement em_notify_pd_created/updated().
>    PM: EM: Notify an event when the performance domain changes.
> 
>   Documentation/netlink/specs/em.yaml | 113 ++++++++++
>   MAINTAINERS                         |   3 +
>   include/linux/energy_model.h        |  19 ++
>   include/uapi/linux/energy_model.h   |  62 ++++++
>   kernel/power/Makefile               |   5 +-
>   kernel/power/em_netlink.c           | 311 ++++++++++++++++++++++++++++
>   kernel/power/em_netlink.h           |  34 +++
>   kernel/power/em_netlink_autogen.c   |  48 +++++
>   kernel/power/em_netlink_autogen.h   |  23 ++
>   kernel/power/energy_model.c         |  83 +++++++-
>   10 files changed, 699 insertions(+), 2 deletions(-)
>   create mode 100644 Documentation/netlink/specs/em.yaml
>   create mode 100644 include/uapi/linux/energy_model.h
>   create mode 100644 kernel/power/em_netlink.c
>   create mode 100644 kernel/power/em_netlink.h
>   create mode 100644 kernel/power/em_netlink_autogen.c
>   create mode 100644 kernel/power/em_netlink_autogen.h
> 

  parent reply	other threads:[~2025-06-27  3:38 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-13  9:44 Changwoo Min
2025-06-13  9:44 ` [PATCH v2 01/10] PM: EM: Add em.yaml and autogen files Changwoo Min
2025-06-13  9:44 ` [PATCH v2 02/10] PM: EM: Add a skeleton code for netlink notification Changwoo Min
2025-06-13  9:44 ` [PATCH v2 03/10] PM: EM: Assign a unique ID when creating a performance domain Changwoo Min
2025-06-13  9:44 ` [PATCH v2 04/10] PM: EM: Expose the ID of a performance domain via debugfs Changwoo Min
2025-06-13  9:44 ` [PATCH v2 05/10] PM: EM: Add an iterator and accessor for the performance domain Changwoo Min
2025-06-13  9:44 ` [PATCH v2 06/10] PM: EM: Implement em_nl_get_pds_doit() Changwoo Min
2025-06-13  9:44 ` [PATCH v2 07/10] PM: EM: Implement em_nl_get_pd_table_doit() Changwoo Min
2025-06-13  9:44 ` [PATCH v2 08/10] PM: EM: Implement em_notify_pd_deleted() Changwoo Min
2025-06-13  9:44 ` [PATCH v2 09/10] PM: EM: Implement em_notify_pd_created/updated() Changwoo Min
2025-06-13 20:02   ` kernel test robot
2025-06-13  9:44 ` [PATCH v2 10/10] PM: EM: Notify an event when the performance domain changes Changwoo Min
2025-06-27  3:37 ` Changwoo Min [this message]
2025-06-30 10:07   ` [PATCH v2 00/10] PM: EM: Add netlink support for the energy model Lukasz Luba
2025-07-02  1:02     ` Changwoo Min

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=b74f6484-dd16-430a-bad9-4dca6384d1dc@igalia.com \
    --to=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=lukasz.luba@arm.com \
    --cc=pavel@kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --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®