powerpc/spufs: Initialize ctx->stats.tstamp correctly
authorArnd Bergmann <arnd@arndb.de>
Mon, 23 Feb 2009 21:44:37 +0000 (21:44 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 11 Mar 2009 06:10:15 +0000 (17:10 +1100)
spuctx_switch_state() warns if ktime goes backwards, but it
sometimes compares an uninitialized value, which showed that
the data was unreliable when we actually saw the warning.

Initialize it to the current time in order to get correct data.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/cell/spufs/context.c

index 6653ddbed0483c4679755ee23b132fbc57091cb3..db5398c0339f4a1bbb6bccaccf59c4cc97c6b9a3 100644 (file)
@@ -35,6 +35,8 @@ atomic_t nr_spu_contexts = ATOMIC_INIT(0);
 struct spu_context *alloc_spu_context(struct spu_gang *gang)
 {
        struct spu_context *ctx;
+       struct timespec ts;
+
        ctx = kzalloc(sizeof *ctx, GFP_KERNEL);
        if (!ctx)
                goto out;
@@ -64,6 +66,8 @@ struct spu_context *alloc_spu_context(struct spu_gang *gang)
        __spu_update_sched_info(ctx);
        spu_set_timeslice(ctx);
        ctx->stats.util_state = SPU_UTIL_IDLE_LOADED;
+       ktime_get_ts(&ts);
+       ctx->stats.tstamp = timespec_to_ns(&ts);
 
        atomic_inc(&nr_spu_contexts);
        goto out;