Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1572414

Re: [PATCH v2] printk: Correctly handle preemption in console_unlock()

From Steven Rostedt <rostedt@goodmis.org>
Newsgroups linux.kernel
Subject Re: [PATCH v2] printk: Correctly handle preemption in console_unlock()
Date 2017-02-02 15:40 +0100
Message-ID <t6qIi-5eS-27@gated-at.bofh.it> (permalink)
References <t3wqR-2KV-15@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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

Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Re: [PATCH v2] printk: Correctly handle preemption in  console_unlock() Steven Rostedt <rostedt@goodmis.org> - 2017-02-02 15:40 +0100
  Re: [PATCH v2] printk: Correctly handle preemption in  console_unlock() Petr Mladek <pmladek@suse.com> - 2017-02-02 17:50 +0100

csiph-web