lkml.org 
[lkml]   [2016]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/36] jiffies: Reuse TICK_NSEC instead of NSEC_PER_JIFFY
    Date
    NSEC_PER_JIFFY is an ad-hoc redefinition of TICK_NSEC. Let's rather
    use a unique and well maintained version.

    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Stanislaw Gruszka <sgruszka@redhat.com>
    Cc: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    ---
    kernel/time/jiffies.c | 32 ++++++++++++++++----------------
    1 file changed, 16 insertions(+), 16 deletions(-)

    diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
    index 555e21f..c9fc296 100644
    --- a/kernel/time/jiffies.c
    +++ b/kernel/time/jiffies.c
    @@ -27,19 +27,8 @@

    #include "timekeeping.h"

    -/* The Jiffies based clocksource is the lowest common
    - * denominator clock source which should function on
    - * all systems. It has the same coarse resolution as
    - * the timer interrupt frequency HZ and it suffers
    - * inaccuracies caused by missed or lost timer
    - * interrupts and the inability for the timer
    - * interrupt hardware to accuratly tick at the
    - * requested HZ value. It is also not recommended
    - * for "tick-less" systems.
    - */
    -#define NSEC_PER_JIFFY ((NSEC_PER_SEC+HZ/2)/HZ)

    -/* Since jiffies uses a simple NSEC_PER_JIFFY multiplier
    +/* Since jiffies uses a simple TICK_NSEC multiplier
    * conversion, the .shift value could be zero. However
    * this would make NTP adjustments impossible as they are
    * in units of 1/2^.shift. Thus we use JIFFIES_SHIFT to
    @@ -47,8 +36,8 @@
    * amount, and give ntp adjustments in units of 1/2^8
    *
    * The value 8 is somewhat carefully chosen, as anything
    - * larger can result in overflows. NSEC_PER_JIFFY grows as
    - * HZ shrinks, so values greater than 8 overflow 32bits when
    + * larger can result in overflows. TICK_NSEC grows as HZ
    + * shrinks, so values greater than 8 overflow 32bits when
    * HZ=100.
    */
    #if HZ < 34
    @@ -64,12 +53,23 @@ static cycle_t jiffies_read(struct clocksource *cs)
    return (cycle_t) jiffies;
    }

    +/*
    + * The Jiffies based clocksource is the lowest common
    + * denominator clock source which should function on
    + * all systems. It has the same coarse resolution as
    + * the timer interrupt frequency HZ and it suffers
    + * inaccuracies caused by missed or lost timer
    + * interrupts and the inability for the timer
    + * interrupt hardware to accuratly tick at the
    + * requested HZ value. It is also not recommended
    + * for "tick-less" systems.
    + */
    static struct clocksource clocksource_jiffies = {
    .name = "jiffies",
    .rating = 1, /* lowest valid rating*/
    .read = jiffies_read,
    .mask = CLOCKSOURCE_MASK(32),
    - .mult = NSEC_PER_JIFFY << JIFFIES_SHIFT, /* details above */
    + .mult = TICK_NSEC << JIFFIES_SHIFT, /* details above */
    .shift = JIFFIES_SHIFT,
    .max_cycles = 10,
    };
    @@ -125,7 +125,7 @@ int register_refined_jiffies(long cycles_per_second)
    shift_hz += cycles_per_tick/2;
    do_div(shift_hz, cycles_per_tick);
    /* Calculate nsec_per_tick using shift_hz */
    - nsec_per_tick = (u64)NSEC_PER_SEC << 8;
    + nsec_per_tick = (u64)TICK_NSEC << 8;
    nsec_per_tick += (u32)shift_hz/2;
    do_div(nsec_per_tick, (u32)shift_hz);

    --
    2.7.4
    \
     
     \ /
      Last update: 2016-11-17 19:18    [W:4.875 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site