lkml.org 
[lkml]   [2017]   [Feb]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2] printk: Correctly handle preemption in console_unlock()
    On Wed, 25 Jan 2017 15:08:45 +0100
    Petr Mladek <pmladek@suse.com> wrote:

    > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
    > index 7180088cbb23..cc90c0a5ae21 100644
    > --- a/kernel/printk/printk.c
    > +++ b/kernel/printk/printk.c
    > @@ -2158,19 +2158,18 @@ void console_unlock(void)
    > }
    >
    > /*
    > - * Console drivers are called under logbuf_lock, so
    > - * @console_may_schedule should be cleared before; however, we may
    > - * end up dumping a lot of lines, for example, if called from
    > - * console registration path, and should invoke cond_resched()
    > - * between lines if allowable. Not doing so can cause a very long
    > - * scheduling stall on a slow console leading to RCU stall and
    > - * softlockup warnings which exacerbate the issue with more
    > - * messages practically incapacitating the system.

    Why did you remove the comment about invoking cond_resched()? It's
    still pertinent to the code, as there still exists a:

    if (do_cond_resched)
    cond_resched();

    And the rational in the comment is still correct.

    -- Steve

    > + * Console drivers are called with interrupts disabled, so
    > + * @console_may_schedule must be cleared before. The original
    > + * value must be stored so that we could schedule between lines.
    > + *
    > + * console_trylock() is not able to detect the preemtible
    > + * context reliably. Therefore the value must be stored before
    > + * and cleared after the the "again" goto label.
    > */
    > do_cond_resched = console_may_schedule;
    > +again:
    > console_may_schedule = 0;
    >
    > -again:
    > /*
    > * We released the console_sem lock, so we need to recheck if
    > * cpu is online and (if not) is there at least one CON_ANYTIME

    \
     
     \ /
      Last update: 2017-02-02 15:31    [W:5.336 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site