alistair23-linux/arch
Arnd Bergmann cc4b7c1814 [POWERPC] spufs: invalidate SLB translation before adding a new entry
When we replace an SLB entry in the MFC after using up all the available
entries, there is a short window in which an incorrect entry is marked
as valid.

The problem is that the 'valid' bit is stored in the ESID, which is
always written after the VSID. Overwriting the VSID first will make the
original ESID entry point to the new VSID, which means that any
concurrent DMA accessing the old ESID ends up being redirected to the
new virtual address.  A few cycles later, we write the new ESID and
everything is fine again.

That race can be closed by writing a zero entry to the ESID first, which
makes sure that the VSID is not accessed until we write the new ESID.

Note that we don't actually need to invalidate the SLB entry using the
invalidation register, which would also flush any ERAT entries for that
segment, because the segment translation does not become invalid but is
only removed from the SLB cache.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
2008-02-29 15:17:49 +11:00
..
alpha Introduce path_put() 2008-02-14 21:13:33 -08:00
arm Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-02-10 14:09:44 -08:00
avr32 ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
blackfin d_path: Make d_path() use a struct path 2008-02-14 21:17:09 -08:00
cris cris: import memset.c from newlib: fixes compile error with newer (pre4.3) gcc 2008-02-14 20:58:04 -08:00
frv xtime_lock vs update_process_times 2008-02-13 13:29:25 -08:00
h8300 ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
ia64 [IA64] Fix build for sim_defconfig 2008-02-11 13:23:46 -08:00
m32r ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
m68k ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
m68knommu m68knommu: fix profile timer 2008-02-14 20:58:05 -08:00
mips Introduce path_put() 2008-02-14 21:13:33 -08:00
mn10300
parisc Introduce path_put() 2008-02-14 21:13:33 -08:00
powerpc [POWERPC] spufs: invalidate SLB translation before adding a new entry 2008-02-29 15:17:49 +11:00
ppc ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
s390 [S390] dynamic page tables. 2008-02-09 18:24:41 +01:00
sh sh: Fix multiple UTLB hit on UP SH-4. 2008-02-14 14:45:08 +09:00
sparc xtime_lock vs update_process_times 2008-02-13 13:29:25 -08:00
sparc64 Introduce path_put() 2008-02-14 21:13:33 -08:00
um Embed a struct path into struct nameidata instead of nd->{dentry,mnt} 2008-02-14 21:13:33 -08:00
v850 ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
x86 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2008-02-14 21:29:46 -08:00
xtensa ide: introduce HAVE_IDE 2008-02-09 10:46:40 +01:00
.gitignore
Kconfig