[PATCH v2 3/3] ARM: BCM5301X: remove workaround imprecise abort fault handler

Lucas Stach l.stach at pengutronix.de
Thu Nov 12 05:37:19 PST 2015


Hauke,

can you please take this patch through your tree for 4.4? The first
patch in this series went in through Russells tree, so the below code
now has the possibility to hide a real abort later during boot.

Regards,
Lucas

Am Donnerstag, den 15.10.2015, 12:32 +0200 schrieb Lucas Stach:
> 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 at pengutronix.de>
> Acked-by: Hauke Mehrtens <hauke at hauke-m.de>
> ---
>  arch/arm/mach-bcm/bcm_5301x.c | 35 -----------------------------------
>  1 file changed, 35 deletions(-)
> 
> diff --git a/arch/arm/mach-bcm/bcm_5301x.c b/arch/arm/mach-bcm/bcm_5301x.c
> index 5478fe6bcce6..c8830a2b0d60 100644
> --- 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

-- 
Pengutronix e.K.             | Lucas Stach                 |
Industrial Linux Solutions   | http://www.pengutronix.de/  |




More information about the linux-arm-kernel mailing list