linux/arch/arm
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
..
boot Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
common Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
configs Merge branch 'ixp4xx' into devel 2007-05-06 20:58:29 +01:00
kernel [ARM] Ensure head text is always placed at the start of kernel 2007-05-08 15:15:45 +01:00
lib [ARM] getuser.S and putuser.S don't need thread_info.h nor asm-offsets.h 2007-04-21 20:35:22 +01:00
mach-aaec2000 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-at91 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
mach-clps711x [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-clps7500 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-ebsa110 [ARM] EBSA110: Add readsw/readsl/writesw/writesl 2007-04-21 20:34:37 +01:00
mach-ep93xx [ARM] Convert AMBA PL010 driver to use the clk infrastructure 2007-04-22 12:30:41 +01:00
mach-footbridge [ARM] Remove needless linux/ptrace.h includes 2007-04-21 20:34:47 +01:00
mach-h720x [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-imx [ARM] 4255/1: i.MX/MX1 Correct MPU PLL reference clock value. 2007-03-12 16:49:35 +00:00
mach-integrator [ARM] Remove needless linux/ptrace.h includes 2007-04-21 20:34:47 +01:00
mach-iop13xx Merge branches 'arm-mm', 'at91', 'clkevts', 'imx', 'iop', 'misc', 'netx', 'ns9xxx', 'omap', 'pxa', 'rpc', 's3c' and 'sa1100' into devel 2007-05-06 20:57:51 +01:00
mach-iop32x [ARM] 4348/4: iop3xx: Give Linux control over PCI initialization 2007-05-03 14:02:48 +01:00
mach-iop33x [ARM] 4348/4: iop3xx: Give Linux control over PCI initialization 2007-05-03 14:02:48 +01:00
mach-ixp4xx Merge branch 'ixp4xx' into devel 2007-05-06 20:58:29 +01:00
mach-ixp23xx [ARM] 3994/1: ixp23xx: fix handling of pci master aborts 2006-12-07 16:16:19 +00:00
mach-ixp2000 [ARM] mm 9: add additional device memory types 2007-05-05 20:28:16 +01:00
mach-l7200 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-lh7a40x [ARM] Remove needless linux/ptrace.h includes 2007-04-21 20:34:47 +01:00
mach-netx [PATCH] clocksource: fixup is_continous changes on ARM 2007-02-16 08:13:57 -08:00
mach-ns9xxx [ARM] 4301/1: add mach type cc9p9360js 2007-04-21 20:52:30 +01:00
mach-omap1 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
mach-omap2 power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-pnx4008 power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
mach-pxa Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
mach-realview [ARM] 4201/1: SMP barriers pair needed for the secondary boot process 2007-02-16 13:06:56 +00:00
mach-rpc [ARM] Add platform support for PATA on RiscPC 2007-05-03 14:16:55 +01:00
mach-s3c2400 [ARM] 4157/2: S3C24XX: move arch/arch/mach-s3c2410 into cpu components 2007-02-11 17:36:09 +00:00
mach-s3c2410 [ARM] 4358/1: S3C24XX: mach-qt2410.c: remove linux/mmc/protocol.h header 2007-05-05 21:09:41 +01:00
mach-s3c2412 [ARM] 4319/1: S3C2412: Add kconfig for MACH_SMDK2412 2007-04-21 20:53:28 +01:00
mach-s3c2440 [ARM] 4325/1: S3C24XX: remove s3c24xx_board 2007-04-21 20:53:19 +01:00
mach-s3c2442 [ARM] 4157/2: S3C24XX: move arch/arch/mach-s3c2410 into cpu components 2007-02-11 17:36:09 +00:00
mach-s3c2443 [ARM] 4325/1: S3C24XX: remove s3c24xx_board 2007-04-21 20:53:19 +01:00
mach-sa1100 Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
mach-shark [ARM] Remove needless linux/ptrace.h includes 2007-04-21 20:34:47 +01:00
mach-versatile [ARM] 4261/1: clockevent support for Versatile platform 2007-04-21 21:02:51 +01:00
mm [ARM] Fix ASID version switch 2007-05-08 20:03:09 +01:00
nwfpe
oprofile [ARM] Add stacktrace support and make oprofile use it 2007-04-28 09:59:37 +01:00
plat-iop Merge branches 'arm-mm', 'at91', 'clkevts', 'imx', 'iop', 'misc', 'netx', 'ns9xxx', 'omap', 'pxa', 'rpc', 's3c' and 'sa1100' into devel 2007-05-06 20:57:51 +01:00
plat-omap Merge branches 'arm-mm', 'at91', 'clkevts', 'imx', 'iop', 'misc', 'netx', 'ns9xxx', 'omap', 'pxa', 'rpc', 's3c' and 'sa1100' into devel 2007-05-06 20:57:51 +01:00
plat-s3c24xx Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
tools [ARM] Update mach-types 2007-04-16 21:01:56 +01:00
vfp [ARM] Remove unnecessary asm/ptrace.h from VFP support code 2007-04-22 10:56:40 +01:00
Kconfig Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
Kconfig-nommu [ARM] nommu: manage the CP15 things 2006-09-27 17:34:30 +01:00
Kconfig.debug [ARM] Remove DEBUG_WAITQ 2006-11-30 12:24:47 +00:00
Makefile [ARM] fix mach-at91 build breakage 2007-02-20 15:28:40 +00:00