mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jason Wessel <jason.wessel@windriver.com>
To: linux-kernel@vger.kernel.org
Cc: kgdb-bugreport@lists.sourceforge.net, mingo@elte.hu,
	Jason Wessel <jason.wessel@windriver.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	John Stultz <johnstul@us.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Magnus Damm <damm@igel.co.jp>
Subject: [PATCH 3/4] kgdb,clocksource: Prevent kernel hang in kernel debugger
Date: Mon, 25 Jan 2010 22:26:39 -0600	[thread overview]
Message-ID: <1264480000-6997-4-git-send-email-jason.wessel@windriver.com> (raw)
In-Reply-To: <1264480000-6997-1-git-send-email-jason.wessel@windriver.com>

This is a regression fix against: 0f8e8ef7c204988246da5a42d576b7fa5277a8e4

Spin locks were added to the clocksource_resume_watchdog() which cause
the kernel debugger to deadlock on an SMP system frequently.

The kernel debugger can try for the lock, but if it fails it should
continue to touch the clocksource watchdog anyway, else it will trip
if the general kernel execution has been paused for too long.

This introduces an possible race condition where the kernel debugger
might not process the list correctly if a clocksource is being added
or removed at the time of this call.  This race is sufficiently rare vs
having the kernel debugger hang the kernel

CC: Thomas Gleixner <tglx@linutronix.de>
CC: Martin Schwidefsky <schwidefsky@de.ibm.com>
CC: John Stultz <johnstul@us.ibm.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
 kernel/time/clocksource.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index e85c234..74f9ba6 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -463,7 +463,12 @@ void clocksource_resume(void)
  */
 void clocksource_touch_watchdog(void)
 {
-	clocksource_resume_watchdog();
+	unsigned long flags;
+
+	int got_lock = spin_trylock_irqsave(&watchdog_lock, flags);
+	clocksource_reset_watchdog();
+	if (got_lock)
+		spin_unlock_irqrestore(&watchdog_lock, flags);
 }
 
 /**
-- 
1.6.3.3


  parent reply	other threads:[~2010-01-26  4:27 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-26  4:26 [PATCH 0/4] kgdb regression fixes for 2.6.33 Jason Wessel
2010-01-26  4:26 ` [PATCH 1/4] x86,hw_breakpoint,kgdb: kgdb to use hw_breakpoint API Jason Wessel
2010-01-28 17:10   ` Frederic Weisbecker
2010-01-28 17:44     ` [PATCH 1/4] x86,hw_breakpoint,kgdb: kgdb to use hw_breakpointAPI Jason Wessel
2010-01-28 19:58       ` Jason Wessel
2010-01-28 20:17         ` Frederic Weisbecker
2010-01-28 20:23           ` [PATCH 1/4] x86,hw_breakpoint,kgdb: kgdb to usehw_breakpointAPI Jason Wessel
2010-01-28 21:54             ` Frederic Weisbecker
2010-01-28 20:04       ` [PATCH 1/4] x86,hw_breakpoint,kgdb: kgdb to use hw_breakpointAPI Frederic Weisbecker
2010-01-28 20:27         ` [PATCH 1/4] x86,hw_breakpoint,kgdb: kgdb to usehw_breakpointAPI Jason Wessel
2010-01-28 21:50           ` Frederic Weisbecker
2010-01-26  4:26 ` [PATCH 2/4] perf,hw_breakpoint: add lockless reservation for hw_breaks Jason Wessel
2010-01-26 19:25   ` Jason Wessel
2010-01-27 17:56     ` Frederic Weisbecker
2010-01-27 22:29       ` [PATCH 2/4] perf,hw_breakpoint: add lockless reservation forhw_breaks Jason Wessel
2010-01-26  4:26 ` Jason Wessel [this message]
2010-01-26  4:37   ` [PATCH 3/4] kgdb,clocksource: Prevent kernel hang in kernel debugger Andrew Morton
2010-01-26  8:22   ` Martin Schwidefsky
2010-01-26  8:50     ` Thomas Gleixner
2010-01-26 10:01       ` Dongdong Deng
2010-01-26 10:19         ` Xiaotian Feng
2010-01-26 10:37         ` Thomas Gleixner
2010-01-26 11:16           ` Thomas Gleixner
2010-01-26  8:45   ` Thomas Gleixner
2010-01-26 10:43   ` Thomas Gleixner
2010-01-26 14:09   ` [tip:timers/urgent] clocksource: Prevent potential kgdb dead lock tip-bot for Thomas Gleixner
2010-01-26 20:14     ` Andrew Morton
2010-01-26 20:46       ` Jason Wessel
2010-01-26  4:26 ` [PATCH 4/4] softlockup: add sched_clock_tick() to avoid kernel warning on kgdb resume Jason Wessel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1264480000-6997-4-git-send-email-jason.wessel@windriver.com \
    --to=jason.wessel@windriver.com \
    --cc=akpm@linux-foundation.org \
    --cc=damm@igel.co.jp \
    --cc=johnstul@us.ibm.com \
    --cc=kgdb-bugreport@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=schwidefsky@de.ibm.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®