]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
s390/time: Set ->min_delta_ticks and ->max_delta_ticks
authorNicolai Stange <nicstange@gmail.com>
Thu, 30 Mar 2017 19:54:55 +0000 (21:54 +0200)
committerJohn Stultz <john.stultz@linaro.org>
Fri, 14 Apr 2017 20:11:20 +0000 (13:11 -0700)
In preparation for making the clockevents core NTP correction aware,
all clockevent device drivers must set ->min_delta_ticks and
->max_delta_ticks rather than ->min_delta_ns and ->max_delta_ns: a
clockevent device's rate is going to change dynamically and thus, the
ratio of ns to ticks ceases to stay invariant.

Currently, the s390's CPU timer clockevent device is initialized as
follows:

  cd->min_delta_ns    = 1;
  cd->max_delta_ns    = LONG_MAX;

Note that the device's time to cycle conversion factor, i.e.
cd->mult / (2^cd->shift), is approx. equal to 4.

Hence, this would translate to

  cd->min_delta_ticks = 4;
  cd->max_delta_ticks = 4 * LONG_MAX;

However, a minimum value of 1ns is in the range of noise anyway and the
clockevent core will take care of this by increasing it to 1us or so.
Furthermore, 4*LONG_MAX would overflow the unsigned long argument the
clockevent devices gets programmed with.

Thus, initialize ->min_delta_ticks with 1 and ->max_delta_ticks with
ULONG_MAX.

This patch alone doesn't introduce any change in functionality as the
clockevents core still looks exclusively at the (untouched) ->min_delta_ns
and ->max_delta_ns. As soon as this has changed, a followup patch will
purge the initialization of ->min_delta_ns and ->max_delta_ns from this
driver.

Cc: Ingo Molnar <mingo@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: David Hildenbrand <dahi@linux.vnet.ibm.com>
Cc: linux-s390@vger.kernel.org
Signed-off-by: Nicolai Stange <nicstange@gmail.com>
Signed-off-by: John Stultz <john.stultz@linaro.org>
arch/s390/kernel/time.c

index c31da46bc037d39dafcd73d0fb5c654850f9a3a9..c3a52f9a69a0596102ff2066133678cc96ea5a4e 100644 (file)
@@ -158,7 +158,9 @@ void init_cpu_timer(void)
        cd->mult                = 16777;
        cd->shift               = 12;
        cd->min_delta_ns        = 1;
+       cd->min_delta_ticks     = 1;
        cd->max_delta_ns        = LONG_MAX;
+       cd->max_delta_ticks     = ULONG_MAX;
        cd->rating              = 400;
        cd->cpumask             = cpumask_of(cpu);
        cd->set_next_event      = s390_next_event;