All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wu Zhangjin <wuzhangjin@gmail.com>
To: Deng-Cheng Zhu <dengcheng.zhu@gmail.com>
Cc: ralf@linux-mips.org, ddaney@caviumnetworks.com,
	linux-mips@linux-mips.org
Subject: Re: [PATCH] Perf-tool/MIPS: support cross compiling of tools/perf for MIPS
Date: Wed, 28 Apr 2010 21:14:07 +0800	[thread overview]
Message-ID: <1272460447.21867.31.camel@localhost> (raw)
In-Reply-To: <1272455674-4725-1-git-send-email-dengcheng.zhu@gmail.com>

On Wed, 2010-04-28 at 19:54 +0800, Deng-Cheng Zhu wrote:
> With the kernel facility of Linux performance counters, we want the user
> level tool tools/perf to be cross compiled for MIPS platform. To do this,
> we need to include unistd.h, add rmb() and cpu_relax() in perf.h.
> 

Just found local-compiling also need rmb().

BTW: for local-compiling in a debian linux on MIPS machines, we need to
copy linux-source-code/{tools/perf, include, lib} to the machine and
install libdw-dev and libelf-dev, so the basic procedure for making perf
work on a debian/MIPS:

0. prepare

For tools/perf

  copy the directory {tools/perf, include, lib} of linux
  $ apt-get install libdw-dev libelf-dev

For the kernel support

  apply deng-cheng's latest patch and ensure CONFIG_HW_PERF_EVENTS=y
  then boot into the new kernel.

1. compile tools/perf

$ ls
include lib tools
$ ls tools/
perf
$ cd tools/perf
$ make

2. usage

$ ./perf list

For a non-raw event

$ ./perf stat -e cycles ls -l

For a raw event

$ ./perf stat -e r120 ls -l

Regard,

> Your review comments are especially required for the definition of rmb():
> In perf.h, we need to have a proper rmb() for _all_ MIPS platforms. And
> we don't have CONFIG_* things for use in here. Looking at barrier.h,
> rmb() goes into barrier() and __sync() for CAVIUM OCTEON and other CPUs,
> respectively. What's more, __sync() has different versions as well.
> Referring to BARRIER() in dump_tlb.c, I propose the "common" definition
> for perf tool rmb() in this patch. Do you have any comments?
> 
> In addition, for testing the kernel part code I sent several days
> ago, I was using the "particular" rmb() version for 24K/34K/74K cores:
> 
> #define rmb()           asm volatile(                           \
>                                 ".set   push\n\t"               \
>                                 ".set   noreorder\n\t"          \
>                                 ".set   mips2\n\t"              \
>                                 "sync\n\t"                      \
>                                 ".set   pop"                    \
>                                 : /* no output */               \
>                                 : /* no input */                \
>                                 : "memory")
> 
> This is the definition of __sync() for CONFIG_CPU_HAS_SYNC.
> 
> 
> Thanks,
> 
> Deng-Cheng
> 
> Signed-off-by: Deng-Cheng Zhu <dengcheng.zhu@gmail.com>
> ---
>  tools/perf/perf.h |   12 ++++++++++++
>  1 files changed, 12 insertions(+), 0 deletions(-)
> 
> diff --git a/tools/perf/perf.h b/tools/perf/perf.h
> index 6fb379b..cd05284 100644
> --- a/tools/perf/perf.h
> +++ b/tools/perf/perf.h
> @@ -69,6 +69,18 @@
>  #define cpu_relax()	asm volatile("":::"memory")
>  #endif
>  
> +#ifdef __mips__
> +#include "../../arch/mips/include/asm/unistd.h"
> +#define rmb()		asm volatile(					\
> +				".set	noreorder\n\t"			\
> +				"nop;nop;nop;nop;nop;nop;nop\n\t"	\
> +				".set	reorder"			\
> +				: /* no output */			\
> +				: /* no input */			\
> +				: "memory")
> +#define cpu_relax()	asm volatile("" ::: "memory")
> +#endif
> +
>  #include <time.h>
>  #include <unistd.h>
>  #include <sys/types.h>

      reply	other threads:[~2010-04-28 13:14 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-28 11:54 [PATCH] Perf-tool/MIPS: support cross compiling of tools/perf for MIPS Deng-Cheng Zhu
2010-04-28 13:14 ` Wu Zhangjin [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1272460447.21867.31.camel@localhost \
    --to=wuzhangjin@gmail.com \
    --cc=ddaney@caviumnetworks.com \
    --cc=dengcheng.zhu@gmail.com \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.