cpuidle: sysfs: Display idle state enter function name
PATCH 1/1 cpuidle: sysfs: Display idle state enter function name
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., "C1") to its concrete kernel implementation (e.g., acpi_idle_do_entry or poll_idle).
Signed-off-by Aaron Tomlin <[email protected]>
--- Documentation/ABI/testing/sysfs-devices-system-cpu | 7 +++++++ drivers/cpuidle/sysfs.c | 9 +++++++++ 2 files changed, 16 insertions(+)
Documentation/ABI/testing/sysfs-devices-system-cpu +7 -0
@@ -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 <[email protected]> +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
drivers/cpuidle/sysfs.c +9 -0
@@ -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);
Signature · 1 line
2.51.0