android_kernel_xiaomi_sdm845/arch
Marcelo Tosatti bb16574681 [PATCH] 8xx: avoid "dcbst" misbehaviour with unpopulated TLB
The proposed _tlbie call at update_mmu_cache() is safe because:

Addresses for which update_mmu_cache() gets invocated are never inside the
static kernel virtual mapping, meaning that there is no risk for the
_tlbie() here to be thrashing the pinned entry, as Dan suspected.

The intermediate TLB state in which this bug can be triggered is not
visible by userspace or any other contexts, except the page fault handling
path.  So there is no need to worry about userspace dcbxxx users.

The other solution to this is to avoid dcbst misbehaviour in the first
place, which involves changing in-kernel "dcbst" callers to use 8xx
specific SPR's.

Summary:

On 8xx, cache control instructions (particularly "dcbst" from
flush_dcache_icache) fault as write operation if there is an unpopulated
TLB entry for the address in question.  To workaround that, we invalidate
the TLB here, thus avoiding dcbst misbehaviour.

Signed-off-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-27 15:11:42 -07:00
..
alpha [PATCH] update all defconfigs for ARCH_DISCONTIGMEM_ENABLE 2005-06-23 09:45:02 -07:00
arm [PATCH] ARM: Update mach-types 2005-06-27 14:49:10 +01:00
arm26 [PATCH] use ${CROSS_COMPILE}installkernel in arch/*/boot/install.sh 2005-06-23 09:45:07 -07:00
cris [PATCH] make each arch use mm/Kconfig 2005-06-23 09:45:02 -07:00
frv Merge Christoph's freeze cleanup patch 2005-06-25 17:16:53 -07:00
h8300 [PATCH] Cleanup patch for process freezing 2005-06-25 17:10:13 -07:00
i386 [PATCH] Update cfq io scheduler to time sliced design 2005-06-27 14:33:29 -07:00
ia64 [PATCH] Update cfq io scheduler to time sliced design 2005-06-27 14:33:29 -07:00
m32r [PATCH] Cleanup patch for process freezing 2005-06-25 17:10:13 -07:00
m68k [PATCH] make each arch use mm/Kconfig 2005-06-23 09:45:02 -07:00
m68knommu [PATCH] make each arch use mm/Kconfig 2005-06-23 09:45:02 -07:00
mips [PATCH] mips: fixed try_to_freeze build error 2005-06-27 15:11:42 -07:00
parisc [PATCH] mm/Kconfig: kill unused ARCH_FLATMEM_DISABLE 2005-06-23 09:45:03 -07:00
ppc [PATCH] 8xx: avoid "dcbst" misbehaviour with unpopulated TLB 2005-06-27 15:11:42 -07:00
ppc64 [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
s390 [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
sh [PATCH] mm/Kconfig: kill unused ARCH_FLATMEM_DISABLE 2005-06-23 09:45:03 -07:00
sh64 [PATCH] make each arch use mm/Kconfig 2005-06-23 09:45:02 -07:00
sparc [PATCH] use drivers/Kconfig for sparc32 2005-06-23 09:45:33 -07:00
sparc64 [PATCH] compat: introduce compat_time_t 2005-06-23 09:45:32 -07:00
um [PATCH] uml: hot-unplug code cleanup 2005-06-25 16:24:36 -07:00
v850 [PATCH] make each arch use mm/Kconfig 2005-06-23 09:45:02 -07:00
x86_64 Merge Christoph's freeze cleanup patch 2005-06-25 17:16:53 -07:00
xtensa [PATCH] Serial: remove unnecessary register_serial/unregister_serial 2005-06-25 16:24:25 -07:00