On 2024-05-23, <xu.xin16@xxxxxxxxxx> wrote: > From: xu xin <xu.xin16@xxxxxxxxxx> > > When we're in the unpreemptible context on the same cpu with which the > thread of console locates on, we should ignore this console for > pr_flush, because it's a vain and always lead to timeout until the console > thread get cpu resource. Newer RT kernels do things quite differently. But for the 5.10-rt implementation, I can see how the 1 second timeout could be annoying. > Fixes: e65be5f4dc3ed("printk: Update John Ogness' printk series") > Signed-off-by: xu xin <xu.xin16@xxxxxxxxxx> > Cc: Zhang Yunkai <zhang.yunkai@xxxxxxxxxx> > --- > kernel/printk/printk.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 7f27cfee283e..faab85dd4439 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -3735,6 +3735,14 @@ bool pr_flush(int timeout_ms, bool reset_on_progress) > diff = 0; > > for_each_console(con) { > + /* > + * When we're in the unpreemptible context on the same cpu > + * with which the thread of console locates on, we should > + * ignore this console, because it's a vain. > + */ > + if (!preemptible() && con->thread && > + task_cpu(con->thread) == smp_processor_id()) > + continue; > if (!(con->flags & CON_ENABLED)) > continue; > printk_seq = read_console_seq(con); The code is OK, but you have lost the tab indenting. Perhaps these can be added by the RT maintainer. With the correct whitespace: Reviewed-by: John Ogness <john.ogness@xxxxxxxxxxxxx>