[PATCH] ARM: Fix errata 751472 handling on Cortex-A9 r1p*
Russell King - ARM Linux
linux at arm.linux.org.uk
Thu Nov 15 04:22:42 EST 2012
On Wed, Nov 14, 2012 at 02:21:59PM -0800, Tony Lindgren wrote:
> No idea if assuming that zero value for the diagnostic register
> is safe.. What's the default value of the diagnostic register supposed
> to be?
No, that's not safe. What if your pre-kernel code has asked the secure
monitor to set the work-around bit already?
> #if defined(CONFIG_ARM_ERRATA_751472) && defined(CONFIG_SMP)
> ALT_SMP(cmp r6, #0x30) @ present prior to r3p0
> ALT_UP_B(1f)
> - mrclt p15, 0, r10, c15, c0, 1 @ read diagnostic register
> - orrlt r10, r10, #1 << 11 @ set bit #11
> - mcrlt p15, 0, r10, c15, c0, 1 @ write diagnostic register
> + bge 1f @ not needed for r3p0 and later
> + mrc p15, 0, r10, c15, c0, 1 @ read diagnostic register
> + teq r10, #0 @ zero for secure mode?
> + beq 1f @ bail out for secure mode
This test for zero is pointless. What if some other work-around has
been enabled but not this one?
> + tst r10, #1 << 11 @ bit #11 already set?
> + orreq r10, r10, #1 << 11 @ set bit #11 if not set
> + mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register
> 1:
> #endif
>
More information about the linux-arm-kernel
mailing list