1. 21 10月, 2008 1 次提交
  2. 08 9月, 2008 1 次提交
  3. 05 9月, 2008 2 次提交
    • J
      powerpc/spufs: Fix race for a free SPU · b65fe035
      Jeremy Kerr 提交于
      We currently have a race for a free SPE. With one thread doing a
      spu_yield(), and another doing a spu_activate():
      
      thread 1				thread 2
      spu_yield(oldctx)			spu_activate(ctx)
        __spu_deactivate(oldctx)
        spu_unschedule(oldctx, spu)
        spu->alloc_state = SPU_FREE
      					spu = spu_get_idle(ctx)
      					    - searches for a SPE in
      					      state SPU_FREE, gets
      					      the context just
      					      freed by thread 1
      					spu_schedule(ctx, spu)
      					  spu->alloc_state = SPU_USED
      spu_schedule(newctx, spu)
        - assumes spu is still free
        - tries to schedule context on
          already-used spu
      
      This change introduces a 'free_spu' flag to spu_unschedule, to indicate
      whether or not the function should free the spu after descheduling the
      context. We only set this flag if we're not going to re-schedule
      another context on this SPU.
      
      Add a comment to document this behaviour.
      Signed-off-by: NJeremy Kerr <jk@ozlabs.org>
      b65fe035
    • J
      powerpc/spufs: Fix multiple get_spu_context() · 9f43e391
      Jeremy Kerr 提交于
      Commit 8d5636fb introduced a reference
      count on SPU contexts during find_victim, but this may cause a leak in
      the reference count if we later find a better contender for a context to
      unschedule.
      
      Change the reference to after we've found our victim context, so we
      don't do the extra get_spu_context().
      Signed-off-by: NJeremy Kerr <jk@ozlabs.org>
      9f43e391
  4. 19 8月, 2008 1 次提交
  5. 14 8月, 2008 1 次提交
  6. 24 7月, 2008 2 次提交
  7. 09 7月, 2008 2 次提交
  8. 16 6月, 2008 2 次提交
  9. 15 5月, 2008 1 次提交
  10. 08 5月, 2008 1 次提交
  11. 05 5月, 2008 1 次提交
    • L
      [POWERPC] spufs: try to route SPU interrupts to local node · 7a214200
      Luke Browning 提交于
      Currently, we re-route SPU interrupts to the current cpu, which may be
      on a remote node. In the case of time slicing, all spu interrupts will
      end up routed to the same cpu, where the spusched_tick occurs.
      
      This change routes mfc interrupts to the cpu where the controlling
      thread last ran, provided that cpu is on the same node as the spu
      (otherwise don't reroute interrupts).
      
      This should improve performance and provide a more predictable
      environment for processing spu exceptions. In the past we have seen
      concurrent delivery of spu exceptions to two cpus. This eliminates that
      concern.
      Signed-off-by: NLuke Browning <lukebr@linux.vnet.ibm.com>
      Signed-off-by: NJeremy Kerr <jk@ozlabs.org>
      7a214200
  12. 30 4月, 2008 2 次提交
  13. 29 4月, 2008 1 次提交
  14. 11 3月, 2008 1 次提交
  15. 29 2月, 2008 1 次提交
  16. 19 2月, 2008 1 次提交
    • J
      [POWERPC] spufs: fix scheduler starvation by idle contexts · 4ef11014
      Jeremy Kerr 提交于
      2.6.25 has a regression where we can starve the scheduler by creating
      (N_SPES+1) contexts, then running them one at a time.
      
      The final context will never be run, as the other contexts are loaded on
      the SPEs, none of which are repoted as free (ie, spu->alloc_state !=
      SPU_FREE), so spu_get_idle() doesn't give us a spu to run on. Because
      all of the contexts are stopped, none are descheduled by the scheduler
      tick, as spusched_tick returns if spu_stopped(ctx).
      
      This change replaces the spu_stopped() check with checking for SCHED_IDLE
      in ctx->policy. We set a context's policy to SCHED_IDLE when we're not
      in spu_run(). We also favour SCHED_IDLE contexts when looking for contexts
      to unbind, but leave their timeslice intact for later resumption.
      
      This patch fixes the following test in the spufs-testsuite:
        tests/20-scheduler/02-yield-starvation
      Signed-off-by: NJeremy Kerr <jk@ozlabs.org>
      4ef11014
  17. 06 2月, 2008 1 次提交
  18. 02 1月, 2008 1 次提交
  19. 28 12月, 2007 1 次提交
  20. 21 12月, 2007 9 次提交
  21. 19 9月, 2007 2 次提交
  22. 03 8月, 2007 1 次提交
  23. 26 7月, 2007 1 次提交
  24. 21 7月, 2007 3 次提交