From: Ulrich Obergfell <uobergfe@redhat.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Don Zickus <dzickus@redhat.com>,
akpm@linux-foundation.org, kvm@vger.kernel.org,
pbonzini@redhat.com, mingo@redhat.com,
LKML <linux-kernel@vger.kernel.org>,
Andrew Jones <drjones@redhat.com>
Subject: Re: [PATCH 4/5] watchdog: control hard lockup detection default
Date: Mon, 18 Aug 2014 06:44:41 -0400 (EDT) [thread overview]
Message-ID: <949451551.32876011.1408358681791.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20140818091644.GE25495@gmail.com>
>----- Original Message -----
>From: "Ingo Molnar" <mingo@kernel.org>
>To: "Don Zickus" <dzickus@redhat.com>
>Cc: akpm@linux-foundation.org, kvm@vger.kernel.org, pbonzini@redhat.com, mingo@redhat.com, "LKML" <linux-kernel@vger.kernel.org>, "Ulrich >Obergfell" <uobergfe@redhat.com>, "Andrew Jones" <drjones@redhat.com>
>Sent: Monday, August 18, 2014 11:16:44 AM
>Subject: Re: [PATCH 4/5] watchdog: control hard lockup detection default
>
>
> * Don Zickus <dzickus@redhat.com> wrote:
>
>> The running kernel still has the ability to enable/disable at any
>> time with /proc/sys/kernel/nmi_watchdog us usual. However even
>> when the default has been overridden /proc/sys/kernel/nmi_watchdog
>> will initially show '1'. To truly turn it on one must disable/enable
>> it, i.e.
>> echo 0 > /proc/sys/kernel/nmi_watchdog
>> echo 1 > /proc/sys/kernel/nmi_watchdog
>
> This looks like a bug, why is this so?
>
> Thanks,
>
> Ingo
This is because the hard lockup detector and the soft lockup detector are
enabled and disabled at the same time - there isn't a separate 'knob' for
each of them. Both are controlled via the 'watchdog_user_enabled' variable
which is 1 by default.
lockup_detector_init
if (watchdog_user_enabled)
watchdog_enable_all_cpus
smpboot_register_percpu_thread(&watchdog_threads)
At boot time, the above code path lauches a 'watchdog/N' thread for each
online CPU. The watchdog_enable() function is executed in the context of
these threads, and this attempts to enable the hard lockup detector and
the soft lockup detector. [Note: Soft lockup detection is implemented in
watchdog_timer_fn().]
watchdog_enable
hrtimer_init(hrtimer, ...)
hrtimer->function = watchdog_timer_fn
watchdog_nmi_enable
perf_event_create_kernel_counter(..., watchdog_overflow_callback)
hrtimer_start(hrtimer, ...)
On bare metal systems or in virtual environments where the hypervisor
does not emulate a PMU, watchdog_nmi_enable() can fail to allocate and
enable a PMU counter. This is reported by a console message:
NMI watchdog: disabled (cpu0): hardware events not enabled
Hence, we can end up with a situation where the soft lockup detector is
enabled and the hard lockup detector is not enabled. However, the output
of 'cat /proc/sys/kernel/nmi_watchdog' is 1 because it merely shows the
state of the 'watchdog_user_enabled' variable.
The above is the behaviour even without the proposed patch. The patch
merely adds the following hunk in watchdog_nmi_enable() to 'fake' a
-ENOENT error return from perf_event_create_kernel_counter().
+ if (!watchdog_hardlockup_detector_is_enabled()) {
+ event = ERR_PTR(-ENOENT);
+ goto handle_err;
+ }
The patch does not break the output of 'cat /proc/sys/kernel/nmi_watchdog'
since the discrepancy between the output and the actual state of the hard
lockup detector is nothing new.
Regards,
Uli
next prev parent reply other threads:[~2014-08-18 10:44 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-11 14:49 [PATCH 0/5] watchdog: various fixes Don Zickus
2014-08-11 14:49 ` [PATCH 1/5] watchdog: remove unnecessary head files Don Zickus
2014-08-18 18:03 ` [tip:perf/watchdog] watchdog: Remove unnecessary header files tip-bot for chai wen
2014-08-11 14:49 ` [PATCH 2/5] softlockup: make detector be aware of task switch of processes hogging cpu Don Zickus
2014-08-18 9:03 ` Ingo Molnar
2014-08-18 15:06 ` Don Zickus
2014-08-18 18:01 ` Ingo Molnar
2014-08-18 18:43 ` Don Zickus
2014-08-18 19:02 ` Ingo Molnar
2014-08-18 20:38 ` Don Zickus
2014-08-19 1:36 ` Chai Wen
2014-08-21 1:37 ` Chai Wen
2014-08-21 2:30 ` Don Zickus
2014-08-21 5:42 ` [PATCH] " chai wen
2014-08-22 1:12 ` Chai Wen
2014-08-22 1:58 ` Don Zickus
2014-08-26 12:51 ` Chai Wen
2014-08-26 14:22 ` Don Zickus
2014-08-27 1:33 ` Chai Wen
2014-08-11 14:49 ` [PATCH 3/5] watchdog: fix print-once on enable Don Zickus
2014-08-18 9:05 ` Ingo Molnar
2014-08-18 9:07 ` Ingo Molnar
2014-08-18 15:07 ` Don Zickus
2014-08-18 18:03 ` [tip:perf/watchdog] watchdog: Fix " tip-bot for Ulrich Obergfell
2014-08-11 14:49 ` [PATCH 4/5] watchdog: control hard lockup detection default Don Zickus
2014-08-18 9:12 ` Ingo Molnar
2014-08-18 15:07 ` Don Zickus
2014-08-18 9:16 ` Ingo Molnar
2014-08-18 10:44 ` Ulrich Obergfell [this message]
2014-08-18 15:17 ` Don Zickus
2014-08-18 18:07 ` Ingo Molnar
2014-08-18 18:53 ` Don Zickus
2014-08-18 19:00 ` Ingo Molnar
2014-08-11 14:49 ` [PATCH 5/5] kvm: ensure hard lockup detection is disabled by default 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=949451551.32876011.1408358681791.JavaMail.zimbra@redhat.com \
--to=uobergfe@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=drjones@redhat.com \
--cc=dzickus@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.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.