Hi All,
Pratyush has been implementing uprobes support for aarch64 and has posted a set of patches (http://comments.gmane.org/gmane.linux.ports.arm.kernel/382237) for review. The really new Linux kernels requires a patch to the systemtap runtime because the f_dentry macro has been removed. With the patched systemtap I was able to run the systemtap testsuite and get some test results exercising the uprobes support:
https://web.elastic.org/~dejazilla/viewsummary.php?summary=%3D%27%3C54A9E21C...
There looked to be a localized fixes for plt support to eliminate the unsupported systemtap.base/list.exp plt-* tests.
A number of the tests appear to fail because of userspace arguments cannot be found for sdt probes.
The uprobe patches still need some refinement. On a number of systemtap "make installcheck" runs the kernel would get stuck spewing out:
Unexpected kernel single-step exception at EL1
However, things are looking better for user-space probing on arm64.
-Will
On Mon, Jan 5, 2015 at 4:06 PM, William Cohen wcohen@redhat.com wrote:
Hi All,
Pratyush has been implementing uprobes support for aarch64 and has posted a set of patches (http://comments.gmane.org/gmane.linux.ports.arm.kernel/382237) for review. The really new Linux kernels requires a patch to the systemtap runtime because the f_dentry macro has been removed. With the patched systemtap I was able to run the systemtap testsuite and get some test results exercising the uprobes support:
https://web.elastic.org/~dejazilla/viewsummary.php?summary=%3D%27%3C54A9E21C...
There looked to be a localized fixes for plt support to eliminate the unsupported systemtap.base/list.exp plt-* tests.
A number of the tests appear to fail because of userspace arguments cannot be found for sdt probes.
The uprobe patches still need some refinement. On a number of systemtap "make installcheck" runs the kernel would get stuck spewing out:
Unexpected kernel single-step exception at EL1
However, things are looking better for user-space probing on arm64.
good news, thanks for the update.
Peter
Hi Will,
On Monday 05 January 2015 09:36 PM, William Cohen wrote:
Hi All,
Pratyush has been implementing uprobes support for aarch64 and has posted a set of patches (http://comments.gmane.org/gmane.linux.ports.arm.kernel/382237) for review. The really new Linux kernels requires a patch to the systemtap runtime because the f_dentry macro has been removed. With the patched systemtap I was able to run the systemtap testsuite and get some test results exercising the uprobes support:
https://web.elastic.org/~dejazilla/viewsummary.php?summary=%3D%27%3C54A9E21C...
There looked to be a localized fixes for plt support to eliminate the unsupported systemtap.base/list.exp plt-* tests.
A number of the tests appear to fail because of userspace arguments cannot be found for sdt probes.
The uprobe patches still need some refinement. On a number of systemtap "make installcheck" runs the kernel would get stuck spewing out:
Unexpected kernel single-step exception at EL1
There are at least two functions of arm64/uprobe implementation uprobe_breakpoint_handler and uprobe_single_step_handler, where a kprobe insertion might be causing above issue. Currently I have qualified these functions with __kprobe, so that one can not insert a kprobe there. With this you should not be able to see the above message.
However, I am still investigating if a kprobe insertion be allowed to these functions or any other function which is called directly from debug exception handler (do_debug_exception)
Update code is here:
https://github.com/pratyushanand/linux.git : ml_arm64_uprobe_devel_v2
~Pratyush
However, things are looking better for user-space probing on arm64.
-Will
On 01/07/2015 07:07 AM, Pratyush Anand wrote:
Hi Will,
On Monday 05 January 2015 09:36 PM, William Cohen wrote:
Hi All,
Pratyush has been implementing uprobes support for aarch64 and has posted a set of patches (http://comments.gmane.org/gmane.linux.ports.arm.kernel/382237) for review. The really new Linux kernels requires a patch to the systemtap runtime because the f_dentry macro has been removed. With the patched systemtap I was able to run the systemtap testsuite and get some test results exercising the uprobes support:
https://web.elastic.org/~dejazilla/viewsummary.php?summary=%3D%27%3C54A9E21C...
There looked to be a localized fixes for plt support to eliminate the unsupported systemtap.base/list.exp plt-* tests.
A number of the tests appear to fail because of userspace arguments cannot be found for sdt probes.
The uprobe patches still need some refinement. On a number of systemtap "make installcheck" runs the kernel would get stuck spewing out:
Unexpected kernel single-step exception at EL1
There are at least two functions of arm64/uprobe implementation uprobe_breakpoint_handler and uprobe_single_step_handler, where a kprobe insertion might be causing above issue. Currently I have qualified these functions with __kprobe, so that one can not insert a kprobe there. With this you should not be able to see the above message.
However, I am still investigating if a kprobe insertion be allowed to these functions or any other function which is called directly from debug exception handler (do_debug_exception)
Hi Pratyush,
Are there any other places that need to be protected from kprobe probing in the arm64 code?
Update code is here:
https://github.com/pratyushanand/linux.git : ml_arm64_uprobe_devel_v2
~Pratyush
I will give the new kernel a try.
-Will
However, things are looking better for user-space probing on arm64.
-Will
On Wednesday 07 January 2015 06:40 PM, William Cohen wrote:
On 01/07/2015 07:07 AM, Pratyush Anand wrote:
Hi Will,
On Monday 05 January 2015 09:36 PM, William Cohen wrote:
Hi All,
Pratyush has been implementing uprobes support for aarch64 and has posted a set of patches (http://comments.gmane.org/gmane.linux.ports.arm.kernel/382237) for review. The really new Linux kernels requires a patch to the systemtap runtime because the f_dentry macro has been removed. With the patched systemtap I was able to run the systemtap testsuite and get some test results exercising the uprobes support:
https://web.elastic.org/~dejazilla/viewsummary.php?summary=%3D%27%3C54A9E21C...
There looked to be a localized fixes for plt support to eliminate the unsupported systemtap.base/list.exp plt-* tests.
A number of the tests appear to fail because of userspace arguments cannot be found for sdt probes.
The uprobe patches still need some refinement. On a number of systemtap "make installcheck" runs the kernel would get stuck spewing out:
Unexpected kernel single-step exception at EL1There are at least two functions of arm64/uprobe implementation uprobe_breakpoint_handler and uprobe_single_step_handler, where a kprobe insertion might be causing above issue. Currently I have qualified these functions with __kprobe, so that one can not insert a kprobe there. With this you should not be able to see the above message.
However, I am still investigating if a kprobe insertion be allowed to these functions or any other function which is called directly from debug exception handler (do_debug_exception)
Hi Pratyush,
Are there any other places that need to be protected from kprobe probing in the arm64 code?
yes, I tried inserting kprobe in arch/arm64/kernel/debug-monitors.c:brk_handler and it failed. So, I think as of now, we can not probe any function which comes in the path of do_debug_exception.
Looking into kprobe code, it seems that it allows REENTER, so it should have worked. Do not have much idea at present. Still, studying these part of code.
~Pratyush
Update code is here:
https://github.com/pratyushanand/linux.git : ml_arm64_uprobe_devel_v2
~Pratyush
I will give the new kernel a try.
-Will
However, things are looking better for user-space probing on arm64.
-Will