diff mbox

[2/2] sched_clock: Disable seqlock lockdep usage in sched_clock

Message ID 1388704274-5278-2-git-send-email-john.stultz@linaro.org
State Accepted
Commit 7a06c41cbec33c6dbe7eec575c61986122617408
Headers show

Commit Message

John Stultz Jan. 2, 2014, 11:11 p.m. UTC
Unforunately the seqlock lockdep enablmenet can't be used
in sched_clock, since the lockdep infrastructure eventually
calls into sched_clock, which causes a deadlock.

Thus, this patch changes all generic sched_clock usage
to use the raw_* methods.

Cc: Krzysztof Hałasa <khalasa@piap.pl>
Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Willy Tarreau <w@1wt.eu>
Cc: Ingo Molnar <mingo@kernel.org>,
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-arm-kernel@lists.infradead.org
Reported-by: Krzysztof Hałasa <khalasa@piap.pl>
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
 kernel/time/sched_clock.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

John Stultz Jan. 14, 2014, 7:18 p.m. UTC | #1
On 01/12/2014 10:42 AM, tip-bot for John Stultz wrote:
> Commit-ID:  7a06c41cbec33c6dbe7eec575c61986122617408
> Gitweb:     http://git.kernel.org/tip/7a06c41cbec33c6dbe7eec575c61986122617408
> Author:     John Stultz <john.stultz@linaro.org>
> AuthorDate: Thu, 2 Jan 2014 15:11:14 -0800
> Committer:  Ingo Molnar <mingo@kernel.org>
> CommitDate: Sun, 12 Jan 2014 10:14:00 +0100
>
> sched_clock: Disable seqlock lockdep usage in sched_clock()
>
> Unfortunately the seqlock lockdep enablement can't be used
> in sched_clock(), since the lockdep infrastructure eventually
> calls into sched_clock(), which causes a deadlock.
>
> Thus, this patch changes all generic sched_clock() usage
> to use the raw_* methods.
>
> Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
> Reported-by: Krzysztof Hałasa <khalasa@piap.pl>
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Cc: Willy Tarreau <w@1wt.eu>
> Signed-off-by: Peter Zijlstra <peterz@infradead.org>
> Link: http://lkml.kernel.org/r/1388704274-5278-2-git-send-email-john.stultz@linaro.org
> Signed-off-by: Ingo Molnar <mingo@kernel.org>

Hey Ingo,
    Just wanted to follow up here, since I've still not seen this (and
the raw_ renaming patch) submitted to Linus. These address a lockup that
triggers on ARM systems if lockdep is enabled and it would be good to
get it in before 3.13 is out.

thanks
-john


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
diff mbox

Patch

diff --git a/kernel/time/sched_clock.c b/kernel/time/sched_clock.c
index 68b7993..0abb364 100644
--- a/kernel/time/sched_clock.c
+++ b/kernel/time/sched_clock.c
@@ -74,7 +74,7 @@  unsigned long long notrace sched_clock(void)
 		return cd.epoch_ns;
 
 	do {
-		seq = read_seqcount_begin(&cd.seq);
+		seq = raw_read_seqcount_begin(&cd.seq);
 		epoch_cyc = cd.epoch_cyc;
 		epoch_ns = cd.epoch_ns;
 	} while (read_seqcount_retry(&cd.seq, seq));
@@ -99,10 +99,10 @@  static void notrace update_sched_clock(void)
 			  cd.mult, cd.shift);
 
 	raw_local_irq_save(flags);
-	write_seqcount_begin(&cd.seq);
+	raw_write_seqcount_begin(&cd.seq);
 	cd.epoch_ns = ns;
 	cd.epoch_cyc = cyc;
-	write_seqcount_end(&cd.seq);
+	raw_write_seqcount_end(&cd.seq);
 	raw_local_irq_restore(flags);
 }