From: York Sun <yorksun@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] Errata/ARM57: Add basic constructs to handle and apply A57 specific erratas
Date: Tue, 13 Jan 2015 08:31:00 -0800 [thread overview]
Message-ID: <54B54844.5090002@freescale.com> (raw)
In-Reply-To: <1421155185-6269-1-git-send-email-bhupesh.sharma@freescale.com>
On 01/13/2015 05:19 AM, Bhupesh Sharma wrote:
> This patch adds basic constructs in the ARMv8 u-boot code
> to handle and apply Cortex-A57 specific erratas.
>
> As and example, the framework showcases how erratas 826974 and
> 828024 can be handled and applied.
>
> Later on this framework can be extended to include other
> erratas.
>
> Signed-off-by: Bhupesh Sharma <bhupesh.sharma@freescale.com>
> ---
> arch/arm/cpu/armv8/start.S | 47 ++++++++++++++++++++++++++++++++++++++++++
> arch/arm/include/asm/macro.h | 20 ++++++++++++++++++
> 2 files changed, 67 insertions(+)
>
> diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S
> index 4b11aa4..d5bcf12 100644
> --- a/arch/arm/cpu/armv8/start.S
> +++ b/arch/arm/cpu/armv8/start.S
> @@ -100,6 +100,8 @@ master_cpu:
> WEAK(lowlevel_init)
> mov x29, lr /* Save LR */
>
> + bl apply_core_errata
> +
> #if defined(CONFIG_GICV2) || defined(CONFIG_GICV3)
> branch_if_slave x0, 1f
> ldr x0, =GICD_BASE
> @@ -155,6 +157,51 @@ ENDPROC(smp_kick_all_cpus)
>
> /*-----------------------------------------------------------------------*/
>
> +WEAK(apply_core_errata)
> + mov x29, lr /* Save LR */
> +
> + /* For now, we support Cortex-A57 specific errata only */
> +
> + /* Check if we are running on a Cortex-A57 core */
> + branch_if_a57_core x0, 1f
> + b 2f
> +1:
> + bl apply_a57_core_errata
> +
> +2:
> + mov lr, x29 /* Restore LR */
> + ret
> +ENDPROC(apply_core_errata)
> +
> +/*-----------------------------------------------------------------------*/
> +
> +WEAK(apply_a57_core_errata)
> + mov x29, lr /* Save LR */
> +
> +#ifdef CONFIG_ARM_ERRATA_828024
> + mrs x0, S3_1_c15_c2_0 /* cpuactlr_el1 */
> + /* Disable non-allocate hint of w-b-n-a memory type */
> + mov x0, #0x1 << 49
> + /* Disable write streaming no L1-allocate threshold */
> + mov x0, #0x3 << 25
> + /* Disable write streaming no-allocate threshold */
> + mov x0, #0x3 << 27
> + msr S3_1_c15_c2_0, x0 /* cpuactlr_el1 */
> +#endif
> +
> +#ifdef CONFIG_ARM_ERRATA_826974
> + mrs x0, S3_1_c15_c2_0 /* cpuactlr_el1 */
> + /* Disable speculative load execution ahead of a DMB */
> + mov x0, #0x1 << 59
> + msr S3_1_c15_c2_0, x0 /* cpuactlr_el1 */
> +#endif
> +
> + mov lr, x29 /* Restore LR */
> + ret
> +ENDPROC(apply_a57_core_errata)
> +
Bhupesh,
Have you tested your patch on simulator/emulator? It seems you use x29
recursively. x29 holds the return address for function lowlevel_init. You use it
multiple times, so the program will not run correctly.
Beside, you implement this framework in lowlevel_init function, which is a weak
function. I guess you may have tested for LS2085A simulator, but we have a
different lowlevel_init function implemented. You may want to add a new function
call before "bl lowlevel_init".
York
next prev parent reply other threads:[~2015-01-13 16:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-13 13:19 [U-Boot] [PATCH 1/2] Errata/ARM57: Add basic constructs to handle and apply A57 specific erratas Bhupesh Sharma
2015-01-13 13:19 ` [U-Boot] [PATCH 2/2] configs/ls2085a: Add support for Cortex-A57 erratas Bhupesh Sharma
2015-01-13 16:31 ` York Sun [this message]
2015-01-14 5:42 ` [U-Boot] [PATCH 1/2] Errata/ARM57: Add basic constructs to handle and apply A57 specific erratas bhupesh.sharma at freescale.com
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=54B54844.5090002@freescale.com \
--to=yorksun@freescale.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox