diff options
author | Doug Anderson <armlinux@m.disordat.com> | 2016-04-07 00:26:05 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2016-07-14 15:32:30 +0100 |
commit | 416bcf21591850cd12066b2f11655695118e6908 (patch) | |
tree | 2ee82e2bc12a293114b7d07cdb99bc3c51b2ad7e /arch/arm/mm/proc-v7.S | |
parent | 62c0f4a53447bc298c337713d2ede1e6bdec6fdf (diff) | |
download | op-kernel-dev-416bcf21591850cd12066b2f11655695118e6908.zip op-kernel-dev-416bcf21591850cd12066b2f11655695118e6908.tar.gz |
ARM: 8559/1: errata: Workaround erratum A12 821420
This erratum has a very simple workaround (set a bit in a register), so
let's apply it. Apparently the workaround's downside is a very slight
power impact.
Note that applying this errata fixes deadlocks that are easy to
reproduce with real world applications.
The arguments for why this needs to be in the kernel are similar to the
arugments made in the patch "Workaround errata A12 818325/852422 A17
852423".
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/proc-v7.S')
-rw-r--r-- | arch/arm/mm/proc-v7.S | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index b20b02e..eefc10f 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S @@ -368,6 +368,11 @@ __ca12_errata: orr r10, r10, #1 << 12 @ set bit #12 mcr p15, 0, r10, c15, c0, 1 @ write diagnostic register #endif +#ifdef CONFIG_ARM_ERRATA_821420 + mrc p15, 0, r10, c15, c0, 2 @ read internal feature reg + orr r10, r10, #1 << 1 @ set bit #1 + mcr p15, 0, r10, c15, c0, 2 @ write internal feature reg +#endif b __errata_finish __ca17_errata: |