Prasad, On Mon, 2009-03-16 at 18:19 +0530, Subrata Modak wrote: > Hi Prasad, > > On Thu, Mar 5, 2009 at 10:07 AM, <[email protected]> wrote: > Hi Ingo, > Please find the revised set of patches that implement > Hardware > Breakpoint (or watchpoint) registers and an arch-specific > implementation > for x86/x86_64. > > Changelog > --------- > The previous version of these patches were submitted through > http://article.gmane.org/gmane.linux.kernel/794870. The > patches now > contain a new ftrace plugin for kernel symbol tracing using > hardware > breakpoint registers. The patches are now re-based to -tip > tree commit > e40aa382597b30c4d702951348500e812b4cb3d0. > > A small usage note on the plugin along with the description of > the > breakpoint interfaces is included below. > > Kindly accept these patches to become a part of -tip tree. > > Description > ------------- > The Hardware Breakpoint registers can be used for tracing > changes to a > variable or data location (even I/O ports in x86/x86_64) and > will be > extremely helpful in debugging problems such as memory > corruption. While > these registers have been used by user-space debuggers for > long (through > 'ptrace' syscalls), Kgdb exploited them for kernel-space > addresses. > > You have been recently posting these patches to LKML. Being one of the > LTP users, you would be in a position to tell whether we can test this > from LTP ś user space tests ? If yes, have you worked on some test > development for this ? ;-)
Anything for LTP ? Regards-- Subrata > > Regards-- > Subrata > > > > > The proposed framework, introduces interfaces to use them > directly on > both user- and kernel-space addresses apart from arbitrating > requests > from various such users for the limited number of registers. > > The interfaces are: > > int register_kernel_hw_breakpoint(struct hw_breakpoint *); > void unregister_kernel_hw_breakpoint(struct hw_breakpoint > *bp); > > int register_user_hw_breakpoint(struct task_struct *tsk, > struct hw_breakpoint *bp); > void unregister_user_hw_breakpoint(struct task_struct *tsk, > struct hw_breakpoint *bp); > > The 'struct hw_breakpoint' will be the anchor data-structure > containing > all the necessary information such as name or address, type, > length, > priority and pointers to handler functions (some of which are > arch-specific). More information about the role of each field, > the > handler > functions and their return values can be found in the > descriptive > comments > preceding these functions and in > "include/asm-generic/hw_breakpoint.h". > > While (un)register_user_hw_breakpoint() isn't exported yet, > its > worker-routine __register_user-hw_breakpoint() is used by > ptrace syscall > for all breakpoint register requirements. For the > kernel-space, a simple > use case to trace 'write' operations on a kernel variable can > be found > in samples/hw_breakpoint/data_breakpoint.c. > > In the current patchset, support is provided only for read and > read-write breakpoints on data locations, which can be later > expand to > include instruction and I/O breakpoints for x86/x86_64. > > There is pending integration with 'KGDB' without which mutual > exclusion > between them (KGDB and HW breakpoint use through above > interfaces) needs > to be observed. > > Ftrace plugin > ------------- > Usage > ------ > mount -t debugfs debugfs /debug > cd /debug/tracing/ > echo 0 > tracing_enabled > cat available_tracers > echo ksym_tracer > current_tracer > echo "pid_max:rw-" > ksym_trace_filter > echo "jiffies:-w-" > ksym_trace_filter > > echo 1 > tracing_enabled > > cat trace > > > Sample Output (snipped) > ------------- > > [r...@mymachine tracing]# cat trace > # tracer: ksym_tracer > # > # TASK-PID CPU# Symbol Type > Function > # | | | | | > atieventsd 3053 1 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5394 1 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5394 0 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5394 0 pid_max RW alloc_pid > +0x6c/0x2fd > bash 4898 1 pid_max RW alloc_pid > +0x6c/0x2fd > atieventsd 3053 1 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5401 1 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5413 0 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5415 0 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5415 0 pid_max RW alloc_pid > +0x6c/0x2fd > authatieventsd. 5413 0 pid_max RW alloc_pid > +0x6c/0x2fd > hald-runner 2766 0 pid_max RW alloc_pid > +0x6c/0x2fd > hal-system-kill 5425 1 pid_max RW alloc_pid > +0x6c/0x2fd > hal-system-kill 5425 1 pid_max RW alloc_pid > +0x6c/0x2fd > swapper 0 0 jiffies W do_timer > +0x16/0xb0 > swapper 0 0 jiffies W do_timer > +0x16/0xb0 > gnome-terminal 4521 0 jiffies W do_timer > +0x16/0xb0 > Xorg 3235 0 jiffies W do_timer > +0x16/0xb0 > Xorg 3235 0 jiffies W do_timer > +0x16/0xb0 > [r...@mymachine tracing]# > > Thanks, > K.Prasad > > -- > To unsubscribe from this list: send the line "unsubscribe > linux-kernel" in > the body of a message to [email protected] > More majordomo info at > http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > > > -- > Regards & Thanks-- > Subrata > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ Ltp-list mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ltp-list ------------------------------------------------------------------------------ Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are powering Web 2.0 with engaging, cross-platform capabilities. Quickly and easily build your RIAs with Flex Builder, the Eclipse(TM)based development software that enables intelligent coding and step-through debugging. Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
