On Thu, Jun 10, 2010 at 10:40:24PM +1000, Paul Mackerras wrote:
On Wed, Jun 09, 2010 at 03:55:59PM +0530, K.Prasad wrote:
quoted
+ if (!((bp->attr.bp_addr <= dar) &&
+ (dar <= (bp->attr.bp_addr + bp->attr.bp_len)))) {
+ /*
+ * This exception is triggered not because of a memory access
+ * on the monitored variable but in the double-word address
+ * range in which it is contained. We will consume this
+ * exception, considering it as 'noise'.
+ */
+ info->extraneous_interrupt = true;
+ }
Ummm, don't you need to add "else info->extraneous_interrupt = false;"
here? I don't see anywhere that you ever clear it otherwise.
Also, I think you need to do the "if (!info->extraneous_interrupt)"
check around the call to perf_bp_event() later on in
hw_breakpoint_handler() as well as around the call in
single_step_dabr_instruction().
Paul.
True, I've added the check before perf_bp_event() (wherever it was
missing before) in the patchset ver XXIV.
Thanks,
K.Prasad