From: Don Zickus <dzickus@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Don Zickus <dzickus@redhat.com>,
mingo@elte.hu, peterz@infradead.org, gorcunov@gmail.com,
aris@redhat.com
Subject: [PATCH 3/4] nmi_watchdog: fallback to software events when no hardware pmu detected
Date: Fri, 12 Feb 2010 17:19:20 -0500 [thread overview]
Message-ID: <1266013161-31197-3-git-send-email-dzickus@redhat.com> (raw)
In-Reply-To: <1266013161-31197-1-git-send-email-dzickus@redhat.com>
Not all arches have a PMU or have perf_event support for their PMU. The
nmi_watchdog will fail in those cases. Fallback to using software events to
generate nmi_watchdog traffic with local apic interrupts.
Tested on a Pentium4 and it worked as expected, excepting for detecting cpu
lockups.
The problem with using software events as a cpu lock up detector is the
nmi_watchdog uses the logic that if local apic interrupts stop incrementing
then the cpu is probably locked up. But with software events we use the
local apic to trigger the nmi_watchdog callback to see if local apic
interrupts are still firing, which obviously they are otherwise we wouldn't
have been triggered.
The algorithm to detect cpu lock ups is the same as the old nmi_watchdog.
Perhaps we need to find a better way to detect lock ups?
Signed-off-by: Don Zickus <dzickus@redhat.com>
---
kernel/nmi_watchdog.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/kernel/nmi_watchdog.c b/kernel/nmi_watchdog.c
index 73c1954..4f23505 100644
--- a/kernel/nmi_watchdog.c
+++ b/kernel/nmi_watchdog.c
@@ -166,8 +166,12 @@ cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
wd_attr.sample_period = hw_nmi_get_sample_period();
event = perf_event_create_kernel_counter(&wd_attr, hotcpu, -1, wd_overflow);
if (IS_ERR(event)) {
- printk(KERN_ERR "nmi watchdog failed to create perf event on %i: %p\n", hotcpu, event);
- return NOTIFY_BAD;
+ wd_attr.type = PERF_TYPE_SOFTWARE;
+ event = perf_event_create_kernel_counter(&wd_attr, hotcpu, -1, wd_overflow);
+ if (IS_ERR(event)) {
+ printk(KERN_ERR "nmi watchdog failed to create perf event on %i: %p\n", hotcpu, event);
+ return NOTIFY_BAD;
+ }
}
per_cpu(nmi_watchdog_ev, hotcpu) = event;
perf_event_enable(per_cpu(nmi_watchdog_ev, hotcpu));
--
1.6.6.83.gc9a2
next prev parent reply other threads:[~2010-02-12 22:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-12 22:19 [PATCH 1/4] nmi_watchdog: use a boolean config flag for compiling Don Zickus
2010-02-12 22:19 ` [PATCH 2/4] nmi_watchdog: compile and portability fixes Don Zickus
2010-02-14 9:13 ` [tip:perf/nmi] nmi_watchdog: Compile " tip-bot for Don Zickus
2010-02-12 22:19 ` Don Zickus [this message]
2010-02-14 9:13 ` [tip:perf/nmi] nmi_watchdog: Fallback to software events when no hardware pmu detected tip-bot for Don Zickus
2010-02-15 0:33 ` [PATCH 3/4] nmi_watchdog: fallback " Paul Mackerras
2010-02-15 15:38 ` Don Zickus
2010-02-12 22:19 ` [PATCH 4/4] [RFC][powerpc] nmi_watchdog: support for powerpc Don Zickus
2010-02-14 9:12 ` [tip:perf/nmi] nmi_watchdog: Use a boolean config flag for compiling tip-bot for Don Zickus
2010-02-14 16:59 ` [PATCH 1/4] nmi_watchdog: use " Ingo Molnar
2010-02-14 18:12 ` Ingo Molnar
2010-02-15 23:02 ` Don Zickus
2010-02-15 17:51 ` Don Zickus
2010-02-15 18:13 ` Cyrill Gorcunov
2010-02-15 18:21 ` Cyrill Gorcunov
2010-02-15 18:45 ` Don Zickus
2010-02-16 14:30 ` Ingo Molnar
2010-02-18 19:27 ` Ingo Molnar
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=1266013161-31197-3-git-send-email-dzickus@redhat.com \
--to=dzickus@redhat.com \
--cc=aris@redhat.com \
--cc=gorcunov@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
/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.