linux-mips
[Top] [All Lists]

Re: [RFC][PATCH] Implement perf_callchain_user for o32 ABI (on mipsel)

To: Holger Hans Peter Freyther <holger@freyther.de>, Ralf Baechle <ralf@linux-mips.org>
Subject: Re: [RFC][PATCH] Implement perf_callchain_user for o32 ABI (on mipsel)
From: David Daney <david.daney@cavium.com>
Date: Wed, 10 Aug 2011 10:25:04 -0700
Cc: linux-mips@linux-mips.org, "VomLehn, David" <dvomlehn@cisco.com>, gergely@homejinni.com
In-reply-to: <4E423228.2080309@freyther.de>
References: <4E423228.2080309@freyther.de>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
On 08/10/2011 12:24 AM, Holger Hans Peter Freyther wrote:
Hi all,

I wanted to use perf to profile my userspace application on MIPS but I saw
that there is no solution for that. I have written some code to scan the
prologue of the function to identify the stack size and where in the stack the
return address is stored.

    0:  27bdffd8        addiu   sp,sp,-40<-- used to find prev. stack
    4:  afbf0024        sw      ra,36(sp)<-- stored return addr.
    8:  afbe0020        sw      s8,32(sp)
    c:  03a0f021        move    s8,sp
   10:  3c1c0000        lui     gp,0x0
   14:  279c0000        addiu   gp,gp,0

The code appears to work in qemu-system-mipsel (not where I am going to do my
profiling) with my simple test application.

The code is missing a S-o-b because I would like to get feedback if something
like this would ever be accepted upstream. The other question is also about
security, other ABIs, 32/64 bit...

comments more than welcome
        holger

You need to reconcile your patches with these:

http://patchwork.linux-mips.org/patch/2579/
http://patchwork.linux-mips.org/patch/2376/
http://patchwork.linux-mips.org/patch/2375/

We probably could use some sort of backtrace code in the kernel, but three seperate implementations are too many.

Also separating most of the unwinder into a separate file would be preferable to mixing it into the perf counter driver.

David Daney

<Prev in Thread] Current Thread [Next in Thread>