From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Tim Deegan <tim@xen.org>
Cc: "Keir (Xen.org)" <keir@xen.org>, Jan Beulich <JBeulich@suse.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH] x86/watchdog: Use real timestamps for watchdog timeout
Date: Fri, 24 May 2013 11:33:21 +0100 [thread overview]
Message-ID: <519F41F1.6050402@citrix.com> (raw)
In-Reply-To: <20130524101312.GB54769@ocelot.phlegethon.org>
On 24/05/13 11:13, Tim Deegan wrote:
> At 10:57 +0100 on 24 May (1369393060), Andrew Cooper wrote:
>> On 24/05/13 08:09, Jan Beulich wrote:
>>> You can't use NOW() here - while the time updating code is safe
>>> against normal interrupts, it's not atomic wrt NMIs.
>> But NMIs are latched at the hardware level. If we get a nested NMI the
>> Xen will be toast on the exit path anyway.
> The problem is that an NMI can arrive while local_time_calibration() is
> writing its results, so calling NOW() in the NMI handler might return
> garbage.
Aah - I see. Sorry - I misunderstood the original point.
Yes - that is an issue.
Two solutions come to mind.
1) Along with the local_irq_disable()/enable() pairs in
local_time_calibration, having an atomic_t indicating "time data update
in progress", allowing the NMI handler to decide to bail early.
2) Modify local_time_calibration() to fill in a shadow cpu_time set, and
a different atomic_t to indicate which one is consistent. This would
allow the NMI handler to always use one consistent set of timing
information.
>
>>> Handling this case it nice, but I wonder whether this patch ought to
>>> detect and report ludicrous NMI rates rather than silently ignoring
>>> them. I guess that's hard to do in an NMI handler, other than by
>>> adjusting the printk when we crash.
> Actually on second thoughts it's easier: as well as having this patch
> (or near equivalent) to avoid premature watchdog expiry, we cna detect
> the NMI rate in, say, the timer softirq and report if it's gone mad.
>
> Cheers,
>
> Tim.
I was thinking along that line, but had not yet worked out where to put
it. That looks like the best place.
~Andrew
next prev parent reply other threads:[~2013-05-24 10:33 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-23 20:32 [PATCH] x86/watchdog: Use real timestamps for watchdog timeout Andrew Cooper
2013-05-24 7:09 ` Jan Beulich
2013-05-24 9:57 ` Andrew Cooper
2013-05-24 10:13 ` Tim Deegan
2013-05-24 10:33 ` Andrew Cooper [this message]
2013-05-24 11:42 ` Jan Beulich
2013-05-24 12:00 ` Andrew Cooper
2013-05-24 13:11 ` Jan Beulich
2013-05-24 11:36 ` Jan Beulich
2013-05-24 12:41 ` Tim Deegan
2013-05-24 12:48 ` Andrew Cooper
2013-05-24 13:55 ` Tim Deegan
2013-05-24 14:29 ` Andrew Cooper
2013-05-24 17:10 ` Tim Deegan
2013-05-24 17:27 ` Andrew Cooper
2013-05-24 13:17 ` Jan Beulich
2013-05-24 14:01 ` Tim Deegan
2013-05-24 9:37 ` Tim Deegan
2013-05-24 10:03 ` Andrew Cooper
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=519F41F1.6050402@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=keir@xen.org \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.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.