Re: [PATCH RT 2/2] fix printk flush of messages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/16/12 18:09, Frank Rowand wrote:
> 
> Updates console-make-rt-friendly.patch
> 
> #ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
> printk() because:
> 
>    # some liberties taken in this pseudo-code to make it easier to follow
>    printk()
>       vprintk()
>          raw_spin_lock(&logbuf_lock)
>             # increment preempt_count():
>             preempt_disable()
>       result = console_trylock_for_printk()
>          retval = 0
>          # lock will always be false, because preempt_count() will be >= 1
>          lock = ... && !preempt_count()
>          if (lock)
>             retval = 1
>          return retval
>       # result will always be false since lock will always be false
>       if (result)
>          console_unlock()
>             # this is where the printk() output would be flushed
> 
> 
> On system boot some printk() output is flushed because register_console()
> and tty_open() call console_unlock().
> 
> 
> This change also fixes the problem that was previously fixed by
> preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
> 
> Signed-off-by: Frank Rowand <frank.rowand@xxxxxxxxxxx>
> 
> ---
>  kernel/printk.c |    2 	1 +	1 -	0 !
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Index: b/kernel/printk.c
> ===================================================================
> --- a/kernel/printk.c
> +++ b/kernel/printk.c
> @@ -847,7 +847,7 @@ static int console_trylock_for_printk(un
>  	int retval = 0, wake = 0;
>  #ifdef CONFIG_PREEMPT_RT_FULL
>  	int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
> -		!preempt_count();
> +		(preempt_count() <= 1);
>  #else
>  	int lock = 1;
>  #endif

... and if patch 1/2 is added to stable, this patch (2/2) is also needed.

-Frank

--
To unsubscribe from this list: send the line "unsubscribe stable-rt" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Development]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux