diff options
| -rw-r--r-- | arch/arm/kernel/hw_breakpoint.c | 25 | 
1 files changed, 5 insertions, 20 deletions
| diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c index 76a650a1a1d7..c87ea68d64ae 100644 --- a/arch/arm/kernel/hw_breakpoint.c +++ b/arch/arm/kernel/hw_breakpoint.c @@ -235,13 +235,6 @@ static int enable_monitor_mode(void)  	ARM_DBG_READ(c1, 0, dscr); -	/* Ensure that halting mode is disabled. */ -	if (WARN_ONCE(dscr & ARM_DSCR_HDBGEN, -		"halting debug mode enabled. Unable to access hardware resources.\n")) { -		ret = -EPERM; -		goto out; -	} -  	/* If monitor mode is already enabled, just return. */  	if (dscr & ARM_DSCR_MDBGEN)  		goto out; @@ -255,6 +248,7 @@ static int enable_monitor_mode(void)  	case ARM_DEBUG_ARCH_V7_ECP14:  	case ARM_DEBUG_ARCH_V7_1:  		ARM_DBG_WRITE(c2, 2, (dscr | ARM_DSCR_MDBGEN)); +		isb();  		break;  	default:  		ret = -ENODEV; @@ -1000,8 +994,6 @@ static struct notifier_block __cpuinitdata dbg_reset_nb = {  static int __init arch_hw_breakpoint_init(void)  { -	u32 dscr; -  	debug_arch = get_debug_arch();  	if (!debug_arch_supported()) { @@ -1036,17 +1028,10 @@ static int __init arch_hw_breakpoint_init(void)  		core_num_brps, core_has_mismatch_brps() ? "(+1 reserved) " :  		"", core_num_wrps); -	ARM_DBG_READ(c1, 0, dscr); -	if (dscr & ARM_DSCR_HDBGEN) { -		max_watchpoint_len = 4; -		pr_warning("halting debug mode enabled. Assuming maximum watchpoint size of %u bytes.\n", -			   max_watchpoint_len); -	} else { -		/* Work out the maximum supported watchpoint length. */ -		max_watchpoint_len = get_max_wp_len(); -		pr_info("maximum watchpoint size is %u bytes.\n", -				max_watchpoint_len); -	} +	/* Work out the maximum supported watchpoint length. */ +	max_watchpoint_len = get_max_wp_len(); +	pr_info("maximum watchpoint size is %u bytes.\n", +			max_watchpoint_len);  	/* Register debug fault handler. */  	hook_fault_code(FAULT_CODE_DEBUG, hw_breakpoint_pending, SIGTRAP, | 
