mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 07:31:45 +00:00
printk: flush consoles before checking progress
Commit9e70a5e109
("printk: Add per-console suspended state") removed console lock usage during resume and replaced it with the clearly defined console_list_lock and srcu mechanisms. However, the console lock usage had an important side-effect of flushing the consoles. After its removal, consoles were no longer flushed before checking their progress. Add the console_lock/console_unlock dance to the beginning of __pr_flush() to actually flush the consoles before checking their progress. Also add comments to clarify this additional usage of the console lock. Note that console_unlock() does not guarantee flushing all messages since the commitdbdda842fe
("printk: Add console owner and waiter logic to load balance console writes"). Reported-by: Todd Brandt <todd.e.brandt@intel.com> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217955 Fixes:9e70a5e109
("printk: Add per-console suspended state") Co-developed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Petr Mladek <pmladek@suse.com> Signed-off-by: John Ogness <john.ogness@linutronix.de> Link: https://lore.kernel.org/r/20231006082151.6969-2-pmladek@suse.com
This commit is contained in:
parent
132a90d152
commit
054c22bd78
@ -3738,12 +3738,18 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre
|
||||
|
||||
seq = prb_next_seq(prb);
|
||||
|
||||
/* Flush the consoles so that records up to @seq are printed. */
|
||||
console_lock();
|
||||
console_unlock();
|
||||
|
||||
for (;;) {
|
||||
diff = 0;
|
||||
|
||||
/*
|
||||
* Hold the console_lock to guarantee safe access to
|
||||
* console->seq.
|
||||
* console->seq. Releasing console_lock flushes more
|
||||
* records in case @seq is still not printed on all
|
||||
* usable consoles.
|
||||
*/
|
||||
console_lock();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user