From: Don Zickus <dzickus@redhat.com>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: mingo@elte.hu, peterz@infradead.org, gorcunov@gmail.com,
aris@redhat.com, linux-kernel@vger.kernel.org,
randy.dunlap@oracle.com
Subject: Re: [PATCH 2/6] [watchdog] convert touch_softlockup_watchdog to touch_watchdog
Date: Wed, 21 Apr 2010 17:31:42 -0400 [thread overview]
Message-ID: <20100421213142.GY15159@redhat.com> (raw)
In-Reply-To: <20100421204559.GB8677@nowhere>
On Wed, Apr 21, 2010 at 10:46:01PM +0200, Frederic Weisbecker wrote:
> On Tue, Apr 20, 2010 at 11:23:59AM -0400, Don Zickus wrote:
> > Just a scripted conversion to remove touch_softlockup_watchdog.
> >
> > Also converts the once case of touch_all_softlockup_watchdogs to
> > touch_all_watchdogs.
> >
> > This is done as part of the removal of the old softlockup code and
> > transition to the new softlockup code.
> >
> > Signed-off-by: Don Zickus <dzickus@redhat.com>
>
>
> In fact I worry a bit about this unification of watchdog touching.
> When we touch the softlockup watchdog, do we also want to touch
> the nmi watchdog?
>
> Most of the time, I think we don't want to. We usually touch the
> softlockup detector because we know we are abnormally delaying
> the softlockup kthread from being scheduled, and if we are in such
> situation, it means we are doing something in a sensitive context:
> typically the kind of context favorable to create hardlockups...
>
> But the opposite is right: if we touch the nmi watchdog: it means we
> are abnormally delaying irqs, which means we also are abnormally
> delaying the softlockup kthread from being scheduled, so if we
> touch the nmi watchdog, we also want to touch the softlockup
> detector.
>
> Hence I guess we want to keep the current state:
>
> - touch_nmi_watchdog() = touch softlockup and nmi watchdogs
> - touch_softlockup_watchdog() = only touch softlockup watchdog
Hmm ok I see what you are saying. A little tweak and I have this
compiled-tested only patch that I think satisifies you.
I didn't really touch the touch_nmi_watchdog() code in the kernel, so it
still calls a stub function in kernel/watchdog.c. Add a boolean to that
path and I think it accomplishes the logic you are looking for.
Cheers,
Don
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 9898c7c..c1a89ac 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -31,6 +31,7 @@ int watchdog_enabled;
int __read_mostly softlockup_thresh = 60;
static DEFINE_PER_CPU(unsigned long, watchdog_touch_ts);
+static DEFINE_PER_CPU(bool, watchdog_nmi_touch);
static DEFINE_PER_CPU(struct task_struct *, softlockup_watchdog);
static DEFINE_PER_CPU(struct hrtimer, watchdog_hrtimer);
static DEFINE_PER_CPU(bool, watchdog_touch_sync);
@@ -147,6 +148,7 @@ void touch_watchdog_sync(void)
void touch_nmi_watchdog(void)
{
+ __get_cpu_var(watchdog_nmi_touch) = true;
touch_watchdog();
}
EXPORT_SYMBOL(touch_nmi_watchdog);
@@ -203,11 +205,10 @@ void watchdog_overflow_callback(struct perf_event *event, int nmi,
struct pt_regs *regs)
{
int this_cpu = smp_processor_id();
- unsigned long touch_ts = per_cpu(watchdog_touch_ts, this_cpu);
char warn = per_cpu(watchdog_warn, this_cpu);
- if (touch_ts == 0) {
- __touch_watchdog();
+ if (__get_cpu_var(watchdog_nmi_touch) == true) {
+ __get_cpu_var(watchdog_nmi_touch) = false;
return;
}
next prev parent reply other threads:[~2010-04-21 21:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-20 15:23 [PATCH 0/6] lockup detector changes Don Zickus
2010-04-20 15:23 ` [PATCH 1/6] [watchdog] combine nmi_watchdog and softlockup Don Zickus
2010-04-20 15:53 ` Randy Dunlap
2010-04-20 16:11 ` Don Zickus
2010-04-21 17:27 ` Frederic Weisbecker
2010-04-21 17:50 ` Don Zickus
2010-04-21 20:24 ` Frederic Weisbecker
2010-04-21 20:49 ` Don Zickus
2010-04-20 15:23 ` [PATCH 2/6] [watchdog] convert touch_softlockup_watchdog to touch_watchdog Don Zickus
2010-04-21 20:46 ` Frederic Weisbecker
2010-04-21 21:31 ` Don Zickus [this message]
2010-04-21 21:46 ` Frederic Weisbecker
2010-04-22 13:20 ` Don Zickus
2010-04-22 18:53 ` Frederic Weisbecker
2010-04-20 15:24 ` [PATCH 3/6] [watchdog] remove old softlockup code Don Zickus
2010-04-20 15:24 ` [PATCH 4/6] [watchdog] remove nmi_watchdog.c file Don Zickus
2010-04-20 15:24 ` [PATCH 5/6] [x86] watchdog: move trigger_all_cpu_backtrace to its own die_notifier Don Zickus
2010-04-21 21:00 ` Frederic Weisbecker
2010-04-21 21:10 ` Don Zickus
2010-04-21 21:34 ` Frederic Weisbecker
2010-04-20 15:24 ` [PATCH 6/6] [x86] watchdog: cleanup hw_nmi.c cruft Don Zickus
2010-04-20 16:16 ` [PATCH 7/6] [watchdog] resolve softlockup.c conflicts Don Zickus
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=20100421213142.GY15159@redhat.com \
--to=dzickus@redhat.com \
--cc=aris@redhat.com \
--cc=fweisbec@gmail.com \
--cc=gorcunov@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=randy.dunlap@oracle.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.