linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RT PATCH 1/2] timers: wakeup all timer waiters
@ 2016-07-14 16:05 Sebastian Andrzej Siewior
  2016-07-14 16:05 ` [RT PATCH 2/2] timers: wakeup all timer waiters without holding the base lock Sebastian Andrzej Siewior
  2016-07-14 16:13 ` [RT PATCH 1/2] timers: wakeup all timer waiters Steven Rostedt
  0 siblings, 2 replies; 9+ messages in thread
From: Sebastian Andrzej Siewior @ 2016-07-14 16:05 UTC (permalink / raw)
  To: linux-rt-users; +Cc: linux-kernel, tglx, Steven Rostedt

The base lock is dropped during the invocation if the timer. That means
it is possible that we have one waiter while timer1 is running and once
this one finished, we get another waiter while timer2 is running. Since
we wake up only one waiter it is possible that we miss the other one.
This will probably heal itself over time because most of the time we
complete timers without an active wake up.
To avoid the scenario where we don't wake up all waiters at once,
wake_up_all() is used.

Cc: stable-rt@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 kernel/time/timer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 5f9d3599ef0a..b3c3d3a6216f 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1051,7 +1051,7 @@ static void wait_for_running_timer(struct timer_list *timer)
 		   base->running_timer != timer);
 }
 
-# define wakeup_timer_waiters(b)	wake_up(&(b)->wait_for_running_timer)
+# define wakeup_timer_waiters(b)	wake_up_all(&(b)->wait_for_running_timer)
 #else
 static inline void wait_for_running_timer(struct timer_list *timer)
 {
-- 
2.8.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-07-14 18:37 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-14 16:05 [RT PATCH 1/2] timers: wakeup all timer waiters Sebastian Andrzej Siewior
2016-07-14 16:05 ` [RT PATCH 2/2] timers: wakeup all timer waiters without holding the base lock Sebastian Andrzej Siewior
2016-07-14 16:09   ` Steven Rostedt
2016-07-14 17:19     ` Sebastian Andrzej Siewior
2016-07-14 17:21       ` Steven Rostedt
2016-07-14 16:13 ` [RT PATCH 1/2] timers: wakeup all timer waiters Steven Rostedt
2016-07-14 17:14   ` Sebastian Andrzej Siewior
2016-07-14 17:19     ` Steven Rostedt
2016-07-14 18:37       ` Sebastian Andrzej Siewior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).