1. 19 3月, 2010 4 次提交
    • L
      perf, x86: Add a key to simplify template lookup in Pentium-4 PMU · f34edbc1
      Lin Ming 提交于
      Currently, we use opcode(Event and Event-Selector) + emask to
      look up template in p4_templates.
      
      But cache events (L1-dcache-load-misses, LLC-load-misses, etc)
      use the same event(P4_REPLAY_EVENT) to do the counting, ie, they
      have the same opcode and emask. So we can not use current lookup
      mechanism to find the template for cache events.
      
      This patch introduces a "key", which is the index into
      p4_templates. The low 12 bits of CCCR are reserved, so we can
      hide the "key" in the low 12 bits of hwc->config.
      
      We extract the key from hwc->config and then quickly find the
      template.
      Signed-off-by: NLin Ming <ming.m.lin@intel.com>
      Reviewed-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1268908387.13901.127.camel@minggr.sh.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f34edbc1
    • I
      perf events: Fix false positive build warning with older GCC's · 55632770
      Ingo Molnar 提交于
      gcc 4.2.1 produces:
      
       util/probe-event.c: In function 'add_perf_probe_events':
       util/probe-event.c:883: warning: 'tev' may be used uninitialized in this function
       make: *** [util/probe-event.o] Error 1
      
      Newer GCCs get this right.
      
      To work it around, initialize the variable to NULL so that older GCCs see
      it as initialized too.
      
      Cc: Masami Hiramatsu <mhiramat@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220612.32050.33806.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      55632770
    • C
      x86, perf: Use apic_write unconditionally · 7335f75e
      Cyrill Gorcunov 提交于
      Since apic_write() maps to a plain noop in the !CONFIG_X86_LOCAL_APIC
      case we're safe to remove this conditional compilation and clean up
      the code a bit.
      Signed-off-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Cc: fweisbec@gmail.com
      Cc: acme@redhat.com
      Cc: eranian@google.com
      Cc: peterz@infradead.org
      LKML-Reference: <20100317104356.232371479@openvz.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7335f75e
    • C
      x86, apic: Allow to use certain functions without APIC built-in support · d674cd19
      Cyrill Gorcunov 提交于
      In case even if the kernel is configured so that
      no APIC support is built-in we still may allow
      to use certain apic functions as dummy calls.
      
      In particular we start using it in perf-events code.
      
      Note that this is not that same as NOOP apic driver (which
      is used if APIC support is present but no physical APIC is
      available), this is for the case when we don't have apic code
      compiled in at all.
      Signed-off-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20100317104356.011052632@openvz.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d674cd19
  2. 18 3月, 2010 3 次提交
    • Z
      perf events: Change perf parameter --pid to process-wide collection instead of thread-wide · d6d901c2
      Zhang, Yanmin 提交于
      Parameter --pid (or -p) of perf currently means a thread-wide
      collection. For exmaple, if a process whose id is 8888 has 10
      threads, 'perf top -p 8888' just collects the main thread
      statistics. That's misleading. Users are used to attach a whole
      process when debugging a process by gdb. To follow normal usage
      style, the patch change --pid to process-wide collection and add
      --tid (-t) to mean a thread-wide collection.
      
      Usage example is:
      
       # perf top -p 8888
       # perf record -p 8888 -f sleep 10
       # perf stat -p 8888 -f sleep 10
      
      Above commands collect the statistics of all threads of process
      8888.
      Signed-off-by: NZhang Yanmin <yanmin_zhang@linux.intel.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Sheng Yang <sheng@linux.intel.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Gleb Natapov <gleb@redhat.com>
      Cc: zhiteng.huang@intel.com
      Cc: Zachary Amsden <zamsden@redhat.com>
      LKML-Reference: <1268922965-14774-3-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d6d901c2
    • Z
      perf record: Enable counters only when kernel is execing subcommand · 46be604b
      Zhang, Yanmin 提交于
      'perf record' starts counters before subcommand is execed, so
      the statistics is not precise because it includes data of some
      preparation steps. I fix it with the patch.
      
      In addition, change the condition to fork/exec subcommand. If
      there is a subcommand parameter, perf always fork/exec it. The
      usage example is:
      
       # perf record -f -a sleep 10
      
      So this command could collect statistics for 10 seconds
      precisely. User still could stop it by CTRL+C. Without the new
      capability, user could only input CTRL+C to stop it without
      precise time clock.
      Signed-off-by: NZhang Yanmin <yanmin_zhang@linux.intel.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Sheng Yang <sheng@linux.intel.com>
      Cc: oerg Roedel <joro@8bytes.org>
      Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Gleb Natapov <gleb@redhat.com>
      Cc: <zhiteng.huang@intel.com>
      Cc: Zachary Amsden <zamsden@redhat.com>
      LKML-Reference: <1268922965-14774-2-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      46be604b
    • Z
      perf stat: Enable counters when collecting process-wide or system-wide data · 6be2850e
      Zhang, Yanmin 提交于
      Command 'perf stat' doesn't enable counters when collecting an
      existing (by -p) process or system-wide statistics. Fix the
      issue.
      
      Change the condition of fork/exec subcommand. If there is a
      subcommand parameter, perf always forks/execs it. The usage
      example is:
      
       # perf stat -a sleep 10
      
      So this command could collect statistics for 10 seconds
      precisely. User still could stop it by CTRL+C. Without the new
      capability, user could only use CTRL+C to stop it without
      precise time clock.
      
      Another issue is 'perf stat -a' consumes 100% time of a full
      single logical cpu. It has a bad impact on running workload.
      
      Fix it by adding a sleep(1) in the while(!done) loop in function
      run_perf_stat.
      Signed-off-by: NZhang Yanmin <yanmin_zhang@linux.intel.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Sheng Yang <sheng@linux.intel.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Joerg Roedel <joro@8bytes.org>
      Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
      Cc: Gleb Natapov <gleb@redhat.com>
      Cc: Zachary Amsden <zamsden@redhat.com>
      Cc: <zhiteng.huang@intel.com>
      LKML-Reference: <1268922965-14774-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6be2850e
  3. 17 3月, 2010 19 次提交
    • R
      perf/core, x86: Remove duplicate perf_event_mask variable · d6dc0b4e
      Robert Richter 提交于
      The same information is stored also in x86_pmu.intel_ctrl. This
      patch removes perf_event_mask and instead uses
      x86_pmu.intel_ctrl directly.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1268826553-19518-5-git-send-email-robert.richter@amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d6dc0b4e
    • R
      perf/core, x86: Remove cpu_hw_events.interrupts · 10f1014d
      Robert Richter 提交于
      This member in the struct is not used anymore and can be
      removed.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1268826553-19518-4-git-send-email-robert.richter@amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      10f1014d
    • R
      perf/core: Correct files in MAINTAINERS entry · 141c4296
      Robert Richter 提交于
      This corrects the file entries for perf_events. The following
      files are caught now:
      
       $ xargs | eval ls $(cat) | sort -u
       kernel/perf_event*.c
       include/linux/perf_event.h
       arch/*/kernel/perf_event*.c
       arch/*/kernel/*/perf_event*.c
       arch/*/kernel/*/*/perf_event*.c
       arch/*/include/asm/perf_event.h
       arch/*/lib/perf_event*.c
       arch/*/kernel/perf_callchain.c
      
       arch/alpha/include/asm/perf_event.h
       arch/arm/include/asm/perf_event.h
       arch/arm/kernel/perf_event.c
       arch/frv/include/asm/perf_event.h
       arch/frv/lib/perf_event.c
       arch/parisc/include/asm/perf_event.h
       arch/powerpc/include/asm/perf_event.h
       arch/powerpc/kernel/perf_callchain.c
       arch/powerpc/kernel/perf_event.c
       arch/s390/include/asm/perf_event.h
       arch/sh/include/asm/perf_event.h
       arch/sh/kernel/cpu/sh4a/perf_event.c
       arch/sh/kernel/cpu/sh4/perf_event.c
       arch/sh/kernel/perf_callchain.c
       arch/sh/kernel/perf_event.c
       arch/sparc/include/asm/perf_event.h
       arch/sparc/kernel/perf_event.c
       arch/x86/include/asm/perf_event.h
       arch/x86/kernel/cpu/perf_event_amd.c
       arch/x86/kernel/cpu/perf_event.c
       arch/x86/kernel/cpu/perf_event_intel.c
       arch/x86/kernel/cpu/perf_event_p6.c
       include/linux/perf_event.h
       kernel/perf_event.c
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1268826553-19518-3-git-send-email-robert.richter@amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      141c4296
    • R
      perf/core, x86: Reduce number of CONFIG_X86_LOCAL_APIC macros · b27ea29c
      Robert Richter 提交于
      The function reserve_pmc_hardware() and release_pmc_hardware()
      were hard to read. This patch improves readability of the code by
      removing most of the CONFIG_X86_LOCAL_APIC macros.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1268826553-19518-2-git-send-email-robert.richter@amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b27ea29c
    • I
      perf probe: Fix !dwarf build · 3b0d5164
      Ingo Molnar 提交于
      Fix the !drawf build.
      
      This uses the existing NO_DWARF_SUPPORT mechanism we use for that,
      but it's really fragile and needs a cleanup. (in a separate patch)
      
      1) Such uses:
      
       #ifndef NO_DWARF_SUPPORT
      
      are double inverted logic a'la 'not not'. Instead the flag should
      be called DWARF_SUPPORT.
      
      2) Furthermore, assymetric #ifdef polluted code flow like:
      
              if (need_dwarf)
       #ifdef NO_DWARF_SUPPORT
                      die("Debuginfo-analysis is not supported");
       #else   /* !NO_DWARF_SUPPORT */
                      pr_debug("Some probes require debuginfo.\n");
      
              fd = open_vmlinux();
      
      is very fragile and not acceptable. Instead of that helper functions
      should be created and the dwarf/no-dwarf logic should be separated more
      cleanly.
      
      3) Local variable #ifdefs like this:
      
       #ifndef NO_DWARF_SUPPORT
              int fd;
       #endif
      
      Are fragile as well and should be eliminated. Helper functions achieve
      that too.
      
      Cc: Masami Hiramatsu <mhiramat@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220612.32050.33806.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3b0d5164
    • M
      perf probe: Add data structure member access support · 7df2f329
      Masami Hiramatsu 提交于
      Support accessing members in the data structures. With this,
      perf-probe accepts data-structure members(IOW, it now accepts
      dot '.' and arrow '->' operators) as probe arguemnts.
      
      e.g.
      
       ./perf probe --add 'schedule:44 rq->curr'
      
       ./perf probe --add 'vfs_read file->f_op->read file->f_path.dentry'
      
      Note that '>' can be interpreted as redirection in command-line.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220626.32050.57552.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7df2f329
    • M
      perf probe: List probes with line number and file name · fb1587d8
      Masami Hiramatsu 提交于
      Improve --list to show current exist probes with line number and
      file name. This enables user easily to check which line is
      already probed.
      
      for example:
      
       ./perf probe --list
       probe:vfs_read       (on vfs_read:8@linux-2.6-tip/fs/read_write.c)
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220619.32050.48702.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      fb1587d8
    • M
      perf probe: Introduce kprobe_trace_event and perf_probe_event · 4235b045
      Masami Hiramatsu 提交于
      Introduce kprobe_trace_event and perf_probe_event and replace
      old probe_point structure with it. probe_point structure is
      not enough flexible nor extensible. New data structures
      will help implementing further features.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220612.32050.33806.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4235b045
    • M
      perf probe: Add --dry-run option · f4d7da49
      Masami Hiramatsu 提交于
      Add --dry-run option for debugging and testing.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220605.32050.6571.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f4d7da49
    • M
      perf probe: Introduce die_find_child() function · 016f262e
      Masami Hiramatsu 提交于
      Introduce die_find_child() function to integrate DIE-tree
      searching functions.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220558.32050.7905.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      016f262e
    • M
      perf probe: Rename some die_get_* functions · 95a3e4c4
      Masami Hiramatsu 提交于
      Rename die_get_real_subprogram and die_get_inlinefunc to
      die_find_real_subprogram and die_find_inlinefunc respectively,
      because these functions search its children. After that,
      'die_get_' means getting a property of that die, and
      'die_find_' means searching DIE-tree to get an appropriate
      child die.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220551.32050.36181.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      95a3e4c4
    • M
      perf probe: Rename session to param · 12a1fadb
      Masami Hiramatsu 提交于
      Since this name 'session' conflicts with 'perf_session', and
      this structure just holds parameters anymore.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220544.32050.8788.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      12a1fadb
    • M
      perf probe: Move add-probe routine to util/ · e0faa8d3
      Masami Hiramatsu 提交于
      Move add-probe routine to util/probe_event.c. This simplifies
      main routine for reducing maintenance cost.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220537.32050.72214.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e0faa8d3
    • M
      perf probe: Use wrapper functions · 31facc5f
      Masami Hiramatsu 提交于
      Use wrapped functions as much as possible, to check out of
      memory conditions in perf probe.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220530.32050.53951.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      31facc5f
    • M
      perf tools: Introduce xzalloc() for detecting out of memory conditions · a1d37d52
      Masami Hiramatsu 提交于
      Introducing xzalloc() which wrapping zalloc() for detecting out
      of memory conditions.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20100316220521.32050.85155.stgit@localhost6.localdomain6>
      [ -v2: small cleanups in surrounding code ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a1d37d52
    • I
      Merge branch 'perf/urgent' into perf/core · e4713e93
      Ingo Molnar 提交于
      Merge reason: We'll be queueing dependent changes.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e4713e93
    • F
      perf: Fix unexported generic perf_arch_fetch_caller_regs · a6b84574
      Frederic Weisbecker 提交于
      perf_arch_fetch_caller_regs() is exported for the overriden x86
      version, but not for the generic weak version.
      
      As a general rule, weak functions should not have their symbol
      exported in the same file they are defined.
      
      So let's export it on trace_event_perf.c as it is used by trace
      events only.
      
      This fixes:
      
      	ERROR: ".perf_arch_fetch_caller_regs" [fs/xfs/xfs.ko] undefined!
      	ERROR: ".perf_arch_fetch_caller_regs" [arch/powerpc/platforms/cell/spufs/spufs.ko] undefined!
      
      -v2: And also only build it if trace events are enabled.
      -v3: Fix changelog mistake
      Reported-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1268697902-9518-1-git-send-regression-fweisbec@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a6b84574
    • R
      perf, x86: Report error code that returned from x86_pmu.hw_config() · 984763cb
      Robert Richter 提交于
      If x86_pmu.hw_config() fails a fixed error code (-EOPNOTSUPP) is
      returned even if a different error was reported. This patch fixes
      this.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Acked-by: NCyrill Gorcunov <gorcunov@gmail.com>
      Acked-by: NLin Ming <ming.m.lin@intel.com>
      Cc: acme@redhat.com
      Cc: eranian@google.com
      Cc: gorcunov@openvz.org
      Cc: peterz@infradead.org
      Cc: fweisbec@gmail.com
      LKML-Reference: <20100316160733.GR1585@erda.amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      984763cb
    • A
      perf top: Add missing initialization to zero · 00909e95
      Arnaldo Carvalho de Melo 提交于
      The dso_short_width has to start as zero, as we're calculating
      the maximum short DSO name length, somehow I missed this one.
      Reported-by: NFrédéric Weisbecker <fweisbec@gmail.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1268774926-27488-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      00909e95
  4. 16 3月, 2010 7 次提交
    • M
      kprobes: Hide CONFIG_OPTPROBES and set if arch supports optimized kprobes · 5cc718b9
      Masami Hiramatsu 提交于
      Hide CONFIG_OPTPROBES and set if the arch supports optimized
      kprobes (IOW, HAVE_OPTPROBES=y), since this option doesn't
      change the major behavior of kprobes, and workarounds for minor
      changes are documented.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      Cc: Dieter Ries <mail@dieterries.net>
      Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
      Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20100315170054.31593.3153.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      5cc718b9
    • M
      perf probe: Use original address instead of CU-based address · d0cb4260
      Masami Hiramatsu 提交于
      Use original address for looking up the location of variables
      for dwarf_getlocation_addr() instead of CU-based address.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      LKML-Reference: <20100315170235.31852.91195.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d0cb4260
    • M
      perf probe: Fix offset to allow signed value · 67c7ff7c
      Masami Hiramatsu 提交于
      Fix dereference offset to intmax_t from uintmax_t, because
      it can have negative values (for example local variable's offset
      from frame pointer).
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: systemtap <systemtap@sources.redhat.com>
      Cc: DLE <dle-develop@lists.sourceforge.net>
      LKML-Reference: <20100315170228.31852.71946.stgit@localhost6.localdomain6>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      67c7ff7c
    • A
      perf top: Improve the autosizing of column lenghts · b63be8d7
      Arnaldo Carvalho de Melo 提交于
      When profiling C++ workloads the symbol name length can be
      really big, so cap it before it garbles the result.
      
      This builds upon the autosizing already present where we choose
      to use the short, basename of DSOs instead of its long, full
      pathname.
      Reported-by: NPavel Krauz <krauz@cngroup.cz>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1268676230-9261-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b63be8d7
    • L
      x86, perf: Fix comments in Pentium-4 PMU definitions · 8ea7f544
      Lin Ming 提交于
      Reported-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Signed-off-by: NLin Ming <ming.m.lin@intel.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1268705556.3379.8.camel@minggr.sh.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8ea7f544
    • F
      perf: Fix unexported generic perf_arch_fetch_caller_regs · 1d199b1a
      Frederic Weisbecker 提交于
      perf_arch_fetch_caller_regs() is exported for the overriden x86
      version, but not for the generic weak version.
      
      As a general rule, weak functions should not have their symbol
      exported in the same file they are defined.
      
      So let's export it on trace_event_perf.c as it is used by trace
      events only.
      
      This fixes:
      
      	ERROR: ".perf_arch_fetch_caller_regs" [fs/xfs/xfs.ko] undefined!
      	ERROR: ".perf_arch_fetch_caller_regs" [arch/powerpc/platforms/cell/spufs/spufs.ko] undefined!
      
      -v2: And also only build it if trace events are enabled.
      -v3: Fix changelog mistake
      Reported-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1268697902-9518-1-git-send-regression-fweisbec@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      1d199b1a
    • A
      perf annotate: Properly notify the user that vmlinux is missing · d06d92b7
      Arnaldo Carvalho de Melo 提交于
      Before this patch we would not find a vmlinux, then try to pass
      objdump "[kernel.kallsyms]" as the filename, it would get
      confused and produce no output:
      
       [root@doppio ~]# perf annotate n_tty_write
      
       ------------------------------------------------
        Percent |      Source code & Disassembly of [kernel.kallsyms]
       ------------------------------------------------
      
      Now we check that and emit meaningful warning:
      
       [root@doppio ~]# perf annotate n_tty_write
       Can't annotate n_tty_write: No vmlinux file was found in the
       path: [0] vmlinux
       [1] /boot/vmlinux
       [2] /boot/vmlinux-2.6.34-rc1-tip+
       [3] /lib/modules/2.6.34-rc1-tip+/build/vmlinux
       [4] /usr/lib/debug/lib/modules/2.6.34-rc1-tip+/vmlinux
       [root@doppio ~]#
      
      This bug was introduced when we added automatic search for
      vmlinux, before that time the user had to specify a vmlinux
      file.
      
      v2: Print the warning just for the first symbol found when no
          symbol name is specified, otherwise it will spam the screen
          repeating the warning for each symbol.
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: <stable@kernel.org>
      LKML-Reference: <1268669073-6856-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d06d92b7
  5. 15 3月, 2010 3 次提交
    • A
      perf top: Properly notify the user that vmlinux is missing · b0a9ab62
      Arnaldo Carvalho de Melo 提交于
      Before this patch this message would very briefly appear on the
      screen and then the screen would get updates only on the top,
      for number of interrupts received, etc, but no annotation would
      be performed:
      
       [root@doppio linux-2.6-tip]# perf top -s n_tty_write > /tmp/bla
       objdump: '[kernel.kallsyms]': No such file
      
      Now this is what the user gets:
      
       [root@doppio linux-2.6-tip]# perf top -s n_tty_write
       Can't annotate n_tty_write: No vmlinux file was found in the
       path: [0] vmlinux
       [1] /boot/vmlinux
       [2] /boot/vmlinux-2.6.33-rc5
       [3] /lib/modules/2.6.33-rc5/build/vmlinux
       [4] /usr/lib/debug/lib/modules/2.6.33-rc5/vmlinux
       [root@doppio linux-2.6-tip]#
      
      This bug was introduced when we added automatic search for
      vmlinux, before that time the user had to specify a vmlinux
      file.
      Reported-by: NDavid S. Miller <davem@davemloft.net>
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: <stable@kernel.org>
      LKML-Reference: <1268664418-28328-2-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b0a9ab62
    • E
      perf record: Enable the enable_on_exec flag if record forks the target · bedbfdea
      Eric B Munson 提交于
      When forking its target, perf record can capture data from
      before the target application is started.  Perf stat uses the
      enable_on_exec flag in the event attributes to keep from
      displaying events from before the target program starts, this
      patch adds the same functionality to perf record when it is will
      fork the target process.
      Signed-off-by: NEric B Munson <ebmunson@us.ibm.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1268664418-28328-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      bedbfdea
    • C
      perf, x86: Enable not tagged retired instruction counting on P4s · e4495262
      Cyrill Gorcunov 提交于
      This should turn on instruction counting on P4s, which was missing in
      the first version of the new PMU driver.
      
      It's inaccurate for now, we still need dependant event to tag mops
      before we can count them precisely. The result is that the number of
      instruction may be lifted up.
      Signed-off-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Signed-off-by: NLin Ming <ming.m.lin@intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1268629102.3355.11.camel@minggr.sh.intel.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e4495262
  6. 13 3月, 2010 4 次提交