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 02/12] clocksource: Simplify logic around clocksource wrapping safety margins
Date: Thu, 12 Mar 2015 06:55:24 +0100 [thread overview]
Message-ID: <20150312055524.GA13221@gmail.com> (raw)
In-Reply-To: <1426133800-29329-3-git-send-email-john.stultz@linaro.org>
* John Stultz <john.stultz@linaro.org> wrote:
> The clocksource logic has a number of places where we try to
> include a safety margin. Most of these are 12% safety margins,
> but they are inconsistently applied and sometimes are applied
> on top of each other.
>
> Additionally, in the previous patch, we corrected an issue
> where we unintentionally in effect created a 50% safety margin,
> which these 12.5% margins where then added to.
>
> So to simplify the logic here, this patch removes the various
> 12.5% margins, and consolidates adding the margin in one place:
> clocks_calc_max_nsecs().
>
> Additionally, Linus prefers a 50% safety margin, as it allows
> bad clock values to be more easily caught. This should really
> have no net effect, due to the corrected issue earlier which
> caused greater then 50% margins to be used w/o issue.
> +++ b/kernel/time/clocksource.c
> @@ -469,6 +469,9 @@ static u32 clocksource_max_adjustment(struct clocksource *cs)
> * @shift: cycle to nanosecond divisor (power of two)
> * @maxadj: maximum adjustment value to mult (~11%)
> * @mask: bitmask for two's complement subtraction of non 64 bit counters
> + *
> + * NOTE: This function includes a safety margin of 50%, so that bad clock values
> + * can be detected.
> */
> u64 clocks_calc_max_nsecs(u32 mult, u32 shift, u32 maxadj, u64 mask)
> {
So it would be nice if there was also a comment here explaining the
'safety margin': what values are checked, what stream of values is
expected from clocksources, why clocksources can be off, what the core
clocksource code does with that, what symptoms it can cause, what is
considered 'normal', what is considered 'abnormal', what happens if a
'safety margin' is exceeded, etc.
I.e. all the code and all the changelogs talk about 'safety margins'
in a somewhat circular, self-defining fashion - without there being
any easily visible place where it's explained from first principles.
Thanks,
Ingo
next prev parent reply other threads:[~2015-03-12 5:55 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 [this message]
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
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=20150312055524.GA13221@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.