Re: [PATCH] Revert "include/linux/suspend.h: Only show pm_pr_dbg messages at suspend/resume"

Mario Limonciello
2024-04-22T14:33:16Z

On 4/22/2024 04:36, xiongxin wrote:
> This reverts commit cdb8c100d8a4b4e31c829724e40b4fdf32977cce.
>
> In the suspend process, pm_pr_dbg() is called before setting
> pm_suspend_target_state. As a result, this part of the log cannot be
> output.
>
> pm_pr_dbg() also outputs debug logs for hibernate, but
> pm_suspend_target_state is not set, resulting in hibernate debug logs
> can only be output through dynamic debug, which is very inconvenient.

As an alternative, how about exporting and renaming the variable
in_suspend in kernel/power/hibernate.c and considering that to tell if
the hibernate process is going on?

Then it should work just the same as it does at suspend.

>
> Signed-off-by: xiongxin <xiongxin@kylinos.cn>
>
> diff --git a/include/linux/suspend.h b/include/linux/suspend.h
> index da6ebca3ff77..415483b89b11 100644
> --- a/include/linux/suspend.h
> +++ b/include/linux/suspend.h
> @@ -503,7 +503,6 @@ static inline void unlock_system_sleep(unsigned int flags) {}
> #ifdef CONFIG_PM_SLEEP_DEBUG
> extern bool pm_print_times_enabled;
> extern bool pm_debug_messages_on;
> -extern bool pm_debug_messages_should_print(void);
> static inline int pm_dyn_debug_messages_on(void)
> {
> #ifdef CONFIG_DYNAMIC_DEBUG
> @@ -517,14 +516,14 @@ static inline int pm_dyn_debug_messages_on(void)
> #endif
> #define __pm_pr_dbg(fmt, ...) \
> do { \
> - if (pm_debug_messages_should_print()) \
> + if (pm_debug_messages_on) \
> printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); \
> else if (pm_dyn_debug_messages_on()) \
> pr_debug(fmt, ##__VA_ARGS__); \
> } while (0)
> #define __pm_deferred_pr_dbg(fmt, ...) \
> do { \
> - if (pm_debug_messages_should_print()) \
> + if (pm_debug_messages_on) \
> printk_deferred(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); \
> } while (0)
> #else
> @@ -542,8 +541,7 @@ static inline int pm_dyn_debug_messages_on(void)
> /**
> * pm_pr_dbg - print pm sleep debug messages
> *
> - * If pm_debug_messages_on is enabled and the system is entering/leaving
> - * suspend, print message.
> + * If pm_debug_messages_on is enabled, print message.
> * If pm_debug_messages_on is disabled and CONFIG_DYNAMIC_DEBUG is enabled,
> * print message only from instances explicitly enabled on dynamic debug's
> * control.
> diff --git a/kernel/power/main.c b/kernel/power/main.c
> index a9e0693aaf69..aa754241aaa6 100644
> --- a/kernel/power/main.c
> +++ b/kernel/power/main.c
> @@ -611,12 +611,6 @@ power_attr_ro(pm_wakeup_irq);
>
> bool pm_debug_messages_on __read_mostly;
>
> -bool pm_debug_messages_should_print(void)
> -{
> - return pm_debug_messages_on && pm_suspend_target_state != PM_SUSPEND_ON;
> -}
> -EXPORT_SYMBOL_GPL(pm_debug_messages_should_print);
> -
> static ssize_t pm_debug_messages_show(struct kobject *kobj,
> struct kobj_attribute *attr, char *buf)
> {