All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nishanth Menon <nm@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V6 02/11] ARM: Introduce erratum workaround for 454179
Date: Mon, 9 Mar 2015 17:12:00 -0500	[thread overview]
Message-ID: <1425939129-308-3-git-send-email-nm@ti.com> (raw)
In-Reply-To: <1425939129-308-1-git-send-email-nm@ti.com>

454179: Stale prediction may inhibit target address misprediction on
	next predicted taken branch
Impacts: Every Cortex-A8 processors with revision lower than r2p1
Work around:  Set IBE and disable branch size mispredict to 1

Also provide a hook for SoC specific handling to take place if needed.

Based on ARM errata Document revision 20.0 (13 Nov 2010)

Signed-off-by: Nishanth Menon <nm@ti.com>
---
 README                       |    1 +
 arch/arm/cpu/armv7/cp15.c    |    6 ++++++
 arch/arm/cpu/armv7/start.S   |   13 +++++++++++++
 arch/arm/include/asm/armv7.h |    2 ++
 4 files changed, 22 insertions(+)

diff --git a/README b/README
index 9a0106066b1c..259dbdbd2075 100644
--- a/README
+++ b/README
@@ -693,6 +693,7 @@ The following options need to be configured:
 		NOTE: The following can be machine specific errata. These
 		do have ability to provide rudimentary version and machine
 		specific checks, but expect no product checks.
+		CONFIG_ARM_ERRATA_454179
 		CONFIG_ARM_ERRATA_798870
 
 - Driver Model
diff --git a/arch/arm/cpu/armv7/cp15.c b/arch/arm/cpu/armv7/cp15.c
index 8ac81c9ba147..b44c9f94a822 100644
--- a/arch/arm/cpu/armv7/cp15.c
+++ b/arch/arm/cpu/armv7/cp15.c
@@ -21,3 +21,9 @@ void __weak v7_arch_cp15_set_l2aux_ctrl(u32 l2actlr, u32 cpu_midr,
 {
 	asm volatile ("mcr p15, 1, %0, c15, c0, 0\n\t" : : "r"(l2actlr));
 }
+
+void __weak v7_arch_cp15_set_acr(u32 acr, u32 cpu_midr, u32 cpu_rev_comb,
+				 u32 cpu_variant, u32 cpu_rev)
+{
+	asm volatile ("mcr p15, 0, %0, c1, c0, 1\n\t" : : "r"(acr));
+}
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 89637e26395d..8483687879ed 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -189,6 +189,19 @@ ENTRY(cpu_init_cp15)
 skip_errata_798870:
 #endif
 
+#ifdef CONFIG_ARM_ERRATA_454179
+	cmp	r2, #0x21		@ Only on < r2p1
+	bge	skip_errata_454179
+
+	mrc	p15, 0, r0, c1, c0, 1	@ Read ACR
+	orr	r0, r0, #(0x3 << 6)	@ Set DBSM(BIT7) and IBE(BIT6) bits
+	push	{r1-r5}			@ Save the cpu info registers
+	bl	v7_arch_cp15_set_acr
+	pop	{r1-r5}			@ Restore the cpu info - fall through
+
+skip_errata_454179:
+#endif
+
 	mov	pc, r5			@ back to my caller
 ENDPROC(cpu_init_cp15)
 
diff --git a/arch/arm/include/asm/armv7.h b/arch/arm/include/asm/armv7.h
index 69abc4791ae5..e9a00e20002c 100644
--- a/arch/arm/include/asm/armv7.h
+++ b/arch/arm/include/asm/armv7.h
@@ -141,6 +141,8 @@ extern char __secure_end[];
 void v7_arch_cp15_set_l2aux_ctrl(u32 l2auxctrl, u32 cpu_midr,
 				 u32 cpu_rev_comb, u32 cpu_variant,
 				 u32 cpu_rev);
+void v7_arch_cp15_set_acr(u32 acr, u32 cpu_midr, u32 cpu_rev_comb,
+			  u32 cpu_variant, u32 cpu_rev);
 #endif /* ! __ASSEMBLY__ */
 
 #endif
-- 
1.7.9.5

  parent reply	other threads:[~2015-03-09 22:12 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-09 22:11 [U-Boot] [PATCH V6 00/11] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements Nishanth Menon
2015-03-09 22:11 ` [U-Boot] [PATCH V6 01/11] ARM: Introduce erratum workaround for 798870 Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-15 21:50   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` Nishanth Menon [this message]
2015-03-11 15:48   ` [U-Boot] [PATCH V6 02/11] ARM: Introduce erratum workaround for 454179 Tom Rini
2015-03-15 21:50   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 03/11] ARM: Introduce erratum workaround for 430973 Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-15 21:50   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 04/11] ARM: Introduce erratum workaround for 621766 Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-15 21:50   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 05/11] ARM: OMAP: Change set_pl310_ctrl_reg to be generic Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 06/11] ARM: OMAP3: Rename omap3.h to omap.h to be generic as all SoCs Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 07/11] ARM: OMAP3: Get rid of omap3_gp_romcode_call and replace with omap_smc1 Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-11 15:53     ` Nishanth Menon
2015-03-11 16:00       ` Tom Rini
2015-03-11 16:04         ` Nishanth Menon
2015-03-11 20:26           ` Paul Kocialkowski
2015-03-11 21:16             ` Tom Rini
2015-03-11 21:33               ` Paul Kocialkowski
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 08/11] ARM: DRA7 / OMAP5: Add workaround for ARM errata 798870 Nishanth Menon
2015-03-11 15:48   ` Tom Rini
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 09/11] ARM: OMAP5 / DRA7: Setup L2 Aux Control Register with recommended configuration Nishanth Menon
2015-03-11 15:49   ` Tom Rini
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 10/11] ARM: OMAP3: Enable workaround for ARM errata 454179, 430973, 621766 Nishanth Menon
2015-03-11 15:51   ` Tom Rini
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-09 22:12 ` [U-Boot] [PATCH V6 11/11] ARM: OMAP3: rx51: " Nishanth Menon
2015-03-11 15:51   ` Tom Rini
2015-03-15 21:51   ` [U-Boot] [U-Boot, V6, " Tom Rini
2015-03-11 15:48 ` [U-Boot] [PATCH V6 00/11] ARM: OMAP3-DRA7: CP15 erratum workarounds and improvements Tom Rini
2015-03-11 15:51   ` Nishanth Menon
2015-03-11 16:00     ` Tom Rini
2015-03-12  0:26       ` Matt Porter

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=1425939129-308-3-git-send-email-nm@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.