On Tue 2016-03-22 14:11:06, Petr Mladek wrote: > On Tue 2016-03-22 02:25:29, Sergey Senozhatsky wrote: > > +static void wake_up_klogd_work_func(struct irq_work *irq_work) > > +{ > > + int pending = __this_cpu_xchg(printk_pending, 0); > > + > > + if (pending & PRINTK_PENDING_OUTPUT) { > > + /* If trylock fails, someone else is doing the printing */ > > + if (console_trylock()) > > + console_unlock(); > > This is called from IRQ context and thus keeps the original problem > for printk_deferred(). We should try to > wake_up_process(printk_kthread) when allowed. > > if (pending & PRINTK_PENDING_OUTPUT) { > if (printk_sync || !printk_kthread) { > /* If trylock fails, someone else is printing. */ > if (console_trylock()) > console_unlock(); > } else { > wake_up_process(printk_kthread); > } > }
Ah, this is in the 2nd patch. I am sorry for the noise. Best Regards, Petr