Messages in this thread Patch in this message | | | Date | Fri, 28 Mar 2014 01:37:14 -0700 | From | tip-bot for John Stultz <> | Subject | [tip:timers/urgent] time: Revert to calling clock_was_set_delayed () while in irq context |
| |
Commit-ID: cab5e127eef040399902caa8e1510795583fa03a Gitweb: http://git.kernel.org/tip/cab5e127eef040399902caa8e1510795583fa03a Author: John Stultz <john.stultz@linaro.org> AuthorDate: Thu, 27 Mar 2014 16:30:49 -0700 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Fri, 28 Mar 2014 08:07:07 +0100
time: Revert to calling clock_was_set_delayed() while in irq context
In commit 47a1b796306356f35 ("tick/timekeeping: Call update_wall_time outside the jiffies lock"), we moved to calling clock_was_set() due to the fact that we were no longer holding the timekeeping or jiffies lock.
However, there is still the problem that clock_was_set() triggers an IPI, which cannot be done from the timer's hard irq context, and will generate WARN_ON warnings.
Apparently in my earlier testing, I'm guessing I didn't bump the dmesg log level, so I somehow missed the WARN_ONs.
Thus we need to revert back to calling clock_was_set_delayed().
Signed-off-by: John Stultz <john.stultz@linaro.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: http://lkml.kernel.org/r/1395963049-11923-1-git-send-email-john.stultz@linaro.org Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/time/timekeeping.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 0aa4ce8..5b40279 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -1435,7 +1435,8 @@ void update_wall_time(void) out: raw_spin_unlock_irqrestore(&timekeeper_lock, flags); if (clock_set) - clock_was_set(); + /* Have to call _delayed version, since in irq context*/ + clock_was_set_delayed(); } /**
| |