aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Rowand <frank.rowand@am.sony.com>2012-05-16 18:09:36 -0700
committerSteven Rostedt <rostedt@rostedt.homelinux.com>2013-04-23 11:35:16 -0400
commitbc02573f05da20c6161cdd5ad7e9d9e2c171a51a (patch)
tree45ca9aaa3d6dfc8181d234f7be2d643d6857d097
parent78fcc9d5e92f3b3ef9887c4adf50987e948cd95e (diff)
fix printk flush of messages
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@am.sony.com> Cc: Frank <Frank_Rowand@sonyusa.com> Link: http://lkml.kernel.org/r/4FB44FD0.4090800@am.sony.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--kernel/printk.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/printk.c b/kernel/printk.c
index 1ab43e8a501d..73b053d48fa6 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -846,7 +846,7 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
{
#ifdef CONFIG_PREEMPT_RT_FULL
int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- !preempt_count()) || sysrq_in_progress;
+ (preempt_count() <= 1)) || sysrq_in_progress;
#else
int lock = 1;
#endif