android_kernel_xiaomi_sdm845/arch/powerpc/platforms
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
..
8xx [POWERPC] 8xx: adder875, ep88xc: fix to match recent 8xx cleanups. 2008-02-05 23:29:58 -06:00
40x Merge branch 'virtex-for-2.6.25' of git://git.secretlab.ca/git/linux-2.6-virtex into for-2.6.25 2008-02-06 21:06:45 -06:00
44x [POWERPC] 4xx: Fix offset value on Warp board 2008-02-06 21:02:54 -06:00
52xx [POWERPC] Remove unused CONFIG_WANT_DEVICE_TREE 2008-02-14 22:11:03 +11:00
82xx [POWERPC] arch/powerpc/platforms/82xx: Add missing of_node_put 2008-02-06 22:06:59 +11:00
83xx [POWERPC] 83xx: mpc832x_rdb: fix compiler warning 2008-02-05 23:38:10 -06:00
85xx [POWERPC] 85xx: convert sbc85* boards to use machine_device_initcall 2008-01-28 13:15:26 -06:00
86xx [POWERPC] 86xx: MPC8641 HPCN - call of_platform_bus_probe() 2008-01-23 19:35:02 -06:00
512x [POWERPC] Remove unused CONFIG_WANT_DEVICE_TREE 2008-02-14 22:11:03 +11:00
cell [POWERPC] spufs: invalidate SLB translation before adding a new entry 2008-02-29 15:17:49 +11:00
celleb [POWERPC] Have celleb use its own dma_direct_offset variable 2008-01-25 22:52:54 +11:00
chrp [POWERPC] Autodetect serial console on pegasos2 2008-01-25 22:52:55 +11:00
embedded6xx [POWERPC] Remove unused CONFIG_WANT_DEVICE_TREE 2008-02-14 22:11:03 +11:00
iseries [POWERPC] free_property() must not be __init 2008-02-14 22:11:02 +11:00
maple [POWERPC] Use <linux/of_{platform, device}.h> and not <asm/...> variants. 2008-01-17 14:58:57 +11:00
pasemi pasemi: Fix thinko in dma_direct_ops setup 2008-02-01 21:03:36 +11:00
powermac [POWERPC] Disable G5 NAP mode during SMU commands on U3 2008-02-08 19:52:35 +11:00
prep [POWERPC] Split several platforms into their respective Kconfig file 2007-03-22 10:07:32 -05:00
ps3 [POWERPC] PS3: Remove lpar address workaround 2008-01-25 22:52:53 +11:00
pseries [POWERPC] Update default irq servers when boot cpu is removed 2008-02-07 11:40:19 +11:00
fsl_uli1575.c [POWERPC] Fix interrupt routing and setup of ULI M1575 on FSL boards 2007-08-17 13:22:16 -05:00
Kconfig [POWERPC] Remove unused CONFIG_WANT_DEVICE_TREE 2008-02-14 22:11:03 +11:00
Kconfig.cputype [POWERPC] Remove unused CONFIG_WANT_DEVICE_TREE 2008-02-14 22:11:03 +11:00
Makefile [POWERPC] mpc512x: Basic platform support 2008-02-06 14:03:10 -07:00