Commit:     3db5db4fcdafc85b99d171336a7d2f25765ccd13
Parent:     fc0ecff698165ae8e178efa086e0dd1f385206b1
Author:     Helge Deller <[EMAIL PROTECTED]>
AuthorDate: Sat Feb 10 01:45:40 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Sun Feb 11 10:51:31 2007 -0800

    [PATCH] use cycle_t instead of u64 in struct time_interpolator
    The 32bit and 64bit PARISC Linux kernels suffers from the problem, that the
    gettimeofday() call sometimes returns non-monotonic times.
    The easiest way to fix this, is to drop the PARISC-specific implementation
    and switch over to the generic TIME_INTERPOLATION framework.
    But in order to make it even compile on 32bit PARISC, the patch below which
    touches the generic Linux code, is mandatory.
    More information and the full patch with the parisc-specific changes is 
included in this thread:
    As far as I could see, this patch does not change anything for the existing
    architectures which use this framework (IA64 and SPARC64), since "cycles_t"
    is defined there as unsigned 64bit-integer anyway (which then makes this
    patch a no-change for them).
    Signed-off-by: Helge Deller <[EMAIL PROTECTED]>
    Cc: <>
    Cc: Thomas Gleixner <[EMAIL PROTECTED]>
    Cc: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 include/linux/timex.h |    4 ++--
 kernel/timer.c        |    6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/linux/timex.h b/include/linux/timex.h
index db501dc..9a24e50 100644
--- a/include/linux/timex.h
+++ b/include/linux/timex.h
@@ -255,10 +255,10 @@ struct time_interpolator {
        u8 jitter;                      /* if set compensate for fluctuations */
        u32 nsec_per_cyc;               /* set by register_time_interpolator() 
        void *addr;                     /* address of counter or function */
-       u64 mask;                       /* mask the valid bits of the counter */
+       cycles_t mask;                  /* mask the valid bits of the counter */
        unsigned long offset;           /* nsec offset at last update of 
interpolator */
        u64 last_counter;               /* counter value in units of the 
counter at last update */
-       u64 last_cycle;                 /* Last timer value if 
+       cycles_t last_cycle;            /* Last timer value if 
        u64 frequency;                  /* frequency in counts/second */
        long drift;                     /* drift in parts-per-million (or -1) */
        unsigned long skips;            /* skips forward */
diff --git a/kernel/timer.c b/kernel/timer.c
index c2a8ccf..d38801a 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1624,7 +1624,7 @@ struct time_interpolator *time_interpolator __read_mostly;
 static struct time_interpolator *time_interpolator_list __read_mostly;
 static DEFINE_SPINLOCK(time_interpolator_lock);
-static inline u64 time_interpolator_get_cycles(unsigned int src)
+static inline cycles_t time_interpolator_get_cycles(unsigned int src)
        unsigned long (*x)(void);
@@ -1650,8 +1650,8 @@ static inline u64 time_interpolator_get_counter(int 
        if (time_interpolator->jitter)
-               u64 lcycle;
-               u64 now;
+               cycles_t lcycle;
+               cycles_t now;
                do {
                        lcycle = time_interpolator->last_cycle;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to