diff options
author | Petr Mladek <pmladek@suse.com> | 2025-03-27 11:09:34 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.com> | 2025-03-27 11:09:34 +0100 |
commit | f49040c7aaa5532a1f94355ef5073c49e6b32349 (patch) | |
tree | ee9513bba2c685226ab4addf98152afd262c50c3 /kernel/printk/printk.c | |
parent | c1aa3daa517292303d98ff61f0440c354669f948 (diff) | |
parent | 72c96a2dacc0fb056d13a5f02b0845c4c910fe54 (diff) |
Merge branch 'for-6.15-console-suspend-api-cleanup' into for-linus
Diffstat (limited to 'kernel/printk/printk.c')
-rw-r--r-- | kernel/printk/printk.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 74b4734a87b9..1cfc943af62c 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2751,11 +2751,11 @@ module_param_named(console_no_auto_verbose, printk_console_no_auto_verbose, bool MODULE_PARM_DESC(console_no_auto_verbose, "Disable console loglevel raise to highest on oops/panic/etc"); /** - * suspend_console - suspend the console subsystem + * console_suspend_all - suspend the console subsystem * * This disables printk() while we go into suspend states */ -void suspend_console(void) +void console_suspend_all(void) { struct console *con; @@ -2778,7 +2778,7 @@ void suspend_console(void) synchronize_srcu(&console_srcu); } -void resume_console(void) +void console_resume_all(void) { struct console_flush_type ft; struct console *con; @@ -3360,7 +3360,12 @@ void console_unblank(void) */ cookie = console_srcu_read_lock(); for_each_console_srcu(c) { - if ((console_srcu_read_flags(c) & CON_ENABLED) && c->unblank) { + short flags = console_srcu_read_flags(c); + + if (flags & CON_SUSPENDED) + continue; + + if ((flags & CON_ENABLED) && c->unblank) { found_unblank = true; break; } @@ -3397,7 +3402,12 @@ void console_unblank(void) cookie = console_srcu_read_lock(); for_each_console_srcu(c) { - if ((console_srcu_read_flags(c) & CON_ENABLED) && c->unblank) + short flags = console_srcu_read_flags(c); + + if (flags & CON_SUSPENDED) + continue; + + if ((flags & CON_ENABLED) && c->unblank) c->unblank(); } console_srcu_read_unlock(cookie); @@ -3515,10 +3525,10 @@ struct tty_driver *console_device(int *index) /* * Prevent further output on the passed console device so that (for example) - * serial drivers can disable console output before suspending a port, and can + * serial drivers can suspend console output before suspending a port, and can * re-enable output afterwards. */ -void console_stop(struct console *console) +void console_suspend(struct console *console) { __pr_flush(console, 1000, true); console_list_lock(); @@ -3533,9 +3543,9 @@ void console_stop(struct console *console) */ synchronize_srcu(&console_srcu); } -EXPORT_SYMBOL(console_stop); +EXPORT_SYMBOL(console_suspend); -void console_start(struct console *console) +void console_resume(struct console *console) { struct console_flush_type ft; bool is_nbcon; @@ -3560,7 +3570,7 @@ void console_start(struct console *console) __pr_flush(console, 1000, true); } -EXPORT_SYMBOL(console_start); +EXPORT_SYMBOL(console_resume); #ifdef CONFIG_PRINTK static int unregister_console_locked(struct console *console); |