This is the mail archive of the mailing list for the systemtap project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Kprobes Support for ARM arch

On Thu, Jan 11, 2007 at 07:58:07PM +0500, wrote:

Hi Madhvesh,

> Hi All,
> Recently we completed the kprobes support for ARM architecture
> targetted at 2.6.16 kernel. I have uploaded these patches in the
> below CELF wiki page along with few test programs.
> This implementation is tested using 2.6.16-24 kernel for
> OMAP5912 OSK reference platform.

I am not familiar with the ARM architecture details... the following
comments are from a quick glance at the patch.

> The patch is available in the below CELF wiki page
> The patch can be downloaded directly from here
> This implementation supports only kprobes and doesnot
> support any other variants like jprobes, kretprobes etc.
> Also it doesnot support branch/jump instructions probing.

How are you ensuring that a kprobe register request on a branch/jump
instruction fails? I don't see any profiling done to verify what the
underlying instruction is.

See arch_prepare_kprobe() from the powerpc port as to how we fail kprobe
registration on certain instructions.

> I noticed some discussions regarding ARM kprobes in the
> archive. We are open to suggestions and how this implementation can
> be improved.

Given that quite a bit of the kprobes code for any platform is
architecture specific, its important that your code gets reviewed by the
ARM kernel gurus/maintainers, if you intend that the patch be included
in the mainline Linux kernels.

Also, you may want to port the patch to the latest kernel. There have
been some interface changes:
- kprobe modules are more portable with the addition of in-kernel symbol
- The page fault case gets its own notifier so there isn't a penalty paid
  when kprobes aren't in use.

Good work!


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]