[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAJZ5v0hUWMgJVAZ36_9k8N3AdZ_rGajKpQSprF6QwUtxmpH2qw@mail.gmail.com>
Date: Thu, 20 Nov 2025 16:36:21 +0100
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Aaron Tomlin <atomlin@...mlin.com>
Cc: rafael@...nel.org, daniel.lezcano@...aro.org, gregkh@...uxfoundation.org,
nathan@...nel.org, linux-pm@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/1] cpuidle: sysfs: Display idle state enter function name
On Wed, Nov 19, 2025 at 1:26 AM Aaron Tomlin <atomlin@...mlin.com> wrote:
>
> This patch introduces a read-only "enter_function" attribute to the
> cpuidle sysfs interface. It exports the kernel symbolic name of the
> enter callback responsible for executing the CPU idle state entry
> state->enter(). It allows users to reliably map an abstract C-state
> e.g., "C0", to its concrete kernel implementation (e.g., poll_idle).
>
> Signed-off-by: Aaron Tomlin <atomlin@...mlin.com>
I'm not really sure how this helps.
For example, the intel_idle driver uses the same function for all idle
states except for the polling one, which is already advertised as
polling.
Besides, why do you want users to look into the kernel source code to
figure things out?
> ---
> Documentation/ABI/testing/sysfs-devices-system-cpu | 7 +++++++
> drivers/cpuidle/sysfs.c | 9 +++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
> index 8aed6d94c4cd..7be4555d502a 100644
> --- a/Documentation/ABI/testing/sysfs-devices-system-cpu
> +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
> @@ -217,6 +217,13 @@ Description:
> time (in microseconds) this cpu should spend in this idle state
> to make the transition worth the effort.
>
> +What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/enter_function
> +Date: November 2025
> +KernelVersion: v6.18
> +Contact: Linux power management list <linux-pm@...r.kernel.org>
> +Description:
> + (RO) Display the symbolic name of the idle state's enter callback.
> +
> What: /sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/
> Date: March 2018
> KernelVersion: v4.17
> diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
> index 61de64817604..dbd8d796ad29 100644
> --- a/drivers/cpuidle/sysfs.c
> +++ b/drivers/cpuidle/sysfs.c
> @@ -314,6 +314,13 @@ static ssize_t show_state_default_status(struct cpuidle_state *state,
> state->flags & CPUIDLE_FLAG_OFF ? "disabled" : "enabled");
> }
>
> +static ssize_t show_state_enter_function(struct cpuidle_state *state,
> + struct cpuidle_state_usage *state_usage,
> + char *buf)
> +{
> + return sysfs_emit(buf, "%ps\n", state->enter);
> +}
> +
> define_one_state_ro(name, show_state_name);
> define_one_state_ro(desc, show_state_desc);
> define_one_state_ro(latency, show_state_exit_latency);
> @@ -326,6 +333,7 @@ define_one_state_rw(disable, show_state_disable, store_state_disable);
> define_one_state_ro(above, show_state_above);
> define_one_state_ro(below, show_state_below);
> define_one_state_ro(default_status, show_state_default_status);
> +define_one_state_ro(enter_function, show_state_enter_function);
>
> static struct attribute *cpuidle_state_default_attrs[] = {
> &attr_name.attr,
> @@ -340,6 +348,7 @@ static struct attribute *cpuidle_state_default_attrs[] = {
> &attr_above.attr,
> &attr_below.attr,
> &attr_default_status.attr,
> + &attr_enter_function.attr,
> NULL
> };
> ATTRIBUTE_GROUPS(cpuidle_state_default);
> --
> 2.51.0
>
>
Powered by blists - more mailing lists