linux/arch/powerpc
Jeremy Kerr b65fe0356b powerpc/spufs: Fix race for a free SPU
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: Jeremy Kerr <jk@ozlabs.org>
2008-09-05 10:52:03 +10:00
..
boot powerpc: Add cuImage.mpc866ads to the bootwrapper as a cuboot-8xx target 2008-08-21 00:37:04 -05:00
configs powerpc: Update defconfigs for most non-embedded platforms 2008-08-26 13:31:55 +10:00
include/asm powerpc: Fix build error with 64K pages and !hugetlbfs 2008-09-03 20:53:42 +10:00
kernel powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
kvm KVM: ppc: fix invalidation of large guest pages 2008-07-27 12:02:05 +03:00
lib powerpc: Remove use of CONFIG_PPC_MERGE 2008-08-04 13:18:17 +10:00
math-emu powerpc: Add macros to access floating point registers in thread_struct. 2008-07-01 11:28:43 +10:00
mm powerpc: Only make kernel text pages of linear mapping executable 2008-09-03 20:53:22 +10:00
oprofile on_each_cpu(): kill unused 'retry' parameter 2008-06-26 11:24:38 +02:00
platforms powerpc/spufs: Fix race for a free SPU 2008-09-05 10:52:03 +10:00
sysdev Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-08-26 10:07:27 -07:00
xmon Merge branch 'linux-2.6' 2008-06-30 10:16:50 +10:00
Kconfig mm: Make generic weak get_user_pages_fast and EXPORT_GPL it 2008-08-12 17:52:53 +10:00
Kconfig.debug powerpc: Remove use of CONFIG_PPC_MERGE 2008-08-04 13:18:17 +10:00
Makefile powerpc: Work around gcc's -fno-omit-frame-pointer bug 2008-09-03 20:53:34 +10:00