linux/arch/arm/kernel
Mark Rutland 2c32c65e37 ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy strex
On revisions of Cortex-A15 prior to r3p3, a CLREX instruction at PL1 may
falsely trigger a watchpoint exception, leading to potential data aborts
during exception return and/or livelock.

This patch resolves the issue in the following ways:

  - Replacing our uses of CLREX with a dummy STREX sequence instead (as
    we did for v6 CPUs).

  - Removing the clrex code from v7_exit_coherency_flush and derivatives,
    since this only exists as a minor performance improvement when
    non-cached exclusives are in use (Linux doesn't use these).

Benchmarking on a variety of ARM cores revealed no measurable
performance difference with this change applied, so the change is
performed unconditionally and no new Kconfig entry is added.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Cc: stable@vger.kernel.org
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-08-27 15:40:13 +01:00
..
.gitignore
arch_timer.c
armksyms.c
arthur.c
asm-offsets.c KVM: arm/arm64: vgic: move GICv2 registers to their own structure 2014-07-11 04:57:31 -07:00
atags_compat.c
atags_parse.c ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
atags_proc.c
atags.h
bios32.c
calls.S ARM: wire up memfd_create syscall 2014-08-09 14:07:59 +01:00
cpuidle.c
crash_dump.c
debug.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
devtree.c arm: Add devicetree fixup machine function 2014-07-29 21:26:49 -06:00
dma-isa.c
dma.c
early_printk.c
elf.c
entry-armv.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
entry-common.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
entry-header.S ARM: 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy strex 2014-08-27 15:40:13 +01:00
entry-v7m.S
etm.c
fiq.c
fiqasm.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
ftrace.c
head-common.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
head-nommu.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
head.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
hibernate.c
hw_breakpoint.c
hyp-stub.S Here are the PPC and ARM changes for KVM, which I separated because 2014-08-07 11:35:30 -07:00
insn.c
insn.h
io.c
irq.c
isa.c arm: convert use of typedef ctl_table to struct ctl_table 2014-06-06 16:08:15 -07:00
iwmmxt.S Merge branches 'fixes' and 'misc' into for-next 2014-08-05 10:27:13 +01:00
jump_label.c
kgdb.c ARM: 8124/1: don't enter kgdb when userspace executes a kgdb break instruction 2014-08-02 15:20:30 +01:00
kprobes-arm.c
kprobes-common.c
kprobes-test-arm.c ARM: kprobes: Fix test code compilation errors for ARMv4 targets 2014-07-02 12:48:36 +01:00
kprobes-test-thumb.c
kprobes-test.c ARM: kprobes: Prevent known test failures stopping other tests running 2014-07-02 12:48:36 +01:00
kprobes-test.h
kprobes-thumb.c
kprobes.c
kprobes.h
machine_kexec.c
Makefile Merge branches 'alignment', 'fixes', 'l2c' (early part) and 'misc' into for-next 2014-06-05 12:35:52 +01:00
module.c ARM: 8127/1: module: add support for R_ARM_TARGET1 relocations 2014-08-27 15:40:11 +01:00
opcodes.c
patch.c
patch.h
perf_event_cpu.c Merge branch 'devel-stable' into for-next 2014-08-05 10:27:25 +01:00
perf_event_v6.c arm: perf: clean up PMU names 2014-07-02 15:48:25 +01:00
perf_event_v7.c arm: perf: krait: stop using singleton PMU 2014-07-02 15:48:26 +01:00
perf_event_xscale.c arm: perf: clean up PMU names 2014-07-02 15:48:25 +01:00
perf_event.c Merge branch 'devel-stable' into for-next 2014-08-05 10:27:25 +01:00
perf_regs.c
pj4-cp0.c
probes-arm.c ARM: kprobes: Disallow instructions with PC and register specified shift 2014-07-02 12:48:36 +01:00
probes-arm.h
probes-thumb.c
probes-thumb.h
probes.c
probes.h
process.c
psci_smp.c
psci.c
ptrace.c ARM: 8087/1: ptrace: reload syscall number after secure_computing() check 2014-06-29 10:29:35 +01:00
relocate_kernel.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
return_address.c
setup.c ARM: hwcap: disable HWCAP_SWP if the CPU advertises it has exclusives 2014-07-18 12:29:51 +01:00
signal.c
sigreturn_codes.S
sleep.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
smp_scu.c ARM: 8122/1: smp_scu: enable SCU standby support 2014-08-02 08:51:53 +01:00
smp_tlb.c ARM: 8111/1: Enable erratum 798181 for Broadcom Brahma-B15 2014-07-24 14:40:26 +01:00
smp_twd.c
smp.c ARM: add IPI tracepoints 2014-08-07 20:40:41 -04:00
stacktrace.c
suspend.c
swp_emulate.c ARM: SWP emulation: only initialise on ARMv7 CPUs 2014-07-18 12:29:49 +01:00
sys_arm.c
sys_oabi-compat.c
tcm.c
thumbee.c
time.c ARM: 8072/1: time: Make use of arm_get_current_stackframe 2014-07-18 12:29:14 +01:00
topology.c sched: Fix compiler warnings 2014-07-02 08:33:48 +02:00
traps.c ARM: 8074/1: traps: Make use of the frame_pointer macro 2014-07-18 12:29:18 +01:00
unwind.c ARM: 8073/1: unwind: Use arm_get_current_stackframe 2014-07-18 12:29:16 +01:00
uprobes-arm.c
uprobes.c
uprobes.h
v7m.c
vmlinux.lds.S ARM: 8088/1: vmlinux.lds.S: drop redundant .comment 2014-07-18 12:29:23 +01:00
xscale-cp0.c