linux/arch
Russell King 8678c1f042 [ARM] Fix ASID version switch
Close a hole in the ASID version switch, particularly the following
scenario:

CPU0 MM PID			CPU1 MM PID
	idle
				  A	pid(A)
				  A	idle(lazy tlb)
		* new asid version triggered by B *
  B	pid(B)
  A	pid(A)
		* MM A gets new asid version *
  A	idle(lazy tlb)
				  A	pid(A)
		* CPU1 doesn't see the new ASID *

The result is that CPU1 continues running with the hardware set
for the original (stale) ASID value, but mm->context.id contains
the new ASID value.  The result is that the next MM fault on CPU1
updates the page table entries, but flush_tlb_page() fails due to
wrong ASID.

There is a related case with a threaded application is allocated
a new ASID on one CPU while another of its threads is running on
some different CPU.  This scenario is not fixed by this commit.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2007-05-08 20:03:09 +01:00
..
alpha srmcons: fix kmalloc(GFP_KERNEL) inside spinlock 2007-05-07 12:12:58 -07:00
arm [ARM] Fix ASID version switch 2007-05-08 20:03:09 +01:00
arm26 ARM26: remove useless config option GENERIC_BUST_SPINLOCK. 2007-05-07 12:12:58 -07:00
avr32
blackfin blackfin architecture 2007-05-07 12:12:58 -07:00
cris CRIS: remove code related to pre-2.2 kernel 2007-05-07 12:13:00 -07:00
frv get_unmapped_area handles MAP_FIXED on frv 2007-05-07 12:12:56 -07:00
h8300 h8300: add zImage support 2007-05-07 12:12:58 -07:00
i386 get_unmapped_area handles MAP_FIXED on i386 2007-05-07 12:12:56 -07:00
ia64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-05-07 12:34:57 -07:00
m32r
m68k SPIN_LOCK_UNLOCKED cleanup in arch/m68k 2007-05-07 12:12:59 -07:00
m68knommu PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
mips RM9000 serial driver 2007-05-07 12:12:50 -07:00
parisc get_unmapped_area handles MAP_FIXED on parisc 2007-05-07 12:12:56 -07:00
powerpc slab allocators: Remove SLAB_DEBUG_INITIAL flag 2007-05-07 12:12:57 -07:00
ppc Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00
s390 Introduce CONFIG_HAS_DMA 2007-05-07 12:12:51 -07:00
sh sh: R7785RP board updates. 2007-05-07 02:11:57 +00:00
sh64 Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00
sparc [SPARC]: Fix comment typo in smp4m_blackbox_current(). 2007-05-06 22:43:46 -07:00
sparc64 Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2007-05-07 12:22:48 -07:00
um uml: fix prototypes 2007-05-07 12:13:04 -07:00
v850 v850: generic timekeeping conversion 2007-05-07 12:13:04 -07:00
x86_64 swsusp: do not use page flags 2007-05-07 12:12:59 -07:00
xtensa xtensa: strlcpy is smart enough 2007-05-07 12:13:04 -07:00