diff options
author | Arnd Bergmann <arnd@arndb.de> | 2005-12-06 06:52:26 +0300 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-09 06:52:58 +0300 |
commit | 2a911f0bb73e67826062b7d073dd7367ca449724 (patch) | |
tree | c1d8d4f340cf7571722b2d9019f158acd345cff4 /arch/powerpc/platforms/cell/spufs/spufs.h | |
parent | 5110459f181ef1f11200bb3dec61953f08cc49e7 (diff) | |
download | linux-2a911f0bb73e67826062b7d073dd7367ca449724.tar.xz |
[PATCH] spufs: Improved SPU preemptability [part 2].
This patch reduces lock complexity of SPU scheduler, particularly
for involuntary preemptive switches. As a result the new code
does a better job of mapping the highest priority tasks to SPUs.
Lock complexity is reduced by using the system default workqueue
to perform involuntary saves. In this way we avoid nasty lock
ordering problems that the previous code had. A "minimum timeslice"
for SPU contexts is also introduced. The intent here is to avoid
thrashing.
While the new scheduler does a better job at prioritization it
still does nothing for fairness.
From: Mark Nutter <mnutter@us.ibm.com>
Signed-off-by: Arnd Bergmann <arndb@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/cell/spufs/spufs.h')
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/spufs.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h index 20f4e51d1069..5bb75f22f722 100644 --- a/arch/powerpc/platforms/cell/spufs/spufs.h +++ b/arch/powerpc/platforms/cell/spufs/spufs.h @@ -37,6 +37,9 @@ enum { struct spu_context_ops; +#define SPU_CONTEXT_PREEMPT_nr 0UL +#define SPU_CONTEXT_PREEMPT (1UL << SPU_CONTEXT_PREEMPT_nr) + struct spu_context { struct spu *spu; /* pointer to a physical SPU */ struct spu_state csa; /* SPU context save area. */ @@ -55,6 +58,8 @@ struct spu_context { struct fasync_struct *ibox_fasync; struct fasync_struct *wbox_fasync; struct spu_context_ops *ops; + struct work_struct reap_work; + u64 flags; }; /* SPU context query/set operations. */ |