linux/arch/arm
Tony Lindgren e748994f5c ARM: 8353/1: mm: Fix Cortex-A8 erratum 430973 segfaults for bootloaders and multiarch
Looks like apps can be made to segfault easily on armhf distros
just by running cpuburn-a8 in the background, then starting apt
get update unless erratum 430973 workaround is enabled. This happens
on r3p2 also, which has 430973 fixed in hardware.

Turns out the reason for this is some bootloaders incorrectly
setting the auxilary register IBE bit, which probably causes us
to hit erratum 687067 on Cortex-A8 later than r1p2.

If the bootloader incorrectly sets the IBE bit in the auxilary control
register for Cortex-A8 revisions with 430973 fixed in hardware, we
need to call flush BTAC/BTB to avoid segfaults probably caused by
erratum 687067. So let's flush BTAC/BTB unconditionally for Cortex-A8.
It won't do anything unless the IBE bit is set.

Note that we keep the erratum 430973 Kconfig option still around and
disabled for multiarch as it may be unsafe to enable for some secure
SoC. It is known safe to be enabled for n900, but won't do anything
on n900 as the IBE bit needs to be set with SMC.

Also note that SoCs probably should also add checks and print warnings
for the misconfigured IBE bit depending on the Cortex-A8 revision
so the bootloaders can be fixed Cortex-A8 revisions later than
r1p2 to not set the IBE bit.

Tested-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-05-08 10:42:33 +01:00
..
boot Merge git://www.linux-watchdog.org/linux-watchdog 2015-04-22 11:22:55 -07:00
common ARM: SoC platform updates for v4.1 2015-04-22 09:08:39 -07:00
configs ARM: SoC defconfig updates for v4.1 2015-04-22 09:21:30 -07:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2015-04-15 10:42:15 -07:00
firmware
include ARM: 8341/1: io: Unpessimize relaxed io accessors 2015-05-08 10:42:33 +01:00
kernel ARM: 8340/1: ARMv7-M: Enlarge vector table up to 256 entries 2015-05-08 10:42:21 +01:00
kvm This mostly includes the PPC changes for 4.1, which this time cover 2015-04-26 13:06:22 -07:00
lib ARM: ensure delay timer has sufficient accuracy for delays 2015-04-14 22:28:07 +01:00
mach-alpine ARM: alpine: add support for generic pci 2015-04-14 01:15:57 +02:00
mach-asm9260
mach-at91 Fourth batch of cleanup for 4.1: 2015-04-14 01:50:21 +02:00
mach-axxia
mach-bcm
mach-berlin
mach-clps711x
mach-cns3xxx
mach-davinci ARM: DT updates for v4.1 2015-04-22 09:09:46 -07:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx
mach-exynos ARM: SoC driver updates for v4.1 2015-04-22 09:18:17 -07:00
mach-footbridge
mach-gemini
mach-highbank
mach-hisi
mach-imx ARM: SoC late changes for v4.1 2015-04-22 09:24:55 -07:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone
mach-ks8695
mach-lpc32xx
mach-mediatek
mach-meson
mach-mmp
mach-moxart
mach-mv78xx0
mach-mvebu ARM: SoC platform updates for v4.1 2015-04-22 09:08:39 -07:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire
mach-omap1
mach-omap2 ARM: SoC late changes for v4.1 2015-04-22 09:24:55 -07:00
mach-orion5x
mach-picoxcell
mach-prima2
mach-pxa power supply and reset changes for the v4.1 series 2015-04-13 15:21:34 -07:00
mach-qcom
mach-realview
mach-rockchip
mach-rpc
mach-s3c24xx
mach-s3c64xx ARM: SoC platform updates for v4.1 2015-04-22 09:08:39 -07:00
mach-s5pv210
mach-sa1100 ARM: 8346/1: sa1100: Constify irq_domain_ops 2015-05-08 10:42:33 +01:00
mach-shmobile Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
mach-socfpga
mach-spear
mach-sti
mach-sunxi
mach-tegra Power management and ACPI updates for v4.1-rc1 2015-04-14 20:21:54 -07:00
mach-u300
mach-ux500
mach-versatile
mach-vexpress ARM: SoC driver updates for v4.1 2015-04-22 09:18:17 -07:00
mach-vt8500
mach-w90x900
mach-zynq
mm ARM: 8353/1: mm: Fix Cortex-A8 erratum 430973 segfaults for bootloaders and multiarch 2015-05-08 10:42:33 +01:00
net
nwfpe
oprofile
plat-iop
plat-omap ARM, clocksource/drivers: Provide read_boot_clock64() and read_persistent_clock64() and use them 2015-04-03 08:18:23 +02:00
plat-orion
plat-pxa ARM: plat-pxa: remove use of seq_printf return value 2015-04-15 16:35:25 -07:00
plat-samsung
plat-versatile
probes
tools
vdso ARM: 8344/1: VDSO: honor CONFIG_VDSO in Makefile 2015-04-21 15:28:02 +01:00
vfp
xen
Kconfig ARM: SoC multiplatform code changes for v4.1 2015-04-22 09:20:15 -07:00
Kconfig-nommu
Kconfig.debug ARM: SoC multiplatform code changes for v4.1 2015-04-22 09:20:15 -07:00
Makefile ARM: SoC platform updates for v4.1 2015-04-22 09:08:39 -07:00