lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0jy3gztTTfR_UOv_yX5w9Uj2ZqEmhmNZ63WVnFHM2rRcw@mail.gmail.com>
Date: Tue, 21 Oct 2025 19:52:17 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Changwoo Min <changwoo@...lia.com>
Cc: lukasz.luba@....com, rafael@...nel.org, len.brown@...el.com, 
	pavel@...nel.org, christian.loehle@....com, tj@...nel.org, 
	kernel-dev@...lia.com, linux-pm@...r.kernel.org, sched-ext@...ts.linux.dev, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH v6 00/10] PM: EM: Add netlink support for the energy model

On Tue, Oct 21, 2025 at 12:09 AM Changwoo Min <changwoo@...lia.com> wrote:
>
> Addressed all the comments from Lukasz and rebased the code to the head
> of the linus tree.
>
> 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/
> [3] https://lore.kernel.org/lkml/202506140306.tuIoz8rN-lkp@intel.com/#t
>
> ChangeLog v5 -> v6:
>   - Fix two problems reported by the kernel test robot.
>   - Conditionally include the iterator/accessor code for the performance
>     domain when both CONFIG_ENERGY_MODEL and CONFIG_NET are set to avoid
>     the compilation errors (patch 5).
>   - Remove an unused variable, `ret`, in em_notify_pd_deleted() to avoid
>     a warning (patch 8).
>
> ChangeLog v4 -> v5:
>   - Rebase the code to the head of the linus tree.
>   - Remove the redundant em_check_capacity_update() call from
>     em_dev_register_pd_no_update().
>   - Move patch 3 ("PM: EM: Add an iterator and accessor for the
>     performance domain") after patch 5 ("PM: EM: Add a skeleton code for
>     netlink notification").
>   - Move the declaration of for_each_em_perf_domain() and
>     em_perf_domain_get_by_id() from energy_model.h to em_netlink.h.
>   - Fix a typo in patch 7 ("PM: EM: Implement
>     em_nl_get_pd_table_doit()") and change the variable declaration
>     order in em_nl_get_pd_table_doit() following the reverse Christmas
>     tree order.
>   - Remove the empty skeleton code of em_notify_pd_created/updated() from
>     patch 8 ("PM: EM: Implement em_notify_pd_deleted()") and introduce
>     them later where they are actually implemented.
>   - Change the return type of em_notify_pd_created/updated/deleted()
>     from int to void, since we don't check it anyway.
>
> ChangeLog v3 -> v4:
>   - Move patches [3-5] to the first.
>   - Remove the ending period (".") from all of the patch subjects.
>   - Rebase the code to v6.17-rc4.
>
> ChangeLog v2 -> v3:
>   - Properly initialize a return variable in
>     em_notify_pd_created/updated() at an error path (09/10), reported by
>     the kernel test robot [3].
>   - Remove redundant initialization of a return variable in
>     em_notify_pd_deleted() at an error path (08/10).
>
> 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.
>
> Changwoo Min (10):
>   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 em.yaml and autogen files
>   PM: EM: Add a skeleton code for netlink notification
>   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        |   4 +
>  include/uapi/linux/energy_model.h   |  62 ++++++
>  kernel/power/Makefile               |   5 +-
>  kernel/power/em_netlink.c           | 309 ++++++++++++++++++++++++++++
>  kernel/power/em_netlink.h           |  39 ++++
>  kernel/power/em_netlink_autogen.c   |  48 +++++
>  kernel/power/em_netlink_autogen.h   |  23 +++
>  kernel/power/energy_model.c         |  85 +++++++-
>  10 files changed, 689 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
>
> --

Is there any particular reason why you have not picked up the tags
received by the previous iteration?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ