From: Ingo Molnar <mingo@kernel.org>
To: John Stultz <john.stultz@linaro.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
Dave Jones <davej@codemonkey.org.uk>,
Linus Torvalds <torvalds@linux-foundation.org>,
Thomas Gleixner <tglx@linutronix.de>,
Richard Cochran <richardcochran@gmail.com>,
Prarit Bhargava <prarit@redhat.com>,
Stephen Boyd <sboyd@codeaurora.org>,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH 04/12] time: Add debugging checks to warn if we see delays
Date: Thu, 12 Mar 2015 07:32:25 +0100 [thread overview]
Message-ID: <20150312063224.GB13221@gmail.com> (raw)
In-Reply-To: <1426133800-29329-5-git-send-email-john.stultz@linaro.org>
* John Stultz <john.stultz@linaro.org> wrote:
> Recently there's been some request for better sanity
> checking in the time code, so that its more clear
> when something is going wrong since timekeeping issues
> could manifest in a large number of strange ways with
> various subsystems.
>
> Thus, this patch adds some extra infrastructure to
> add a check update_wall_time() to print warnings if we
> see the call delayed beyond the max_cycles overflow
> point, or beyond the clocksource max_idle_ns value
> which is currently 50% of the overflow point.
>
> This extra infrastructure is conditionalized
> behind a new CONFIG_DEBUG_TIMEKEEPING option
> also added in this patch.
>
> Tested this a bit by halting qemu for specified
> lengths of time to trigger the warnings.
> +static void timekeeping_check_update(struct timekeeper *tk, cycle_t offset)
> +{
> +
> + cycle_t max_cycles = tk->tkr.clock->max_cycles;
> + const char *name = tk->tkr.clock->name;
> +
> + if (offset > max_cycles) {
> + printk_deferred("ERROR: cycle offset (%lld) is larger than allowed %s max_cycles (%lld)\n",
> + offset, name, max_cycles);
> + } else {
> + if (offset > (max_cycles >> 1)) {
> + printk_deferred("WARNING: cycle offset (%lld) is past the %s 50%% safety margin (%lld)\n",
> + offset, name, max_cycles>>1);
Since we don't know the intensity with which these warnings will
trigger on various systems, I've adjusted the messages a bit:
printk_deferred("WARNING: timekeeping: cycle offset (%lld) is larger than allowed by '%s' max_cycles (%lld)\n",
offset, name, max_cycles);
printk_deferred("INFO: timekeeping: cycle offset (%lld) is past the '%s' 50%% safety margin (%lld)\n",
offset, name, max_cycles>>1);
'INFO:' / 'WARNING:' is more in line with how we warn about various
problems in kernel code.
We can upgrade this to 'WARNING:' / 'BUG:' pair once we are confident
that most clocksources are doing OK.
I also improved the messages to make it apparent when we are printing
a clocksource name and removed extra spaces from the message, etc. See
the tip commit log notification email for details.
Thanks,
Ingo
next prev parent reply other threads:[~2015-03-12 6:32 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-12 4:16 [PATCH 00/12] Increased clocksource validation and cleanups (v4) John Stultz
2015-03-12 4:16 ` [PATCH 01/12] clocksource: Simplify clocks_calc_max_nsecs logic John Stultz
2015-03-13 9:01 ` [tip:timers/core] clocksource: Simplify the clocks_calc_max_nsecs () logic tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 02/12] clocksource: Simplify logic around clocksource wrapping safety margins John Stultz
2015-03-12 5:55 ` Ingo Molnar
2015-03-13 9:01 ` [tip:timers/core] clocksource: Simplify the " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 03/12] clocksource: Add max_cycles to clocksource structure John Stultz
2015-03-13 9:01 ` [tip:timers/core] clocksource: Add 'max_cycles' to ' struct clocksource' tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 04/12] time: Add debugging checks to warn if we see delays John Stultz
2015-03-12 6:32 ` Ingo Molnar [this message]
2015-03-13 9:02 ` [tip:timers/core] timekeeping: " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 05/12] time: Add infrastructure to cap clocksource reads to the max_cycles value John Stultz
2015-03-13 9:02 ` [tip:timers/core] timekeeping: Add checks to cap clocksource reads to the 'max_cycles' value tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 06/12] time: Try to catch clocksource delta underflows John Stultz
2015-03-13 9:02 ` [tip:timers/core] timekeeping: " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 07/12] time: Add warnings when overflows or underflows are observed John Stultz
2015-03-12 7:37 ` Ingo Molnar
2015-03-13 9:03 ` [tip:timers/core] timekeeping: " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 08/12] clocksource: Improve clocksource watchdog reporting John Stultz
2015-03-13 9:03 ` [tip:timers/core] " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 09/12] clocksource: Mostly kill clocksource_register() John Stultz
2015-03-13 9:03 ` [tip:timers/core] " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 10/12] sparc: Convert to using clocksource_register_hz() John Stultz
2015-03-13 9:04 ` [tip:timers/core] clocksource, sparc32: " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 11/12] clocksource: Add some debug info about clocksources being registered John Stultz
2015-03-13 9:04 ` [tip:timers/core] " tip-bot for John Stultz
2015-03-12 4:16 ` [PATCH 12/12] clocksource: Rename __clocksource_updatefreq_* to __clocksource_update_freq_* John Stultz
2015-03-13 9:04 ` [tip:timers/core] clocksource: Rename __clocksource_updatefreq_*( ) to __clocksource_update_freq_*() tip-bot for John Stultz
2015-03-12 9:19 ` [PATCH 00/12] Increased clocksource validation and cleanups (v4) Ingo Molnar
2015-03-12 16:26 ` John Stultz
2015-03-13 8:58 ` Ingo Molnar
2015-03-13 17:54 ` John Stultz
2015-03-16 8:28 ` 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=20150312063224.GB13221@gmail.com \
--to=mingo@kernel.org \
--cc=davej@codemonkey.org.uk \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=prarit@redhat.com \
--cc=richardcochran@gmail.com \
--cc=sboyd@codeaurora.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.