diff options
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.patch | 68 |
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 |