1. 07 Jan, 2011 12 commits
    • Frederic Weisbecker's avatar
      x86: Save rbp in pt_regs on irq entry · 625dbc3b
      Frederic Weisbecker authored
      From the x86_64 low level interrupt handlers, the frame pointer is
      saved right after the partial pt_regs frame.
      
      rbp is not supposed to be part of the irq partial saved registers,
      but it only requires to extend the pt_regs frame by 8 bytes to
      do so, plus a tiny stack offset fixup on irq exit.
      
      This changes a bit the semantics or get_irq_entry() that is supposed
      to provide only the value of caller saved registers and the cpu
      saved frame. However it's a win for unwinders that can walk through
      stack frames on top of get_irq_regs() snapshots.
      
      A noticeable impact is that it makes perf events cpu-clock and
      task-clock events based callchains working on x86_64.
      
      Let's then save rbp into the irq pt_regs.
      
      As a result with:
      
      	perf record -e cpu-clock perf bench sched messaging
      	perf report --stdio
      
      Before:
          20.94%             perf  [kernel.kallsyms]        [k] lock_acquire
                             |
                             --- lock_acquire
                                |
                                |--44.01%-- __write_nocancel
                                |
                                |--43.18%-- __read
                                |
                                |--6.08%-- fork
                                |          create_worker
                                |
                                |--0.88%-- _dl_fixup
                                |
                                |--0.65%-- do_lookup_x
                                |
                                |--0.53%-- __GI___libc_read
                                 --4.67%-- [...]
      
      After:
          19.23%         perf  [kernel.kallsyms]    [k] __lock_acquire
                         |
                         --- __lock_acquire
                            |
                            |--97.74%-- lock_acquire
                            |          |
                            |          |--21.82%-- _raw_spin_lock
                            |          |          |
                            |          |          |--37.26%-- unix_stream_recvmsg
                            |          |          |          sock_aio_read
                            |          |          |          do_sync_read
                            |          |          |          vfs_read
                            |          |          |          sys_read
                            |          |          |          system_call
                            |          |          |          __read
                            |          |          |
                            |          |          |--24.09%-- unix_stream_sendmsg
                            |          |          |          sock_aio_write
                            |          |          |          do_sync_write
                            |          |          |          vfs_write
                            |          |          |          sys_write
                            |          |          |          system_call
                            |          |          |          __write_nocancel
      
      v2: Fix cfi annotations.
      Reported-by: default avatarSoeren Sandmann Pedersen <sandmann@redhat.com>
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: H. Peter Anvin <hpa@zytor.com
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Jan Beulich <JBeulich@novell.com>
      625dbc3b
    • Rakib Mullick's avatar
      x86, dumpstack: Fix unused variable warning · 39a6eebd
      Rakib Mullick authored
      In dump_stack function, bp isn't used anymore, which is introduced by
      commit 9c0729dc. This patch removes bp
      completely.
      Signed-off-by: default avatarRakib Mullick <rakib.mullick@gmail.com>
      Cc: Soeren Sandmann <sandmann@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: H. Peter Anvin <hpa@zytor.com>
      LKML-Reference: <AANLkTik9U_Z0WSZ7YjrykER_pBUfPDdgUUmtYx=R74nL@mail.gmail.com>
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      39a6eebd
    • Don Zickus's avatar
      x86, NMI: Clean-up default_do_nmi() · f2fd4395
      Don Zickus authored
      Just re-arrange the code a bit to make it easier to follow what is
      going on.  Basically un-negating the if-statement and swapping the code
      inside the if-statement with code outside.
      
      No functional changes.
      Originally-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1294348732-15030-7-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f2fd4395
    • Don Zickus's avatar
      x86, NMI: Allow NMI reason io port (0x61) to be processed on any CPU · ab846f13
      Don Zickus authored
      In original NMI handler, NMI reason io port (0x61) is only processed
      on BSP.  This makes it impossible to hot-remove BSP.  To solve the
      issue, a raw spinlock is used to allow the port to be processed on any
      CPU.
      Originally-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1294348732-15030-6-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      ab846f13
    • Don Zickus's avatar
      x86, NMI: Remove DIE_NMI_IPI · c410b830
      Don Zickus authored
      With priorities in place and no one really understanding the difference between
      DIE_NMI and DIE_NMI_IPI, just remove DIE_NMI_IPI and convert everyone to DIE_NMI.
      
      This also simplifies default_do_nmi() a little bit.  Instead of calling the
      die_notifier in both the if and else part, just pull it out and call it before
      the if-statement.  This has the side benefit of avoiding a call to the ioport
      to see if there is an external NMI sitting around until after the (more frequent)
      internal NMIs are dealt with.
      Patch-Inspired-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1294348732-15030-5-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      c410b830
    • Don Zickus's avatar
      x86, NMI: Add priorities to handlers · 166d7514
      Don Zickus authored
      In order to consolidate the NMI die_chain events, we need to setup the priorities
      for the die notifiers.
      
      I started by defining a bunch of common priorities that can be used by the
      notifier blocks.  Then I modified the notifier blocks to use the newly created
      priorities.
      
      Now that the priorities are straightened out, it should be easier to remove the
      event DIE_NMI_IPI.
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1294348732-15030-4-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      166d7514
    • Don Zickus's avatar
      x86: Convert some devices to use DIE_NMIUNKNOWN · 673a6092
      Don Zickus authored
      They are a handful of places in the code that register a die_notifier
      as a catch all in case no claims the NMI.  Unfortunately, they trigger
      on events like DIE_NMI and DIE_NMI_IPI, which depending on when they
      registered may collide with other handlers that have the ability to
      determine if the NMI is theirs or not.
      
      The function unknown_nmi_error() makes one last effort to walk the
      die_chain when no one else has claimed the NMI before spitting out
      messages that the NMI is unknown.
      
      This is a better spot for these devices to execute any code without
      colliding with the other handlers.
      
      The two drivers modified are only compiled on x86 arches I believe, so
      they shouldn't be affected by other arches that may not have
      DIE_NMIUNKNOWN defined.
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Cc: Russ Anderson <rja@sgi.com>
      Cc: Corey Minyard <minyard@acm.org>
      Cc: openipmi-developer@lists.sourceforge.net
      Cc: dann frazier <dannf@hp.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1294348732-15030-3-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      673a6092
    • Huang Ying's avatar
      x86, NMI: Add NMI symbol constants and rename memory parity to PCI SERR · 1c7b74d4
      Huang Ying authored
      Replace the NMI related magic numbers with symbol constants.
      
      Memory parity error is only valid for IBM PC-AT, newer machine use
      bit 7 (0x80) of 0x61 port for PCI SERR. While memory error is usually
      reported via MCE. So corresponding function name and kernel log string
      is changed.
      
      But on some machines, PCI SERR line is still used to report memory
      errors. This is used by EDAC, so corresponding EDAC call is reserved.
      Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1294348732-15030-2-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      1c7b74d4
    • Stephane Eranian's avatar
      perf_events: Add perf_event_time() · 4158755d
      Stephane Eranian authored
      Adds perf_event_time() to try and centralize access to event
      timing and in particular ctx->time. Prepares for cgroup support.
      Signed-off-by: default avatarStephane Eranian <eranian@google.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <4d22059c.122ae30a.5e0e.ffff8b8b@mx.google.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4158755d
    • Stephane Eranian's avatar
      perf_events: Generalize use of event_filter_match() · 5632ab12
      Stephane Eranian authored
      Replace all occurrences of:
      	event->cpu != -1 && event->cpu == smp_processor_id()
      by a call to:
      	event_filter_match(event)
      
      This makes the code more consistent and will make the cgroup
      patch smaller.
      Signed-off-by: default avatarStephane Eranian <eranian@google.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <4d220593.2308e30a.48c5.ffff8ae9@mx.google.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5632ab12
    • Stephane Eranian's avatar
      perf_events: Move code around to prepare for cgroup · 0b3fcf17
      Stephane Eranian authored
      In particular this patch move perf_event_exit_task() before
      cgroup_exit() to allow for cgroup support. The cgroup_exit()
      function detaches the cgroups attached to a task.
      
      Other movements include hoisting some definitions and inlines
      at the top of perf_event.c
      Signed-off-by: default avatarStephane Eranian <eranian@google.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <4d22058b.cdace30a.4657.ffff95b1@mx.google.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      0b3fcf17
    • Lin Ming's avatar
      perf tools: Pass whole attr to event selectors · 23a2f3ab
      Lin Ming authored
      Since commit 69aad6f1(perf tools: Introduce event selectors), only
      perf_event_attr::type and ::config are passed to event selector, which
      makes perf tool not work correctly.
      
      For example, PEBS does not work because perf_event_attr::precise_ip is
      not passed to the syscall.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1294369869.20563.19.camel@minggr.sh.intel.com>
      Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      23a2f3ab
  2. 06 Jan, 2011 2 commits
    • Frederic Weisbecker's avatar
      perf tools: Build with frame pointer · 6b01f2c4
      Frederic Weisbecker authored
      It seems that some gcc versions build by default with frame pointers
      and some others omit them.
      
      Just build the tools with frame pointers as the callchains can be an
      important part of the perf workflow.
      
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      LKML-Reference: <1294325513-14276-3-git-send-email-fweisbec@gmail.com>
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6b01f2c4
    • Han Pingtian's avatar
      perf tools: Fix buffer overflow error when specifying all tracepoints · f006d25a
      Han Pingtian authored
      I found when specifying all tracepoints with -e to one of subcommand,
      such as 'stat', the program will trigger a buffer overflow error, like
      this:
      
      *** buffer overflow detected ***: ./perf terminated
      ======= Backtrace: =========
      /lib64/libc.so.6(__fortify_fail+0x37)[0x382cefb2c7]
      ....
      
      The tracepoints are separated by comma, something like this:
      
      $ perf stat -a -e `perf list |grep Tracepoint|awk -F'[' '{gsub(/[[:space:]]+/,"",$1);array[FNR]=$1}END{outputs=array[1];for (i=2;i<=FNR;i++){ outputs=outputs "," array[i];};print outputs}'`
      
      The root reason of this problem is that store_event_type() is called for all
      events, and will overflow the 'filename' at:
      
          strncat(filename, orgname, strlen(orgname));
      
      This patch fixes it by calling store_event_type() only when the event name has
      been found.
      
      LKML-Reference: <20110106093922.GB6713@hpt.nay.redhat.com>
      Signed-off-by: default avatarHan Pingtian <phan@redhat.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f006d25a
  3. 05 Jan, 2011 12 commits
    • Jean Pihet's avatar
      tools, perf: Documentation for the power events API · 4b95f135
      Jean Pihet authored
      Provides documentation for the following:
      - the new power trace API,
      - the old (legacy) power trace API,
      - the DEPRECATED Kconfig option usage.
      Signed-off-by: default avatarJean Pihet <j-pihet@ti.com>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: trenn@suse.de
      Cc: Len Brown <len.brown@intel.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: linux-pm@lists.linux-foundation.org
      LKML-Reference: <1294253342-29056-3-git-send-email-j-pihet@ti.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4b95f135
    • Jean Pihet's avatar
      perf: Add calls to suspend trace point · 938cfed1
      Jean Pihet authored
      Uses the machine_suspend trace point, called from the
      generic kernel suspend_devices_and_enter function.
      Signed-off-by: default avatarJean Pihet <j-pihet@ti.com>
      Acked-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      CC: Thomas Renninger <trenn@suse.de>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: linux-pm@lists.linux-foundation.org
      LKML-Reference: <1294253342-29056-2-git-send-email-j-pihet@ti.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      938cfed1
    • Arnaldo Carvalho de Melo's avatar
      perf script: Make some lists static · eccdfe2d
      Arnaldo Carvalho de Melo authored
      Not accessed outside builtin-script, so make them static.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      eccdfe2d
    • Arnaldo Carvalho de Melo's avatar
      perf script: Use the default lost event handler · 6d8afb56
      Arnaldo Carvalho de Melo authored
      That already does what was being done here. The warning is now unconditionally
      given by __perf_session__process_pipe_events, just like for non pipe processing.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6d8afb56
    • Arnaldo Carvalho de Melo's avatar
      perf session: Warn about errors when processing pipe events too · 11095994
      Arnaldo Carvalho de Melo authored
      Just like we do at __perf_session__process_events
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      11095994
    • Stephane Eranian's avatar
      perf tools: Fix perf_event.h header usage · d030260a
      Stephane Eranian authored
      This patch fixes the usage of the perf_event.h header file
      between command modules and the supporting code in util.
      
      It is necessary to ensure that ALL files use the SAME
      perf_event.h header from the kernel source tree.
      
      There were a couple of #include <linux/perf_event.h> mixed
      with #include "../../perf_event.h".
      
      This caused issues on some distros because of mismatch
      in the layout of struct perf_event_attr. That eventually
      led perf stat to segfault.
      
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Robert Richter <robert.richter@amd.com>
      Cc: Stephane Eranian <eranian@gmail.com>
      LKML-Reference: <4d233cf0.2308e30a.7b00.ffffc187@mx.google.com>
      Signed-off-by: default avatarStephane Eranian <eranian@google.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d030260a
    • Arnaldo Carvalho de Melo's avatar
      perf test: Clarify some error reports in the open syscall test · 454a3bbe
      Arnaldo Carvalho de Melo authored
      Rebooted my devel machine, first thing I ran was perf test, that expects
      debugfs to be mounted, test fails. Be more clear about it.
      
      Also add missing newlines and add more informative message when
      sys_perf_event_open fails.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      454a3bbe
    • Huang Ying's avatar
      x86, NMI: Add touch_nmi_watchdog to io_check_error delay · 74d91e3c
      Huang Ying authored
      Prevent the long delay in io_check_error making NMI watchdog
      timeout.
      Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      LKML-Reference: <1294198689-15447-3-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      74d91e3c
    • Dongdong Deng's avatar
      x86: Avoid calling arch_trigger_all_cpu_backtrace() at the same time · 554ec063
      Dongdong Deng authored
      The spin_lock_debug/rcu_cpu_stall detector uses
      trigger_all_cpu_backtrace() to dump cpu backtrace.
      Therefore it is possible that trigger_all_cpu_backtrace()
      could be called at the same time on different CPUs, which
      triggers and 'unknown reason NMI' warning. The following case
      illustrates the problem:
      
            CPU1                    CPU2                     ...   CPU N
                             trigger_all_cpu_backtrace()
                             set "backtrace_mask" to cpu mask
                                     |
      generate NMI interrupts  generate NMI interrupts       ...
          \                          |                               /
           \                         |                              /
      
      The "backtrace_mask" will be cleaned by the first NMI interrupt
      at nmi_watchdog_tick(), then the following NMI interrupts
      generated by other cpus's arch_trigger_all_cpu_backtrace() will
      be taken as unknown reason NMI interrupts.
      
      This patch uses a test_and_set to avoid the problem, and stop
      the arch_trigger_all_cpu_backtrace() from calling to avoid
      dumping a double cpu backtrace info when there is already a
      trigger_all_cpu_backtrace() in progress.
      Signed-off-by: default avatarDongdong Deng <dongdong.deng@windriver.com>
      Reviewed-by: default avatarBruce Ashfield <bruce.ashfield@windriver.com>
      Cc: fweisbec@gmail.com
      LKML-Reference: <1294198689-15447-2-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      554ec063
    • Don Zickus's avatar
      x86: Only call smp_processor_id in non-preempt cases · 9ab181fa
      Don Zickus authored
      There are some paths that walk the die_chain with preemption on.
      Make sure we are in an NMI call before we start doing anything.
      
      This was triggered by do_general_protection calling notify_die
      with DIE_GPF.
      Reported-by: default avatarJan Kiszka <jan.kiszka@web.de>
      Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
      LKML-Reference: <1294198689-15447-1-git-send-email-dzickus@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      9ab181fa
    • Ingo Molnar's avatar
      Merge commit 'v2.6.37' into perf/core · aef1b9ce
      Ingo Molnar authored
      Merge reason: Add the final .37 tree.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      aef1b9ce
    • Linus Torvalds's avatar
      Linux 2.6.37 · 3c0eee3f
      Linus Torvalds authored
      3c0eee3f
  4. 04 Jan, 2011 14 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 65f42886
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
        ipv4/route.c: respect prefsrc for local routes
        bridge: stp: ensure mac header is set
        bridge: fix br_multicast_ipv6_rcv for paged skbs
        atl1: fix oops when changing tx/rx ring params
        drivers/atm/atmtcp.c: add missing atm_dev_put
        starfire: Fix dma_addr_t size test for MIPS
        tg3: fix return value check in tg3_read_vpd()
        Broadcom CNIC core network driver: fix mem leak on allocation failures in cnic_alloc_uio_rings()
        ISDN, Gigaset: Fix memory leak in do_disconnect_req()
        CAN: Use inode instead of kernel address for /proc file
        skfp: testing the wrong variable in skfp_driver_init()
        ppp: allow disabling multilink protocol ID compression
        ehea: Avoid changing vlan flags
        ueagle-atm: fix PHY signal initialization race
      65f42886
    • Joel Sing's avatar
      ipv4/route.c: respect prefsrc for local routes · 9fc3bbb4
      Joel Sing authored
      The preferred source address is currently ignored for local routes,
      which results in all local connections having a src address that is the
      same as the local dst address. Fix this by respecting the preferred source
      address when it is provided for local routes.
      
      This bug can be demonstrated as follows:
      
       # ifconfig dummy0 192.168.0.1
       # ip route show table local | grep local.*dummy0
       local 192.168.0.1 dev dummy0  proto kernel  scope host  src 192.168.0.1
       # ip route change table local local 192.168.0.1 dev dummy0 \
           proto kernel scope host src 127.0.0.1
       # ip route show table local | grep local.*dummy0
       local 192.168.0.1 dev dummy0  proto kernel  scope host  src 127.0.0.1
      
      We now establish a local connection and verify the source IP
      address selection:
      
       # nc -l 192.168.0.1 3128 &
       # nc 192.168.0.1 3128 &
       # netstat -ant | grep 192.168.0.1:3128.*EST
       tcp        0      0 192.168.0.1:3128        192.168.0.1:33228 ESTABLISHED
       tcp        0      0 192.168.0.1:33228       192.168.0.1:3128  ESTABLISHED
      Signed-off-by: default avatarJoel Sing <jsing@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9fc3bbb4
    • Christoph Hellwig's avatar
      remove trim_fs method from Documentation/filesystems/Locking · 8a87694e
      Christoph Hellwig authored
      The ->trim_fs has been removed meanwhile, so remove it from the documentation
      as well.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reported-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8a87694e
    • Thomas Renninger's avatar
      perf timechart: Adjust perf timechart to the new power events · 20c457b8
      Thomas Renninger authored
      builtin-timechart must only pass -e power:xy events if they are supported by
      the running kernel, otherwise try to fetch the old power:power{start,end}
      events.
      
      For this I added the tiny helper function:
      
         int is_valid_tracepoint(const char *event_string)
      
      to parse-events.[hc], which could be more generic as an interface and support
      hardware/software/... events, not only tracepoints, but someone else could
      extend that if needed...
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Acked-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Acked-by: default avatarJean Pihet <j-pihet@ti.com>
      LKML-Reference: <1294073445-14812-4-git-send-email-trenn@suse.de>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      20c457b8
    • Thomas Renninger's avatar
      perf: Clean up power events by introducing new, more generic ones · 25e41933
      Thomas Renninger authored
      Add these new power trace events:
      
       power:cpu_idle
       power:cpu_frequency
       power:machine_suspend
      
      The old C-state/idle accounting events:
        power:power_start
        power:power_end
      
      Have now a replacement (but we are still keeping the old
      tracepoints for compatibility):
      
        power:cpu_idle
      
      and
        power:power_frequency
      
      is replaced with:
        power:cpu_frequency
      
      power:machine_suspend is newly introduced.
      
      Jean Pihet has a patch integrated into the generic layer
      (kernel/power/suspend.c) which will make use of it.
      
      the type= field got removed from both, it was never
      used and the type is differed by the event type itself.
      
      perf timechart userspace tool gets adjusted in a separate patch.
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Acked-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Acked-by: default avatarJean Pihet <jean.pihet@newoldbits.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: rjw@sisk.pl
      LKML-Reference: <1294073445-14812-3-git-send-email-trenn@suse.de>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      LKML-Reference: <1290072314-31155-2-git-send-email-trenn@suse.de>
      25e41933
    • Thomas Renninger's avatar
      perf: Do not export power_frequency, but power_start event · 61a0d49c
      Thomas Renninger authored
      power_frequency moved to drivers/cpufreq/cpufreq.c which has
      to be compiled in, no need to export it.
      
      intel_idle can a be module though...
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      Acked-by: default avatarJean Pihet <jean.pihet@newoldbits.com>
      Cc: Jean Pihet <j-pihet@ti.com>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: rjw@sisk.pl
      LKML-Reference: <1294073445-14812-2-git-send-email-trenn@suse.de>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      LKML-Reference: <1290072314-31155-2-git-send-email-trenn@suse.de>
      61a0d49c
    • Ingo Molnar's avatar
      Merge branch 'perf/test' of... · 92858553
      Ingo Molnar authored
      Merge branch 'perf/test' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/core
      92858553
    • Ingo Molnar's avatar
      Merge commit 'v2.6.37-rc8' into perf/core · cc222196
      Ingo Molnar authored
      Merge reason: pick up latest -rc.
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      cc222196
    • Arnaldo Carvalho de Melo's avatar
      perf test: Add test for counting open syscalls · d854861c
      Arnaldo Carvalho de Melo authored
      To test the use of the perf_evsel class on something other than
      the tools from where we refactored code to create it.
      
      It calls open() N times and then checks if the event created to
      monitor it returns N events.
      
      [acme@felicio linux]$ perf test
       1: vmlinux symtab matches kallsyms: Ok
       2: detect open syscall event: Ok
      [acme@felicio linux]$
      
      It does.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Han Pingtian <phan@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d854861c
    • Arnaldo Carvalho de Melo's avatar
      perf evsel: Auto allocate resources needed for some methods · 4eed11d5
      Arnaldo Carvalho de Melo authored
      While writing the first user of the routines created from the ad-hoc
      routines in the existing builtins I noticed that the resulting set of
      calls was too long, reduce it by doing some best effort allocations.
      
      Tools that need to operate on multiple threads and cpus should pre-allocate
      enough resources by explicitely calling the perf_evsel__alloc_{fd,counters}
      methods.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4eed11d5
    • Arnaldo Carvalho de Melo's avatar
      perf evsel: Use {cpu,thread}_map to shorten list of parameters · 86bd5e86
      Arnaldo Carvalho de Melo authored
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      86bd5e86
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Refactor all_tids to hold nr and the map · 5c98d466
      Arnaldo Carvalho de Melo authored
      So that later, we can pass the thread_map instance instead of
      (thread_num, thread_map) for things like perf_evsel__open and friends,
      just like was done with cpu_map.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5c98d466
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Refactor cpumap to hold nr and the map · 60d567e2
      Arnaldo Carvalho de Melo authored
      So that later, we can pass the cpu_map instance instead of (nr_cpus, cpu_map)
      for things like perf_evsel__open and friends.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      60d567e2
    • Arnaldo Carvalho de Melo's avatar
      perf evsel: Introduce per cpu and per thread open helpers · 48290609
      Arnaldo Carvalho de Melo authored
      Abstracting away the loops needed to create the various event fd handlers.
      
      The users have to pass a confiruged perf->evsel.attr field, which is already
      usable after perf_evsel__new (constructor) time, using defaults.
      
      Comes out of the ad-hoc routines in builtin-stat, that now uses it.
      
      Fixed a small silly bug where we were die()ing before killing our
      children, dysfunctional family this one 8-)
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      48290609