linux/arch
Will Deacon 52af9c6cd8 ARM: 6943/1: mm: use TTBR1 instead of reserved context ID
On ARMv7 CPUs that cache first level page table entries (like the
Cortex-A15), using a reserved ASID while changing the TTBR or flushing
the TLB is unsafe.

This is because the CPU may cache the first level entry as the result of
a speculative memory access while the reserved ASID is assigned. After
the process owning the page tables dies, the memory will be reallocated
and may be written with junk values which can be interpreted as global,
valid PTEs by the processor. This will result in the TLB being populated
with bogus global entries.

This patch avoids the use of a reserved context ID in the v7 switch_mm
and ASID rollover code by temporarily using the swapper_pg_dir pointed
at by TTBR1, which contains only global entries that are not tagged
with ASIDs.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2011-05-26 12:14:33 +01:00
..
alpha Remove unused PROC_CHANGE_PENALTY constant 2011-05-25 08:39:43 -07:00
arm ARM: 6943/1: mm: use TTBR1 instead of reserved context ID 2011-05-26 12:14:33 +01:00
avr32 mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin 2011-05-25 15:34:14 -07:00
cris cris: convert old cpumask API into new one 2011-05-25 08:39:39 -07:00
frv mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
h8300 genirq: Remove the now obsolete config options and select statements 2011-03-30 14:13:23 +02:00
ia64 mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
m32r lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
m68k mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
microblaze mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
mips lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
mn10300 mn10300: convert old cpumask API into new one 2011-05-25 08:39:39 -07:00
parisc Remove unused PROC_CHANGE_PENALTY constant 2011-05-25 08:39:43 -07:00
powerpc Merge branch 'timers-ptp-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-05-25 08:59:42 -07:00
s390 mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
score lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
sh lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
sparc lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
tile Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2011-05-25 15:35:32 -07:00
um lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
unicore32 lib: consolidate DEBUG_STACK_USAGE option 2011-05-25 08:39:54 -07:00
x86 Merge branch 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2011-05-25 16:52:50 -07:00
xtensa mm: now that all old mmu_gather code is gone, remove the storage 2011-05-25 08:39:16 -07:00
.gitignore
Kconfig mm, powerpc: move the RCU page-table freeing into generic code 2011-05-25 08:39:16 -07:00