Re: [Patch 00/11] Hardware Breakpoint interfaces

K.Prasad
2009-04-24T15:57:33Z

On Fri, Apr 24, 2009 at 10:16:07AM -0400, Alan Stern wrote:
> On Fri, 24 Apr 2009, K.Prasad wrote:
>
> > The arch_update_kernel_hw_breakpoints() was designed to work like this -
> > it updates all registers beginning 'hbp_kernel_pos' to (HB_NUM - 1) with
> > the values stored in hbp_kernel[] array.
> >
> > When inserting a new breakpoint, hbp_kernel_pos is decremented *before*
> > invoking arch_update_kernel_hw_breakpoints() so that the new value is
> > also written onto the physical debug register.
> >
> > On removal, 'hbp_kernel_pos' is incremented *after*
> > arch_update_kernel_hw_breakpoints() so that the physical debug registers
> > i.e. both DR7 and DR<pos> are updated with the changes post removal and
> > compaction. I'm ready to make changes but don't see where the code
> > actually goes wrong. Can you explain that?
>
> I'm sorry; I misread the code in arch_update_kernel_hw_breakpoints().
> It isn't actually wrong, and you are correct to increment
> hbp_kernel_pos where you do. Your code is different from my original
> version, which would update all the debug registers at once instead of
> doing the kernel and userspace breakpoints separately -- that's what
> confused me.
>
> There is one change you could make to improve the routine, however. In
> arch_update_kernel_hw_breakpoints(), the line
>
> kdr7 &= ~kdr7_masks[hbp_kernel_pos];
>
> really should be
>
> kdr7 = 0;
>
> since kdr7 never contains anything other than kernel breakpoint
> settings. (You could update the comment in the preceding line as
> well.)
>
> Alan Stern

Sure, I'd make that change (in the subsequent iteration) - it's much simpler.

Do you think that the patchset is now in a form that can be submitted
for upstream (-tip tree) acceptance?

Thanks,
K.Prasad