DTrace/MIPS port

Robert Watson rwatson at FreeBSD.org
Fri Mar 2 18:51:34 UTC 2012

On Thu, 1 Mar 2012, Oleksandr Tymoshenko wrote:

> Last few weeks I've been working on DTrace port for MIPS architecture. I 
> believe that project reached the stage when it's ready for public 
> review/testing before going into the tree.
> Patch and some information could be found here: 
> http://people.freebsd.org/~gonzo/mips/dtrace/
> I'd appreciate review/testing from interested parties and if there are no 
> major roadblocks the plan is to commit this patch sometime next week.
> DTrace/MIPS passes substantial part of DTrace suite on my Octeon-based 
> board.

This is great news -- I probably won't be in a position to test or contribute 
usefully for a couple more months, but will endeavour to do so once our port 
to CHERI MIPS is a bit further along!


> ==== TEST RESULTS ====
>     mode: /usr/sbin/dtrace
>   passed: 853
>   failed: 74
>    total: 927
> There are some caveats/limitations though:
> - fbt, pid, lockstat, profile providers are not implemented
> - MIPS passes function arguments in registers and unless they're
>    saved on stack the value of some might be unavailable in
>    backtrace. So values of argN variables might be bogus sometimes.
> - dtrace uses kldstat(2) to get path to kernel binary and for
>    "embedded" systems (e.g. without loader(8)) it's just "kernel"
>    So kernel binary should be in current directory so dtrace could
>    get CTF data from it. We need either command-line switch or env
>    variable to let dtrace know where to look for binary. I haven't
>    yet decided which way to go.
> - Not really dtrace issue, but somewhat related. FreeBSD/MIPS default
>    kernel stacks size seems to be insufficient to load kernel
>    modules with dependency chain longer then three modules
>    (dtrace_test -> dtrace_all -> dtrace -> cyclic -> opensolaris)
>    Sometimes I get kernel stack exhaustion as a combination of
>    FS-related calls that goes down to NFS functions + WITNESS code.
>    No proper solution for it yet. Workaround - load module one by
>    one.
> - Tested only on mips64be platform. mips32be, mips32le, mips64le
>    were not tested.
> Patches:
> dtrace-all.diff - is a cumulative patch that contains diff between
> HEAD branch and project branch in p4. In order to make code review
> easier I split it into several sub-patches based on functionality area.
> dtrace-ctf.diff
>    Current version of ctfmerge assumes that target byte order is the
>    same as host one. This patch checks byte order of ELF files being
>    used to decide whether byte order in CTF structures' fields
>    should be reversed.
> dtrace-toolchain.diff
>    - Disable SGI compatibility for generated DWARF data.
>          It confuses ctfconvert.
>    - Set as(1) default ABI and target size the same as target platform
> dtrace-sys.diff
>    - Kernel part of DTrace code
>    - More intelligent kernel stack overflow handler
> dtrace-userland.diff
>    - Userland part of DTrace code
>    - Build DTrace tols as a part of toolchain build if
>        we're cross-compiling
>    - Various libraries' plugs for MIPS
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"

More information about the freebsd-current mailing list