This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: Systemtap testsuite for arm architecture - results
- From: William Cohen <wcohen at redhat dot com>
- To: "Turgis, Frederic" <f-turgis at ti dot com>
- Cc: "systemtap at sourceware dot org" <systemtap at sourceware dot org>
- Date: Thu, 21 Jul 2011 17:23:38 -0400
- Subject: Re: Systemtap testsuite for arm architecture - results
- References: <13872098A06B02418CF379A158C0F146016100D125@dnce02.ent.ti.com>
On 04/01/2011 03:21 AM, Turgis, Frederic wrote:
> Hi,
>
> Latest ARM "testsuite" report I found was on March 2008. So here is 1 "nono privileged" made on PandaBoard (ARM-A9). Unfortunately, Ubuntu natty includes only systemtap v1.3 that I recently patched with upstream fixes to 2.6.38 (all present or retroffited in systemtap project)
>
> Host: Linux localhost.localdomain 2.6.38-1000-linaro-omap #1-Ubuntu SMP Thu Feb
> 24 04:55:52 UTC 2011 armv7l armv7l armv7l GNU/Linux
> Snapshot: version 1.3/0.148 non-git sources
> GCC: 4.5.2 [gcc (Ubuntu/Linaro 4.5.2-2ubuntu3) 4.5.2]
> Distro: Linaro N (development branch)
>
> Numbers below are simply an indication, I solved issues in parallel and I didn't keep the first report with more failures:
> # of expected passes 488
> # of unexpected failures 22
> # of unexpected successes 10
> # of expected failures 230
> # of known failures 3
> # of untested testcases 402
Hi Frederic,
You might try to do a git checkout of systemtap and try running the tests again. There have been several patches checked to address ARM issues.
>
>
> FAILURES: unless explicitly stated, they should still be present in latest version (checked source code) and I could make them PASS (eventually by hacking):
>
> * Relevant issues:
> - systemtap.examples/general/badname, semok/thirtynine.stp "semantic error: not accessible at this address (0xc0171f34): identifier '$child'
> at :19:28 source: if (filter(kernel_string($child->d_name->name)))"
>
> "stap -L" confirmed it, it seems I don't have access to parameters of inline functions. I found some bug mentioning issue with GCC < 4.5 but I have GCC4.5.2 I need to dig more into defect database.
This is likely a gcc issue, so not much can do about this.
>
> - buildok/conversions-guru-embedded.stp:
> "invalid lvalue in asm output 1" -> I root caused it to set_kernel_xxx calling __put_user_asm_dword inline assembly. Code looks correct and identical to kernel arch/arm/include/asm/uaccess.h. I will try to find someone in Linaro to inspect more in deep this assembly code.
The __put_user_asm_dword inline assembly is bogus. The arm is 32-bit and doesn't have complete support for 64-bit put/get operations. Revised the code to do only 32-bit operations like the i386. The bogus asm is probably not noticed because the kernel never did 64-bit operation. SystemTap does try 64-bit operation and gets the error above. there is a commit to fix this in the git repository, 27003924e9be437d397d71d10e9d21834bfba955.
>
> - sunrpc kernel module: 3 causes
> * Ubuntu still puts debuginfo in /usr/lib/debug. Thanks to http://sourceware.org/systemtap/wiki/SystemtapOnUbuntu for the script
> * build-id check fails for kernel module probes -> solved by PR10812, commit 71fa1fe39faa153cf6ede620c4855e508059aa39
> * "rpc_new_client" function can be probed as an inline function or not. The "not inline" probe is not ported to kernel > 2.6.18 (so I imagine function is inlined on x86 and not on ARM)
>
> tapset/rpc.stp:
> probe _sunrpc.clnt.create_client.rpc_new_client =
> kernel.function("rpc_new_client").call !,
> module("sunrpc").function("rpc_new_client").call
> {
> # kernel <= 2.6.18 => no porting to > 2.6.18 unlike inline version
>
>
> * "Not ported for ARM" issues
> - semok/doubleglob.stp, buildok/fortyfive.stp "semantic error: unresolved arity-1 function: identifier 'int_arg' at :834:11^"
> Non dwarf probing is not ported for ARM (already raised on mailing list) -> I will have to follow-up with Linaro
There has been addition of tapset/arm/registers.stp to provide some access to non-dwarf probing, commit 5a24160a15810f1ff5338195570242c9580ca523. However this only handles the first 4 args. The args 5 and 6 on the stack are not yet handled, so a number of the nd_syscalls.exp will still fail.
>
>
> * "test configuration" issues
> - systemtap.base/dtrace.exp:
> if {[installtest_p]} {
> set dtrace $env(SYSTEMTAP_PATH)/dtrace } else {
> set dtrace ../dtrace
> }
> This selects ../dtrace whereas dtrace is in /usr/bin/dtrace thus obvious failure. Shall I set it or the tool shall set it ?
Should test with systemtap installed:
make install # as root
make installcheck # be member of stapdev group or run as root
>
> - systemtap.base/optionalprobe.exp
> 60s timeout is too small, test executes in 97s ;-)
Maybe use one of those newer faster TI OMAP processors. :) It only took 12 seconds on my single core cortex A8 running at 800MHz. I use the internal 15GB SSD pata drive the machine. I wonder if this might be slow because of the disk io particular if it is a device through the USB:
http://fedoraproject.org/wiki/Architectures/ARM/Performance
>
> - systemtap.base/preprocessor.exp
> %( arch %) = arm while $arch=uname -i=armv7l. I guess this requires same normalization than ppc64, s390x and i686 at beginning of test
The base architecture name is now used, commit aa238e24b8b00d9698ced500dc78fd5a253f1f0d.
>
> - buildok/eighteen.stp
> __audit_getname() seems to depend upon CONFIG_AUDITSYSCALL which is not available for ARM
>
> - buildok/pr10678.stp
> ne2k_pci module is not present on such boards so it obviously fails (but next generations will have SATA and PCIe, we are closing the gap ;-) )
>
> - transok/tval-opt.stp
> Header "#! /bin/sh" chooses sh over bash but sh does not support "set -o pipefail".
> $SHELL=/bin/bash on target. Using "#! /bin/bash" worked.
There are some other tests that use /bin/bash (testsuite/systemtap.base/bz5274.sh), so it seems like it would be okay switch it to /bin/bash. checked in commit cf0c4c06a893debc465f418fcd6869872d2e4194.
-Will