Messages in this thread | | | Date | Fri, 30 Sep 2016 13:35:08 +0200 | From | Petr Mladek <> | Subject | Re: [RFC][PATCH 3/7] printk: introduce per-cpu alt_print seq buffer |
| |
On Fri 2016-09-30 10:05:28, Sergey Senozhatsky wrote: > On (09/29/16 14:26), Petr Mladek wrote: > [..] > > > printk() > > > local_irq_save() > > > alt_printk_enter() > > > > We need to make sure that exit() is called on the same CPU. > > Therefore we need to disable preemption as well. > > local_irq_save() does this for us, we can't get sched tick or > re-sched IPI, and even more - we eliminate race conditions on > this CPU. only one path can touch alt_printk related stuff, > NMI works with its own buffer. > > [..] > > What do you think about my approach with the printk_context per-CPU > > value from the WARN_DEFERRED() patchset? The main idea is that > > the entry()/exit() functions manipulate preempt_count-like per-CPU > > variable. The printk() function selects the safe implementation > > according to the current state. > > I'll take a look. > > I'll revisit it.
Just a side note. If you make it less generic then please use some more meaning-full name for the alternative printk stuff. The following comes to my mind:
printk_safe_enter(); printk_safe_exit(); vprintk_safe();
IMHO, the "_safe" suffix often means a variant that prevents a possible deadlock.
I wonder where this patches would end but it looks promising.
Best Regards, Petr
| |