From: Nishanth Menon <nm@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] ARM: OMAP5/DRA7: Provide workaround for ARM erratum 801819
Date: Fri, 24 Jul 2015 16:46:03 -0500 [thread overview]
Message-ID: <55B2B21B.8000602@ti.com> (raw)
In-Reply-To: <1437750763-17698-1-git-send-email-nm@ti.com>
On 07/24/2015 10:12 AM, Nishanth Menon wrote:
> ARM erratum 801819 ("An eviction from L1 data cache might stall
> indefinitely in the L2 write buffer preventing a snoop from
> completing") applies to A15 which may not have the erratum fix
> integrated (CPUID maynot exactly help here, since certain SoC
> versions might choose to pick up just the fix and no update in MIDR
> register.
>
> OMAP5 and DRA7 family of processors (at least the current revisions) do
> not have the fix integrated.
>
> Errata summary is that "A livelock can occur in the L2 cache arbitration
> that might prevent a snoop from completing. Under certain conditions
> this can cause the system to deadlock. "
>
> Recommended workaround is as follows:
> Do both of the following:
>
> 1) Do not use the write-back no-allocate memory type.
> 2) Do not issue write-back cacheable stores at any time when the cache
> is disabled (SCTLR.C=0) and the MMU is enabled (SCTLR.M=1). Because it
> is implementation defined whether cacheable stores update the cache when
> the cache is disabled it is not expected that any portable code will
> execute cacheable stores when the cache is disabled.
>
> For implementations of Cortex-A15 configured without the ?L2 arbitration
> register slice? option (typically one or two core systems), you must
> also do the following:
>
> 3) Disable write-streaming in each CPU by setting ACTLR[28:25] = 0b1111
>
> So, we provide an option to disable write streaming on OMAP5 and DRA7.
> It is a rare condition to occur and may be enabled selectively based
> on platform acceptance of risk. Most TI platforms used for development
> may probably never see it, so, this is not enabled by default.
>
> Suggested-by: Richard Woodruff <r-woodruff2@ti.com>
> Suggested-by: Brad Griffis <bgriffis@ti.com>
> Signed-off-by: Nishanth Menon <nm@ti.com>
> ---
> arch/arm/cpu/armv7/omap5/Kconfig | 7 +++++++
> arch/arm/cpu/armv7/omap5/hwinit.c | 11 +++++++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/arch/arm/cpu/armv7/omap5/Kconfig b/arch/arm/cpu/armv7/omap5/Kconfig
> index 20c3bd963bc6..6a85848f229e 100644
> --- a/arch/arm/cpu/armv7/omap5/Kconfig
> +++ b/arch/arm/cpu/armv7/omap5/Kconfig
> @@ -21,6 +21,13 @@ endchoice
> config SYS_SOC
> default "omap5"
>
> +config TI_ARM_ERRATA_801819
> + bool "Enable erratum workaround for 801819"
> + help
> + Disable streaming as a workaround for ARM erratum 801819
> + NOTE: Enabling this erratum workaround may have severe
> + performance issues for a potentially rare deadlock condition
> +
> source "board/compulab/cm_t54/Kconfig"
> source "board/ti/omap5_uevm/Kconfig"
> source "board/ti/dra7xx/Kconfig"
> diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c
> index 39f8d0d5e200..0d57d78f6e4f 100644
> --- a/arch/arm/cpu/armv7/omap5/hwinit.c
> +++ b/arch/arm/cpu/armv7/omap5/hwinit.c
> @@ -330,6 +330,17 @@ void init_cpu_configuration(void)
> * 8: Disable DVM/CMO message broadcast
> */
> l2actlr |= 0x118;
> +
> +#ifdef CONFIG_TI_ARM_ERRATA_801819
> + /*
> + * 28:27 Disables streaming. All write-allocate lines allocate in the L1
> + * or L2 cache
> + * 26:25 - Disables streaming. All write-allocate lines allocate in
> + * the L1 cache.
> + */
> + l2actlr |= (0x3 << 27) | (0x3 << 25);
> +#endif
> +
> omap_smc1(OMAP5_SERVICE_L2ACTLR_SET, l2actlr);
> }
>
>
Sorry about that.. I was supposed to write to ACTLR register, not
L2ACTLR register.. NAK for my own patch. :(
--
Regards,
Nishanth Menon
prev parent reply other threads:[~2015-07-24 21:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-24 15:12 [U-Boot] [PATCH] ARM: OMAP5/DRA7: Provide workaround for ARM erratum 801819 Nishanth Menon
2015-07-24 21:46 ` Nishanth Menon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55B2B21B.8000602@ti.com \
--to=nm@ti.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.