linux-uconsole/arch/mips/include/asm
David Daney c45e0a8635 MIPS: Make set_pte() SMP safe.
commit 46011e6ea3 upstream.

On MIPS the GLOBAL bit of the PTE must have the same value in any
aligned pair of PTEs.  These pairs of PTEs are referred to as
"buddies".  In a SMP system is is possible for two CPUs to be calling
set_pte() on adjacent PTEs at the same time.  There is a race between
setting the PTE and a different CPU setting the GLOBAL bit in its
buddy PTE.

This race can be observed when multiple CPUs are executing
vmap()/vfree() at the same time.

Make setting the buddy PTE's GLOBAL bit an atomic operation to close
the race condition.

The case of CONFIG_64BIT_PHYS_ADDR && CONFIG_CPU_MIPS32 is *not*
handled.

Signed-off-by: David Daney <david.daney@cavium.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10835/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-08-16 20:51:35 -07:00
..
dec MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
emma MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fw MIPS: FW: Add environment variable processing. 2013-05-08 12:30:09 +02:00
ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
lasat MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ar7 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ath79 Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
mach-au1x00 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-bcm47xx MIPS: BCM47XX: add bcm47xx prefix in front of nvram function names 2013-02-15 19:01:57 +01:00
mach-bcm63xx Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-05-10 07:48:05 -07:00
mach-cavium-octeon MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-cobalt MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-db1x00 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-dec MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-emma2rh MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-generic MIPS: Fix KVM guest fixmap address 2015-07-10 10:40:22 -07:00
mach-ip22 MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-ip27 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ip28 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ip32 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-jazz MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-jz4740 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-lantiq Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
mach-lasat MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-loongson MIPS: Build uasm-generated code only once to avoid CPU Hotplug problem 2013-05-08 01:19:06 +02:00
mach-loongson1 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-malta MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-netlogic Merge branch 'mips-next' of http://dev.phrozen.org/githttp/mips-next into mips-for-linux-next 2012-12-13 19:40:13 +01:00
mach-pmcs-msp71xx MIPS: MSP71xx: Move code. 2013-02-01 10:00:22 +01:00
mach-pnx833x MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-powertv MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-ralink MIPS: ralink: add memory definition for MT7620 2013-05-08 01:19:12 +02:00
mach-rc32434 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-rm MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-sead3 MIPS: microMIPS: Disable LL/SC and fix linker bug. 2013-05-09 17:55:19 +02:00
mach-sibyte MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mach-tx39xx MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-tx49xx MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-vr41xx MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
mach-wrppmc MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mips-boards MIPS: FW: Remove obsolete header file for MTI platforms. 2013-05-08 12:30:10 +02:00
netlogic MIPS: Netlogic: Merge platform usb.h to usb-init.c 2013-05-08 01:19:05 +02:00
octeon Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
pci MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgi MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sibyte MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sn MIPS: IP27: Remove pfn_t. 2013-05-08 03:51:58 +02:00
txx9 MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
vr41xx MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
xtalk MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
abi.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
addrspace.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
amon.h
arch_hweight.h
asm-offsets.h
asm.h MIPS: microMIPS: Optimise 'memset' core library function. 2013-05-09 17:55:19 +02:00
asmmacro-32.h update David Miller's old email address 2011-04-06 06:19:38 -07:00
asmmacro-64.h update David Miller's old email address 2011-04-06 06:19:38 -07:00
asmmacro.h
atomic.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
barrier.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
bcache.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
bitops.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
bmips.h MIPS: BMIPS: Introduce bmips.h 2011-12-07 22:03:18 +00:00
bootinfo.h MIPS: add detect_memory_region() 2013-05-08 01:19:11 +02:00
branch.h MIPS: MIPS16e: Support handling of delay slots. 2013-05-09 17:55:20 +02:00
break.h MIPS: Quit exporting kernel internel break codes to uapi/asm/break.h 2013-02-20 18:24:24 +01:00
bug.h
bugs.h
cache.h MIPS: Rename .data..mostly and properly handle it in linker script 2011-05-10 18:15:24 +01:00
cacheflush.h MIPS: cache: Provide cache flush operations for XFS 2011-10-20 15:00:18 +01:00
cacheops.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
cevt-r4k.h MIPS: MSP: Fix build error 2011-05-10 18:15:24 +01:00
checksum.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
clkdev.h MIPS: add clkdev.h 2012-05-15 17:49:20 +02:00
clock.h MIPS: clock.h: Remove declaration of cpu_wait. 2013-05-22 01:34:25 +02:00
cmp.h
cmpxchg.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
compat-signal.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
compat.h Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-03-02 07:44:16 -08:00
compiler.h
cop2.h MIPS: Don't place cu2 notifiers in __cpuinitdata 2010-10-04 18:34:00 +01:00
cpu-features.h MIPS: Build uasm-generated code only once to avoid CPU Hotplug problem 2013-05-08 01:19:06 +02:00
cpu-info.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
cpu.h Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
cputime.h
current.h
debug.h
delay.h MIPS: Make __{,n,u}delay declarations match definitions and generic delay.h 2012-10-16 22:20:03 +02:00
device.h MIPS: Convert DMA to use dma-mapping-common.h 2010-10-29 19:08:31 +01:00
div64.h
dma-coherence.h MIPS: Add option to disable software I/O coherency. 2013-05-01 16:32:49 -05:00
dma-mapping.h MIPS: Add option to disable software I/O coherency. 2013-05-01 16:32:49 -05:00
dma.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
ds1287.h
dsp.h MIPS: DSP: Fix DSP mask for registers. 2013-01-24 13:20:09 +01:00
edac.h
elf.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
emergency-restart.h
errno.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
exec.h Disintegrate asm/system.h for MIPS 2012-03-28 18:30:02 +01:00
fb.h
fixmap.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
floppy.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fpregdef.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fpu.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
fpu_emulator.h MIPS: microMIPS: Floating point support. 2013-05-09 17:55:18 +02:00
ftrace.h
futex.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
gcmpregs.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
gic.h MIPS: Add new GIC clockevent driver. 2013-05-09 17:55:21 +02:00
gio_device.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
gpio.h
gt64120.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
hardirq.h
hazards.h MIPS: Get rid of the use of .macro in C code. 2013-04-11 15:39:51 +02:00
highmem.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
hugetlb.h mm/hugetlb: add more arch-defined huge_pte functions 2013-04-29 15:54:33 -07:00
hw_irq.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
i8259.h
ide.h
idle.h MIPS: Idle: Break r4k_wait into two functions and fix it. 2013-05-22 01:34:28 +02:00
inst.h MIPS: MIPS16e: Support handling of delay slots. 2013-05-09 17:55:20 +02:00
io.h MIPS: Expose missing pci_io{map,unmap} declarations 2013-08-14 22:59:10 -07:00
irq.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
irq_cpu.h MIPS: add irqdomain support for the CPU IRQ controller 2013-02-17 01:25:34 +01:00
irq_gt641xx.h
irq_regs.h
irqflags.h MIPS: Get rid of the use of .macro in C code. 2013-04-11 15:39:51 +02:00
isadep.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jazz.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jazzdma.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
jump_label.h compiler/gcc4: Add quirk for 'asm goto' miscompilation bug 2013-10-18 07:45:45 -07:00
Kbuild tracing,x86: Add a TSC trace_clock 2012-11-13 15:48:27 -05:00
kdebug.h
kexec.h MIPS: kdump: Add support 2012-12-13 16:46:47 +01:00
kgdb.h
kmap_types.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kprobes.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
kspd.h MIPS: MT: Remove kspd. 2012-10-11 11:14:12 +02:00
kvm_host.h mips/kvm: Fix ABI by moving manipulation of CP0 registers to KVM_{G,S}ET_ONE_REG 2013-06-03 10:58:54 +03:00
linkage.h consolidate cond_syscall and SYSCALL_ALIAS declarations 2013-03-03 22:55:19 -05:00
local.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
local64.h
m48t37.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mc146818-time.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mc146818rtc.h
mips_machine.h MIPS: move mips_{set,get}_machine_name() to a more generic place 2013-05-08 01:19:07 +02:00
mips_mt.h
mipsmtregs.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mipsprom.h MIPS: SNI: Fix conflicting wrapper symbols for headers. 2011-10-20 15:00:18 +01:00
mipsregs.h MIPS: include linux/types.h 2014-03-23 21:38:20 -07:00
mmu.h
mmu_context.h MIPS: include: mmu_context.h: Replace VIRTUALIZATION with KVM 2013-06-10 18:07:43 +02:00
mmzone.h
module.h MIPS: PMC-Sierra Yosemite: Remove support. 2012-12-13 18:15:30 +01:00
msc01_ic.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
mutex.h
nile4.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
paccess.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
page.h MIPS: Rewrite pfn_valid to work in modules, too. 2013-05-19 09:56:58 +02:00
parport.h
pci.h Merge branch 'mips-next-3.9' of git://git.linux-mips.org/pub/scm/john/linux-john into mips-for-linux-next 2013-02-21 12:51:33 +01:00
percpu.h
perf_event.h MIPS, Perf-events: Work with irq_work 2011-03-14 21:07:26 +01:00
pgalloc.h
pgtable-32.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pgtable-64.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pgtable-bits.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
pgtable.h MIPS: Make set_pte() SMP safe. 2015-08-16 20:51:35 -07:00
pmon.h
prefetch.h
processor.h MIPS: Idle: Consolidate all declarations in <asm/idle.h>. 2013-05-22 01:34:27 +02:00
prom.h MIPS: move mips_{set,get}_machine_name() to a more generic place 2013-05-08 01:19:07 +02:00
ptrace.h MIPS: Quit exposing Kconfig symbols in uapi headers. 2013-05-23 10:19:04 +02:00
r4k-timer.h MIPS: Synchronize MIPS count one CPU at a time 2012-08-17 10:57:28 +02:00
r4kcache.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
reboot.h
reg.h MIPS: asm/reg.h: Make 32- and 64-bit definitions available at the same time 2014-09-17 09:03:58 -07:00
regdef.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
rm9k-ocd.h
rtlx.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
scatterlist.h
seccomp.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sections.h
segment.h
serial.h
setup.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
sgialib.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sgiarcs.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
shmparam.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
sigcontext.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
siginfo.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
signal.h Fix breakage in MIPS siginfo handling 2013-03-19 19:15:52 +01:00
sim.h mips: switch to generic sys_fork() and sys_clone() 2013-02-03 18:33:02 -05:00
smp-ops.h MIPS: ARC: Fix build of firmware library on uniprocessor. 2011-07-20 23:12:11 +01:00
smp.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
smtc.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
smtc_ipi.h
smtc_proc.h
sni.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
socket.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
sparsemem.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
spinlock.h MIPS: Remove redundant instructions from arch_spin_{,try}lock. 2013-04-26 17:18:24 +02:00
spinlock_types.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
spram.h
stackframe.h MIPS: microMIPS: Add support for exception handling. 2013-05-09 17:55:18 +02:00
stacktrace.h MIPS: Add new unwind_stack variant 2011-06-15 14:35:33 +02:00
string.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
switch_to.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
termios.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
thread_info.h MIPS: asm: thread_info: Add _TIF_SECCOMP flag 2014-09-17 09:03:58 -07:00
time.h MIPS: Add new GIC clockevent driver. 2013-05-09 17:55:21 +02:00
timex.h
tlb.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
tlbdebug.h
tlbflush.h
tlbmisc.h MIPS: Fix Jazz 64-bit build error. 2011-12-07 22:01:45 +00:00
topology.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
traps.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
txx9irq.h
txx9pio.h
txx9tmr.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
types.h UAPI: (Scripted) Disintegrate arch/mips/include/asm 2012-10-09 09:47:14 +01:00
uaccess.h Merge branch 'mti-next' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next 2013-05-09 17:57:30 +02:00
uasm.h MIPS: microMIPS: Fix macro naming in micro-assembler. 2013-05-09 17:55:18 +02:00
ucontext.h
unaligned.h
unistd.h consolidate cond_syscall and SYSCALL_ALIAS declarations 2013-03-03 22:55:19 -05:00
user.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
vdso.h
vga.h
vpe.h
war.h MIPS: Whitespace cleanup. 2013-02-01 10:00:22 +01:00
watch.h
wbflush.h
xor.h