[PATCH 4/4] ARM: apply the l2x0 Errata 769419 at run time
Russell King - ARM Linux
linux at arm.linux.org.uk
Mon Jan 21 11:12:02 EST 2013
On Mon, Jan 21, 2013 at 06:47:12PM +0530, srinidhi kasagar wrote:
> Signed-off-by: srinidhi kasagar <srinidhi.kasagar at stericsson.com>
> ---
> arch/arm/kernel/process.c | 9 ++++++---
> 1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
> index c6dec5f..c94d84f 100644
> --- a/arch/arm/kernel/process.c
> +++ b/arch/arm/kernel/process.c
> @@ -39,6 +39,7 @@
> #include <asm/thread_notify.h>
> #include <asm/stacktrace.h>
> #include <asm/mach/time.h>
> +#include <asm/hardware/cache-l2x0.h>
>
> #ifdef CONFIG_CC_STACKPROTECTOR
> #include <linux/stackprotector.h>
> @@ -201,9 +202,11 @@ void cpu_idle(void)
> * to ensure we don't miss a wakeup call.
> */
> local_irq_disable();
> -#ifdef CONFIG_PL310_ERRATA_769419
> - wmb();
> -#endif
> +
> + /* Check for PL310 ERRATA 769419 */
> + if (l2x0_get_rtl_release() == L2X0_CACHE_ID_RTL_R3P0)
> + wmb();
You have to be joking if you think that is suitable... two reasons:
1. It's a horrid layering violation.
2. l2x0_get_rtl_release() unconditionally reads from a register in the L2
controller. What if you don't have a L2 controller?
Is it really worth this hastle, or would it just be better to keep the
ifdef there, using the configuration symbol as a way to indicate whether
we want this work-around included in the kernel, and always have the
wmb() there if the symbol is enabled?
More information about the linux-arm-kernel
mailing list