summaryrefslogtreecommitdiff
path: root/packages/linux/linux-omap/no-cortex-deadlock.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-omap/no-cortex-deadlock.patch')
-rw-r--r--packages/linux/linux-omap/no-cortex-deadlock.patch68
1 files changed, 35 insertions, 33 deletions
diff --git a/packages/linux/linux-omap/no-cortex-deadlock.patch b/packages/linux/linux-omap/no-cortex-deadlock.patch
index 5bb6d22484..78547c8969 100644
--- a/packages/linux/linux-omap/no-cortex-deadlock.patch
+++ b/packages/linux/linux-omap/no-cortex-deadlock.patch
@@ -1,9 +1,9 @@
From: Mans Rullgard <mans@mansr.com>
-Date: Wed, 30 Jul 2008 08:25:51 +0000 (+0100)
-Subject: ARM: NEON L1 cache bug workaround (erratum 451034)
-X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=26023493baf13e0a67fd6cf08d87be5ff6f7c56d
+Date: Sat, 16 Aug 2008 23:03:06 +0000 (+0100)
+Subject: ARM: Workaround for erratum 451034
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=b84fa87873ffb68ad23930cf6cddeea8bec43ede
-ARM: NEON L1 cache bug workaround (erratum 451034)
+ARM: Workaround for erratum 451034
On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
store in the store buffer, can cause a processor deadlock under
@@ -15,61 +15,63 @@ counter-measures. Userspace code can still trigger the deadlock, so
a different workaround is required to safely run untrusted code.
See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
---
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
-index 8c75840..1172e14 100644
+index aa475d9..41d536e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -1071,6 +1071,22 @@ config NEON
+@@ -1117,6 +1117,22 @@ config NEON
Say Y to include support code for NEON, the ARMv7 Advanced SIMD
Extension.
-+config NEON_CACHE_BUG
-+ bool "NEON L1 cache bug workaround (erratum 451034)"
++config ARM_ERRATUM_451034
++ bool "Enable workaround for ARM erratum 451034"
+ depends on VFPv3
+ help
-+ On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
-+ store in the store buffer, can cause a processor deadlock under
-+ certain conditions.
++ On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
++ store in the store buffer, can cause a processor deadlock under
++ certain conditions.
+
-+ See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
++ See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
+
-+ Say Y to include a workaround.
++ Say Y to include a partial workaround.
+
-+ WARNING: Even with this option enabled, userspace code can trigger
-+ the deadlock. To safely run untrusted code, a different fix is
-+ required.
++ WARNING: Even with this option enabled, userspace code can trigger
++ the deadlock. To safely run untrusted code, a different fix is
++ required.
+
endmenu
menu "Userspace binary formats"
-diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
-index 597ed00..e50094e 100644
---- a/arch/arm/kernel/entry-common.S
-+++ b/arch/arm/kernel/entry-common.S
-@@ -68,6 +68,10 @@ no_work_pending:
- /* perform architecture specific actions before user return */
- arch_ret_to_user r1, lr
-
-+#ifdef CONFIG_NEON_CACHE_BUG
-+ dmb
-+#endif
-+
- @ slow_restore_user_regs
- ldr r1, [sp, #S_PSR] @ get calling cpsr
- ldr lr, [sp, #S_PC]! @ get pc
diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h
-index cccb389..c9d2976 100644
+index 422f3cc..934798b 100644
--- a/arch/arm/include/asm/vfpmacros.h
+++ b/arch/arm/include/asm/vfpmacros.h
@@ -32,6 +32,9 @@
@ write all the working registers out of the VFP
.macro VFPFSTMIA, base, tmp
-+#ifdef CONFIG_NEON_CACHE_BUG
++#ifdef CONFIG_ARM_ERRATUM_451034
+ dmb
+#endif
#if __LINUX_ARM_ARCH__ < 6
STC p11, cr0, [\base],#33*4 @ FSTMIAX \base!, {d0-d15}
#else
+diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
+index 060d7e2..9799a35 100644
+--- a/arch/arm/kernel/entry-common.S
++++ b/arch/arm/kernel/entry-common.S
+@@ -69,6 +69,10 @@ no_work_pending:
+ /* perform architecture specific actions before user return */
+ arch_ret_to_user r1, lr
+
++#ifdef CONFIG_ARM_ERRATUM_451034
++ dmb
++#endif
++
+ @ slow_restore_user_regs
+ ldr r1, [sp, #S_PSR] @ get calling cpsr
+ ldr lr, [sp, #S_PC]! @ get pc