powerpc/watchpoint: Don't call dar_within_range() for Book3S
DAR is set to the first byte of overlap between actual access and watched range at DSI on Book3S processor. But actual access range might or might not be within user asked range. So for Book3S, it must not call dar_within_range(). This revert portion of commit39413ae009
("powerpc/hw_breakpoints: Rewrite 8xx breakpoints to allow any address range size."). Before patch: # ./tools/testing/selftests/powerpc/ptrace/perf-hwbreak ... TESTED: No overlap FAILED: Partial overlap: 0 != 2 TESTED: Partial overlap TESTED: No overlap FAILED: Full overlap: 0 != 2 failure: perf_hwbreak After patch: TESTED: No overlap TESTED: Partial overlap TESTED: Partial overlap TESTED: No overlap TESTED: Full overlap success: perf_hwbreak Fixes:39413ae009
("powerpc/hw_breakpoints: Rewrite 8xx breakpoints to allow any address range size.") Reported-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200222082049.330435-1-ravi.bangoria@linux.ibm.com
This commit is contained in:
parent
9eb425b2e0
commit
e08658a657
@ -331,11 +331,13 @@ int hw_breakpoint_handler(struct die_args *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
info->type &= ~HW_BRK_TYPE_EXTRANEOUS_IRQ;
|
info->type &= ~HW_BRK_TYPE_EXTRANEOUS_IRQ;
|
||||||
|
if (IS_ENABLED(CONFIG_PPC_8xx)) {
|
||||||
if (!dar_within_range(regs->dar, info))
|
if (!dar_within_range(regs->dar, info))
|
||||||
info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ;
|
info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ;
|
||||||
|
} else {
|
||||||
if (!IS_ENABLED(CONFIG_PPC_8xx) && !stepping_handler(regs, bp, info))
|
if (!stepping_handler(regs, bp, info))
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As a policy, the callback is invoked in a 'trigger-after-execute'
|
* As a policy, the callback is invoked in a 'trigger-after-execute'
|
||||||
|
Loading…
Reference in New Issue
Block a user