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

Mario Limonciello
2024-04-22T15:02:39Z

On 4/22/2024 09:45, Rafael J. Wysocki wrote:
> On Mon, Apr 22, 2024 at 4:33 PM Mario Limonciello
> <mario.limonciello@amd.com> wrote:
>>
>> 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.
>
> Well, this is not the only part that stopped working AFAICS. I'll
> queue up the revert.

I just tested the revert to see what happens to other drivers but it's
going to have more collateral damage.

ERROR: modpost: "pm_debug_messages_on"
[drivers/platform/x86/amd/pmc/amd-pmc.ko] undefined!

>
> Thanks!
>
>>>
>>> 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)
>>> {
>>