소스 검색

powerpc/spufs: Initialize ctx->stats.tstamp correctly

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>
Arnd Bergmann 16 년 전
부모
커밋
8f748aae4b
1개의 변경된 파일4개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      arch/powerpc/platforms/cell/spufs/context.c

+ 4 - 0
arch/powerpc/platforms/cell/spufs/context.c

@@ -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 *alloc_spu_context(struct spu_gang *gang)
 {
 {
 	struct spu_context *ctx;
 	struct spu_context *ctx;
+	struct timespec ts;
+
 	ctx = kzalloc(sizeof *ctx, GFP_KERNEL);
 	ctx = kzalloc(sizeof *ctx, GFP_KERNEL);
 	if (!ctx)
 	if (!ctx)
 		goto out;
 		goto out;
@@ -64,6 +66,8 @@ struct spu_context *alloc_spu_context(struct spu_gang *gang)
 	__spu_update_sched_info(ctx);
 	__spu_update_sched_info(ctx);
 	spu_set_timeslice(ctx);
 	spu_set_timeslice(ctx);
 	ctx->stats.util_state = SPU_UTIL_IDLE_LOADED;
 	ctx->stats.util_state = SPU_UTIL_IDLE_LOADED;
+	ktime_get_ts(&ts);
+	ctx->stats.tstamp = timespec_to_ns(&ts);
 
 
 	atomic_inc(&nr_spu_contexts);
 	atomic_inc(&nr_spu_contexts);
 	goto out;
 	goto out;