On (05/31/17 16:30), Sergey Senozhatsky wrote: > On (05/29/17 14:12), Jan Kara wrote: > [..] > > Actually I had something very similar in old versions of my patch set. And > > it didn't work very well. The problem was that e.g. sometimes scheduler > > decided that printk kthread should run on the same CPU as the process > > currently doing printing and in such case printk kthread never took over > > printing and the machine locked up due to heavy printing. > > hm, interesting.
that's a tricky problem to deal with. ... so may be we can have per-CPU printk kthreads then static DEFINE_PER_CPU(struct task_struct *, printk_kthread); SMP hotplug threads, to be precise, the same way as watchdog has it. and then during offloading we can wake_up any printk_kthread that is knowingly not from this-CPU, all of them, let them compete for the console_sem. just a quick idea. thoughts? -ss