aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2007-02-13 15:54:22 -0500
committerArnd Bergmann <arnd@klappe.arndb.de>2007-02-13 15:55:40 -0500
commit8389998ae9ea2888c86c446f7911ddced50052a1 (patch)
treedb92e84e16513497344b9bd42b151934cfd881c3 /arch/powerpc
parent6a0641e51011def4e308fd07387047f5ee50647f (diff)
[POWERPC] spufs: move prio to spu_context
It doesn't make any sense to have a priority field in the physical spu structure. Move it into the spu context instead. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/platforms/cell/spufs/context.c4
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c6
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h3
-rw-r--r--arch/powerpc/xmon/xmon.c1
4 files changed, 6 insertions, 8 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c
index f2630dc0db89..88a887186303 100644
--- a/arch/powerpc/platforms/cell/spufs/context.c
+++ b/arch/powerpc/platforms/cell/spufs/context.c
@@ -53,6 +53,7 @@ struct spu_context *alloc_spu_context(struct spu_gang *gang)
53 ctx->owner = get_task_mm(current); 53 ctx->owner = get_task_mm(current);
54 if (gang) 54 if (gang)
55 spu_gang_add_ctx(gang, ctx); 55 spu_gang_add_ctx(gang, ctx);
56 ctx->prio = current->prio;
56 goto out; 57 goto out;
57out_free: 58out_free:
58 kfree(ctx); 59 kfree(ctx);
@@ -176,8 +177,7 @@ int spu_acquire_runnable(struct spu_context *ctx)
176 ret = spu_activate(ctx, 0); 177 ret = spu_activate(ctx, 0);
177 if (ret) 178 if (ret)
178 goto out_unlock; 179 goto out_unlock;
179 } else 180 }
180 ctx->spu->prio = current->prio;
181 181
182 return 0; 182 return 0;
183 183
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index c61a34b14083..03b357ce3987 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -145,7 +145,6 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
145 ctx->spu = spu; 145 ctx->spu = spu;
146 ctx->ops = &spu_hw_ops; 146 ctx->ops = &spu_hw_ops;
147 spu->pid = current->pid; 147 spu->pid = current->pid;
148 spu->prio = current->prio;
149 spu->mm = ctx->owner; 148 spu->mm = ctx->owner;
150 mm_needs_global_tlbie(spu->mm); 149 mm_needs_global_tlbie(spu->mm);
151 spu->ibox_callback = spufs_ibox_callback; 150 spu->ibox_callback = spufs_ibox_callback;
@@ -189,7 +188,6 @@ static int spu_unbind_context(struct spu *spu, struct spu_context *ctx)
189 spu->dma_callback = NULL; 188 spu->dma_callback = NULL;
190 spu->mm = NULL; 189 spu->mm = NULL;
191 spu->pid = 0; 190 spu->pid = 0;
192 spu->prio = MAX_PRIO;
193 ctx->ops = &spu_backing_ops; 191 ctx->ops = &spu_backing_ops;
194 ctx->spu = NULL; 192 ctx->spu = NULL;
195 spu->flags = 0; 193 spu->flags = 0;
@@ -223,7 +221,7 @@ static inline void spu_del_wq(wait_queue_head_t * wq, wait_queue_t * wait,
223 221
224static void spu_prio_wait(struct spu_context *ctx, u64 flags) 222static void spu_prio_wait(struct spu_context *ctx, u64 flags)
225{ 223{
226 int prio = current->prio; 224 int prio = ctx->prio;
227 wait_queue_head_t *wq = &spu_prio->waitq[prio]; 225 wait_queue_head_t *wq = &spu_prio->waitq[prio];
228 DEFINE_WAIT(wait); 226 DEFINE_WAIT(wait);
229 227
@@ -342,8 +340,6 @@ void spu_yield(struct spu_context *ctx)
342 __FUNCTION__, spu->number, spu->node); 340 __FUNCTION__, spu->number, spu->node);
343 spu_deactivate(ctx); 341 spu_deactivate(ctx);
344 need_yield = 1; 342 need_yield = 1;
345 } else {
346 spu->prio = MAX_PRIO;
347 } 343 }
348 } 344 }
349 mutex_unlock(&ctx->state_mutex); 345 mutex_unlock(&ctx->state_mutex);
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index fa07ec2e2c1a..b500e94188b5 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -74,6 +74,9 @@ struct spu_context {
74 74
75 struct list_head gang_list; 75 struct list_head gang_list;
76 struct spu_gang *gang; 76 struct spu_gang *gang;
77
78 /* scheduler fields */
79 int prio;
77}; 80};
78 81
79struct spu_gang { 82struct spu_gang {
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index 77540a2f7704..0183e5fbaf46 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -2811,7 +2811,6 @@ static void dump_spu_fields(struct spu *spu)
2811 DUMP_FIELD(spu, "0x%lx", irqs[2]); 2811 DUMP_FIELD(spu, "0x%lx", irqs[2]);
2812 DUMP_FIELD(spu, "0x%x", slb_replace); 2812 DUMP_FIELD(spu, "0x%x", slb_replace);
2813 DUMP_FIELD(spu, "%d", pid); 2813 DUMP_FIELD(spu, "%d", pid);
2814 DUMP_FIELD(spu, "%d", prio);
2815 DUMP_FIELD(spu, "0x%p", mm); 2814 DUMP_FIELD(spu, "0x%p", mm);
2816 DUMP_FIELD(spu, "0x%p", ctx); 2815 DUMP_FIELD(spu, "0x%p", ctx);
2817 DUMP_FIELD(spu, "0x%p", rq); 2816 DUMP_FIELD(spu, "0x%p", rq);