lkml.org 
[lkml]   [2008]   [Jan]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 08/23 -v6] initialize the clock source to jiffies clock.
    The latency tracer can call clocksource_read very early in bootup and
    before the clock source variable has been initialized. This results in a
    crash at boot up (even before earlyprintk is initialized). Since the
    clock->read variable points to NULL.

    This patch simply initializes the clock to use clocksource_jiffies, so
    that any early user of clocksource_read will not crash.

    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: John Stultz <johnstul@us.ibm.com>
    ---
    include/linux/clocksource.h | 3 +++
    kernel/time/timekeeping.c | 9 +++++++--
    2 files changed, 10 insertions(+), 2 deletions(-)

    Index: linux-mcount.git/include/linux/clocksource.h
    ===================================================================
    --- linux-mcount.git.orig/include/linux/clocksource.h 2008-01-25 21:47:09.000000000 -0500
    +++ linux-mcount.git/include/linux/clocksource.h 2008-01-25 21:47:11.000000000 -0500
    @@ -273,6 +273,9 @@ extern struct clocksource* clocksource_g
    extern void clocksource_change_rating(struct clocksource *cs, int rating);
    extern void clocksource_resume(void);

    +/* used to initialize clock */
    +extern struct clocksource clocksource_jiffies;
    +
    #ifdef CONFIG_GENERIC_TIME_VSYSCALL
    extern void update_vsyscall(struct timespec *ts, struct clocksource *c);
    extern void update_vsyscall_tz(void);
    Index: linux-mcount.git/kernel/time/timekeeping.c
    ===================================================================
    --- linux-mcount.git.orig/kernel/time/timekeeping.c 2008-01-25 21:47:09.000000000 -0500
    +++ linux-mcount.git/kernel/time/timekeeping.c 2008-01-25 21:47:11.000000000 -0500
    @@ -53,8 +53,13 @@ static inline void update_xtime_cache(u6
    timespec_add_ns(&xtime_cache, nsec);
    }

    -static struct clocksource *clock; /* pointer to current clocksource */
    -
    +/*
    + * pointer to current clocksource
    + * Just in case we use clocksource_read before we initialize
    + * the actual clock source. Instead of calling a NULL read pointer
    + * we return jiffies.
    + */
    +static struct clocksource *clock = &clocksource_jiffies;

    #ifdef CONFIG_GENERIC_TIME
    /**
    --


    \
     
     \ /
      Last update: 2008-01-26 05:35    [W:0.043 / U:2.400 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site