]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pmdomain: core: Show latency/residency for domain idle states in debugfs
authorUlf Hansson <ulf.hansson@linaro.org>
Mon, 19 Jan 2026 14:31:14 +0000 (15:31 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 1 Apr 2026 11:07:31 +0000 (13:07 +0200)
Similar to how cpuidle provides the values for latency and residency for
CPU's idle states through sysfs, let's make the corresponding data for PM
domain's idle states available for user space, via genpd's debugfs support.

Suggested-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/pmdomain/core.c

index 3b2e152dfd35c399e4823dc993b89c2751890884..4e9088ce3a2551b015e97cbb10a4f6aa3edf2429 100644 (file)
@@ -3809,15 +3809,24 @@ static int idle_states_desc_show(struct seq_file *s, void *data)
        if (ret)
                return -ERESTARTSYS;
 
-       seq_puts(s, "State  Name\n");
+       seq_puts(s, "State  Latency(us)  Residency(us)  Name\n");
 
        for (i = 0; i < genpd->state_count; i++) {
                struct genpd_power_state *state = &genpd->states[i];
+               u64 latency, residency;
                char state_name[7];
 
+               latency = state->power_off_latency_ns +
+                       state->power_on_latency_ns;
+               do_div(latency, NSEC_PER_USEC);
+
+               residency = state->residency_ns;
+               do_div(residency, NSEC_PER_USEC);
+
                snprintf(state_name, ARRAY_SIZE(state_name), "S%-5d", i);
-               seq_printf(s, "%-6s %s\n",
-                          state_name, state->name ?: "N/A");
+               seq_printf(s, "%-6s %-12llu %-14llu %s\n",
+                          state_name, latency, residency,
+                          state->name ?: "N/A");
        }
 
        genpd_unlock(genpd);