On Fri 2018-05-18 15:38:20, Sergey Senozhatsky wrote:
On (05/18/18 11:07), Sergey Senozhatsky wrote:
if (this_cpu_read(printk_context) & PRINTK_SAFE_CONTEXT_MASK) || raw_spin_is_locked(&logbuf_lock)
just to check per-CPU `printk_context' first and only afterwards access the global `logbuf_lock'. printk_nmi_enter() happens on every CPU, so maybe we can avoid some overhead by checking the local per-CPU data first.
Nah, may be it won't. This, probably, would have been the case if we had continue to call console drivers from printk_safe section [at least]. CPUs don't spend that much time in printk_safe sections.
Yeah, I do not think that the more complicated code is worth it.
There is really minimal chance to hit printk_safe context on the given CPU. The eventual win would be negligible to the cost of printk(). In case of trigger_all_cpu_backtrace(), most CPUs spend a lot of time waiting for the spinlock in nmi_cpu_backtrace() anyway.
Thanks for the ack.
Best Regards, Petr