aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/patches-4.4/020-ARM-BCM5301X-remove-workaround-imprecise-abort-fault.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm53xx/patches-4.4/020-ARM-BCM5301X-remove-workaround-imprecise-abort-fault.patch')
-rw-r--r--target/linux/bcm53xx/patches-4.4/020-ARM-BCM5301X-remove-workaround-imprecise-abort-fault.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/target/linux/bcm53xx/patches-4.4/020-ARM-BCM5301X-remove-workaround-imprecise-abort-fault.patch b/target/linux/bcm53xx/patches-4.4/020-ARM-BCM5301X-remove-workaround-imprecise-abort-fault.patch
new file mode 100644
index 0000000000..bc115b11f8
--- /dev/null
+++ b/target/linux/bcm53xx/patches-4.4/020-ARM-BCM5301X-remove-workaround-imprecise-abort-fault.patch
@@ -0,0 +1,68 @@
+From 937b12306ea79044c86f2e69b3061c7279245825 Mon Sep 17 00:00:00 2001
+From: Lucas Stach <l.stach@pengutronix.de>
+Date: Thu, 15 Oct 2015 12:32:22 +0200
+Subject: [PATCH] ARM: BCM5301X: remove workaround imprecise abort fault
+ handler
+
+This is not needed anymore. Handling a potentially pending imprecise external
+abort left behind by the bootloader is now done in a slightly safer way inside
+the common ARM startup code.
+
+Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
+Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
+Tested-by: Tyler Baker <tyler.baker@linaro.org>
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ arch/arm/mach-bcm/bcm_5301x.c | 35 -----------------------------------
+ 1 file changed, 35 deletions(-)
+
+--- a/arch/arm/mach-bcm/bcm_5301x.c
++++ b/arch/arm/mach-bcm/bcm_5301x.c
+@@ -9,40 +9,6 @@
+ #include <asm/hardware/cache-l2x0.h>
+
+ #include <asm/mach/arch.h>
+-#include <asm/siginfo.h>
+-#include <asm/signal.h>
+-
+-
+-static bool first_fault = true;
+-
+-static int bcm5301x_abort_handler(unsigned long addr, unsigned int fsr,
+- struct pt_regs *regs)
+-{
+- if ((fsr == 0x1406 || fsr == 0x1c06) && first_fault) {
+- first_fault = false;
+-
+- /*
+- * These faults with codes 0x1406 (BCM4709) or 0x1c06 happens
+- * for no good reason, possibly left over from the CFE boot
+- * loader.
+- */
+- pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n",
+- addr, fsr);
+-
+- /* Returning non-zero causes fault display and panic */
+- return 0;
+- }
+-
+- /* Others should cause a fault */
+- return 1;
+-}
+-
+-static void __init bcm5301x_init_early(void)
+-{
+- /* Install our hook */
+- hook_fault_code(16 + 6, bcm5301x_abort_handler, SIGBUS, BUS_OBJERR,
+- "imprecise external abort");
+-}
+
+ static const char *const bcm5301x_dt_compat[] __initconst = {
+ "brcm,bcm4708",
+@@ -52,6 +18,5 @@ static const char *const bcm5301x_dt_compat[] __initconst = {
+ DT_MACHINE_START(BCM5301X, "BCM5301X")
+ .l2c_aux_val = 0,
+ .l2c_aux_mask = ~0,
+- .init_early = bcm5301x_init_early,
+ .dt_compat = bcm5301x_dt_compat,
+ MACHINE_END