From: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Linux PM <linux-pm@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Ulf Hansson <ulf.hansson@linaro.org>
Subject: Re: [PATCH v1 03/12] PM: sleep: stats: Use array of suspend step names
Date: Thu, 25 Jan 2024 08:41:39 +0100 [thread overview]
Message-ID: <ZbIQs2R0ybg/54Zy@linux.intel.com> (raw)
In-Reply-To: <2183940.irdbgypaU6@kreacher>
On Mon, Jan 22, 2024 at 12:25:45PM +0100, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> Replace suspend_step_name() in the suspend statistics code with an array
> of suspend step names which has fewer lines of code and less overhead.
>
> While at it, remove two unnecessary line breaks in suspend_stats_show()
> for a more consistent code layout.
>
> No intentional functional impact.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
> ---
> include/linux/suspend.h | 3 ++-
> kernel/power/main.c | 48 +++++++++++++++++-------------------------------
> 2 files changed, 19 insertions(+), 32 deletions(-)
>
> Index: linux-pm/include/linux/suspend.h
> ===================================================================
> --- linux-pm.orig/include/linux/suspend.h
> +++ linux-pm/include/linux/suspend.h
> @@ -41,7 +41,8 @@ typedef int __bitwise suspend_state_t;
> #define PM_SUSPEND_MAX ((__force suspend_state_t) 4)
>
> enum suspend_stat_step {
> - SUSPEND_FREEZE = 1,
> + SUSPEND_NONE = 0,
> + SUSPEND_FREEZE,
> SUSPEND_PREPARE,
> SUSPEND_SUSPEND,
> SUSPEND_SUSPEND_LATE,
> Index: linux-pm/kernel/power/main.c
> ===================================================================
> --- linux-pm.orig/kernel/power/main.c
> +++ linux-pm/kernel/power/main.c
> @@ -319,25 +319,17 @@ static ssize_t pm_test_store(struct kobj
> power_attr(pm_test);
> #endif /* CONFIG_PM_SLEEP_DEBUG */
>
> -static char *suspend_step_name(enum suspend_stat_step step)
> -{
> - switch (step) {
> - case SUSPEND_FREEZE:
> - return "freeze";
> - case SUSPEND_PREPARE:
> - return "prepare";
> - case SUSPEND_SUSPEND:
> - return "suspend";
> - case SUSPEND_SUSPEND_NOIRQ:
> - return "suspend_noirq";
> - case SUSPEND_RESUME_NOIRQ:
> - return "resume_noirq";
> - case SUSPEND_RESUME:
> - return "resume";
> - default:
> - return "";
> - }
> -}
> +static const char * const suspend_step_names[] = {
> + [SUSPEND_NONE] = "",
> + [SUSPEND_FREEZE] = "freeze",
> + [SUSPEND_PREPARE] = "prepare",
> + [SUSPEND_SUSPEND] = "suspend",
> + [SUSPEND_SUSPEND_LATE] = "suspend_late",
> + [SUSPEND_SUSPEND_NOIRQ] = "suspend_noirq",
> + [SUSPEND_RESUME_NOIRQ] = "resume_noirq",
> + [SUSPEND_RESUME_EARLY] = "resume_early",
> + [SUSPEND_RESUME] = "resume",
> +};
>
> #define suspend_attr(_name, format_str) \
> static ssize_t _name##_show(struct kobject *kobj, \
> @@ -392,16 +384,14 @@ static struct kobj_attribute last_failed
> static ssize_t last_failed_step_show(struct kobject *kobj,
> struct kobj_attribute *attr, char *buf)
> {
> - int index;
> enum suspend_stat_step step;
> - char *last_failed_step = NULL;
> + int index;
>
> index = suspend_stats.last_failed_step + REC_FAILED_NUM - 1;
> index %= REC_FAILED_NUM;
> step = suspend_stats.failed_steps[index];
> - last_failed_step = suspend_step_name(step);
>
> - return sprintf(buf, "%s\n", last_failed_step);
> + return sprintf(buf, "%s\n", suspend_step_names[step]);
> }
> static struct kobj_attribute last_failed_step = __ATTR_RO(last_failed_step);
>
> @@ -477,26 +467,22 @@ static int suspend_stats_show(struct seq
> for (i = 1; i < REC_FAILED_NUM; i++) {
> index = last_dev + REC_FAILED_NUM - i;
> index %= REC_FAILED_NUM;
> - seq_printf(s, "\t\t\t%-s\n",
> - suspend_stats.failed_devs[index]);
> + seq_printf(s, "\t\t\t%-s\n", suspend_stats.failed_devs[index]);
> }
> seq_printf(s, " last_failed_errno:\t%-d\n",
> suspend_stats.errno[last_errno]);
> for (i = 1; i < REC_FAILED_NUM; i++) {
> index = last_errno + REC_FAILED_NUM - i;
> index %= REC_FAILED_NUM;
> - seq_printf(s, "\t\t\t%-d\n",
> - suspend_stats.errno[index]);
> + seq_printf(s, "\t\t\t%-d\n", suspend_stats.errno[index]);
> }
> seq_printf(s, " last_failed_step:\t%-s\n",
> - suspend_step_name(
> - suspend_stats.failed_steps[last_step]));
> + suspend_step_names[suspend_stats.failed_steps[last_step]]);
> for (i = 1; i < REC_FAILED_NUM; i++) {
> index = last_step + REC_FAILED_NUM - i;
> index %= REC_FAILED_NUM;
> seq_printf(s, "\t\t\t%-s\n",
> - suspend_step_name(
> - suspend_stats.failed_steps[index]));
> + suspend_step_names[suspend_stats.failed_steps[index]]);
> }
>
> return 0;
>
>
>
next prev parent reply other threads:[~2024-01-25 7:41 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-22 11:13 [PATCH v1 00/12] PM: sleep: Fix up suspend stats handling and clean up core code Rafael J. Wysocki
2024-01-22 11:22 ` [PATCH v1 01/12] PM: sleep: Simplify dpm_suspended_list walk in dpm_resume() Rafael J. Wysocki
2024-01-25 7:40 ` Stanislaw Gruszka
2024-01-22 11:24 ` [PATCH v1 02/12] PM: sleep: Relocate two device PM core functions Rafael J. Wysocki
2024-01-25 7:40 ` Stanislaw Gruszka
2024-01-22 11:25 ` [PATCH v1 03/12] PM: sleep: stats: Use array of suspend step names Rafael J. Wysocki
2024-01-25 7:41 ` Stanislaw Gruszka [this message]
2024-01-22 11:27 ` [PATCH v1 04/12] PM: sleep: stats: Use an array of step failure counters Rafael J. Wysocki
2024-01-25 7:42 ` Stanislaw Gruszka
2024-01-22 11:29 ` [PATCH v1 05/12] PM: sleep: stats: Use step_failures[0] as a counter of successful cycles Rafael J. Wysocki
2024-01-25 7:52 ` Stanislaw Gruszka
2024-01-25 15:11 ` Rafael J. Wysocki
2024-01-25 17:28 ` Stanislaw Gruszka
2024-01-22 11:31 ` [PATCH v1 06/12] PM: sleep: stats: Define suspend_stats next to the code using it Rafael J. Wysocki
2024-01-25 7:53 ` Stanislaw Gruszka
2024-01-22 11:32 ` [PATCH v1 07/12] PM: sleep: stats: Call dpm_save_failed_step() at most once per phase Rafael J. Wysocki
2024-01-22 11:33 ` [PATCH v1 08/12] PM: sleep: stats: Use locking in dpm_save_failed_dev() Rafael J. Wysocki
2024-01-25 7:59 ` Stanislaw Gruszka
2024-01-22 11:35 ` [PATCH v1 09/12] PM: sleep: stats: Log errors right after running suspend callbacks Rafael J. Wysocki
2024-01-22 11:39 ` [PATCH v1 10/12] PM: sleep: Move some assignments from under a lock Rafael J. Wysocki
2024-01-22 11:42 ` [PATCH v1 11/12] PM: sleep: Move devices to new lists earlier in each suspend phase Rafael J. Wysocki
2024-01-25 8:00 ` Stanislaw Gruszka
2024-01-22 11:44 ` [PATCH v1 12/12] PM: sleep: Call dpm_async_fn() directly " Rafael J. Wysocki
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=ZbIQs2R0ybg/54Zy@linux.intel.com \
--to=stanislaw.gruszka@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=ulf.hansson@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.