diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2012-10-12 18:00:23 +0200 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2012-11-18 01:01:49 +0100 |
commit | 74876a98a87a115254b3a66a14b27320b7f0acaa (patch) | |
tree | 06ed1cff8a92b0c687a7ff2fe31c19e8249bbe3c /kernel/timer.c | |
parent | bc6679aef673f9dcb8f718528fc3df49ff661af9 (diff) | |
download | linux-74876a98a87a115254b3a66a14b27320b7f0acaa.tar.gz linux-74876a98a87a115254b3a66a14b27320b7f0acaa.tar.bz2 linux-74876a98a87a115254b3a66a14b27320b7f0acaa.zip |
printk: Wake up klogd using irq_work
klogd is woken up asynchronously from the tick in order
to do it safely.
However if printk is called when the tick is stopped, the reader
won't be woken up until the next interrupt, which might not fire
for a while. As a result, the user may miss some message.
To fix this, lets implement the printk tick using a lazy irq work.
This subsystem takes care of the timer tick state and can
fix up accordingly.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'kernel/timer.c')
-rw-r--r-- | kernel/timer.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index 367d00858482..ff3b5165737b 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -1351,7 +1351,6 @@ void update_process_times(int user_tick) account_process_tick(p, user_tick); run_local_timers(); rcu_check_callbacks(cpu, user_tick); - printk_tick(); #ifdef CONFIG_IRQ_WORK if (in_irq()) irq_work_run(); |