forked from mirrors/linux
		
	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>
This commit is contained in:
		
							parent
							
								
									8005c49d9a
								
							
						
					
					
						commit
						937b12306e
					
				
					 1 changed files with 0 additions and 35 deletions
				
			
		| 
						 | 
					@ -9,40 +9,6 @@
 | 
				
			||||||
#include <asm/hardware/cache-l2x0.h>
 | 
					#include <asm/hardware/cache-l2x0.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <asm/mach/arch.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 = {
 | 
					static const char *const bcm5301x_dt_compat[] __initconst = {
 | 
				
			||||||
	"brcm,bcm4708",
 | 
						"brcm,bcm4708",
 | 
				
			||||||
| 
						 | 
					@ -52,6 +18,5 @@ static const char *const bcm5301x_dt_compat[] __initconst = {
 | 
				
			||||||
DT_MACHINE_START(BCM5301X, "BCM5301X")
 | 
					DT_MACHINE_START(BCM5301X, "BCM5301X")
 | 
				
			||||||
	.l2c_aux_val	= 0,
 | 
						.l2c_aux_val	= 0,
 | 
				
			||||||
	.l2c_aux_mask	= ~0,
 | 
						.l2c_aux_mask	= ~0,
 | 
				
			||||||
	.init_early	= bcm5301x_init_early,
 | 
					 | 
				
			||||||
	.dt_compat	= bcm5301x_dt_compat,
 | 
						.dt_compat	= bcm5301x_dt_compat,
 | 
				
			||||||
MACHINE_END
 | 
					MACHINE_END
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue