linux/arch
Jeremy Kerr 1ca4264ee1 [POWERPC] spufs: fix save of mfc_cntl register
Currently, we can introduce invalid entries into the MFC queues:

1) context starts a DMA

2) context gets scheduled out during a DMA
  - kernel saves MFC queue to CSA
  - kernel saves 0x0 in csa->mfc_control_RW

3) context gets scheduled in
  - csa->mfc_control[Q] ('queues empty') isn't set, so DMA queues are
    restored from the CSA

4) context's DMA is completed

5) context gets scheduled out again, no DMA occuring this time
  - kernel sees that MFC_CNTL[Q] ('queues empty') is set, so doesn't
    touch saved queue data in CSA
  - kernel saves 0x0 in csa->mfc_control_RW

6) context gets scheduled in
  - csa->mfc_control[Q] ('queues empty') isn't set (we saved is as 0!),
    so DMA queues are restored from the CSA

In this last restore, we've restored the queue status from step 2,
which are now invalid.

This change makes save_mfc_cntl() closer to the save/restore sequence,
as specified in the CBE handbook.

With changes from Luke Browning.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
2008-05-05 13:33:42 +10:00
..
alpha arch/alpha/kernel/traps.c: use time_* macros 2008-04-28 08:58:27 -07:00
arm ARM: always select HAVE_IDE 2008-04-28 23:44:43 +02:00
avr32 atmel_lcdfb: don't initialize a pre-allocated framebuffer 2008-04-28 08:58:38 -07:00
blackfin [Blackfin] arch: add include/boot .gitignore files 2008-04-25 08:29:11 +08:00
cris cris: remove redundant display of free swap space in show_mem() 2008-04-28 08:58:28 -07:00
frv frv si_addr annotations 2008-04-28 10:03:30 -07:00
h8300 Generic semaphore implementation 2008-04-17 10:42:34 -04:00
ia64 ia64 kvm fixes for O=... builds 2008-04-28 10:03:30 -07:00
m32r Generic semaphore implementation 2008-04-17 10:42:34 -04:00
m68k m68k: replace remaining __FUNCTION__ occurrences 2008-04-28 08:58:27 -07:00
m68knommu Generic semaphore implementation 2008-04-17 10:42:34 -04:00
mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2008-04-28 10:51:43 -07:00
mn10300 PCI: remove initial bios sort of PCI devices on x86 2008-04-20 21:46:58 -07:00
parisc mm: have zonelist contains structs with both a zone pointer and zone_idx 2008-04-28 08:58:18 -07:00
powerpc [POWERPC] spufs: fix save of mfc_cntl register 2008-05-05 13:33:42 +10:00
ppc [POWERPC] Add strncmp to arch/ppc 2008-04-24 20:57:34 +10:00
s390 KVM: add ioctls to save/store mpstate 2008-04-27 18:21:16 +03:00
sh hotplug-memory: make online_page() common 2008-04-28 08:58:17 -07:00
sparc sparc: Remove old style signal frame support. 2008-04-27 02:26:36 -07:00
sparc64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 2008-04-28 09:45:57 -07:00
um uml: clean up arch/um/drivers/ubd_kern.c 2008-04-28 08:58:29 -07:00
v850 arch: Remove unnecessary inclusions of asm/semaphore.h 2008-04-18 22:14:49 -04:00
x86 x86_64 vDSO: use initdata 2008-04-28 13:49:35 -07:00
xtensa Generic semaphore implementation 2008-04-17 10:42:34 -04:00
.gitignore
Kconfig