1. 27 11月, 2015 13 次提交
  2. 26 11月, 2015 4 次提交
    • I
      Merge tag 'perf-core-for-mingo-2' of... · a95a49fa
      Ingo Molnar 提交于
      Merge tag 'perf-core-for-mingo-2' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
      
      Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
      
      User visible changes:
      
        - Fix to free temporal Dwarf_Frame correctly in 'perf probe', fixing a
          regression introduced in perf/core that prevented, at least, adding
          an uprobe collecting function parameter values (Masami Hiramatsu)
      
        - Fix output of %llu for 64 bit values read on 32 bit machines in
          libtraceevent (Steven Rostedt)
      
      Developer visible:
      
        - Clean CFLAGS and LDFLAGS for fixdep in tools/build (Wang Nan)
      
        - Don't do a feature check when cleaning tools/lib/bpf (Wang Nan)
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      a95a49fa
    • W
      tools lib bpf: Don't do a feature check when cleaning · d8ad6a15
      Wang Nan 提交于
      Before this patch libbpf always do feature check even when cleaning.
      
      For example:
      
        $ cd kernel/tools/lib/bpf
        $ make
      
        Auto-detecting system features:
        ...                        libelf: [ on  ]
        ...                           bpf: [ on  ]
      
          CC       libbpf.o
          CC       bpf.o
          LD       libbpf-in.o
          LINK     libbpf.a
          LINK     libbpf.so
        $ make clean
          CLEAN    libbpf
          CLEAN    core-gen
        $ make clean
      
        Auto-detecting system features:
        ...                        libelf: [ on  ]
        ...                           bpf: [ on  ]
      
          CLEAN    libbpf
          CLEAN    core-gen
        $
      
      Although the first 'make clean' doesn't show feature check result, it
      still does the check. No output because check result is similar to
      FEATURE-DUMP.libbpf.
      
      This patch uses same method as perf to turn off feature checking when
      'make clean'.
      Reported-and-Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1448372181-151723-3-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      d8ad6a15
    • W
      tools build: Clean CFLAGS and LDFLAGS for fixdep · 5725dd8f
      Wang Nan 提交于
      Sometimes passing variables to tools/build is dangerous. For example, on
      my platform there is a gcc problem (gcc 4.8.1):
      
      It passes the stackprotector-all feature check:
      
        $ gcc -fstack-protector-all -c ./test.c
        $ echo $?
        0
      
      But requires LDFLAGS support if separate compiling and linking:
        $ gcc -fstack-protector-all -c ./test.c
        $ gcc ./test.o
        ./test.o: In function `main':
        test.c:(.text+0xb): undefined reference to `__stack_chk_guard'
        test.c:(.text+0x21): undefined reference to `__stack_chk_guard'
        collect2: error: ld returned 1 exit status
        $ gcc -fstack-protector-all ./test.o
        $ echo $?
        0
        $ gcc ./test.o -lssp
        $ echo $?
        0
        $
      
      In this environment building perf throws an error:
      
        $ make
          BUILD:   Doing 'make -j24' parallel build
        config/Makefile:344: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR
        config/Makefile:403: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev
        config/Makefile:418: slang not found, disables TUI support. Please install slang-devel or libslang-dev
        config/Makefile:432: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
        config/Makefile:564: No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling
        config/Makefile:606: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev
          CC       fixdep.o
          LD       fixdep-in.o
          LINK     fixdep
        fixdep-in.o: In function `parse_dep_file':
        /kernel/tools/build/fixdep.c:47: undefined reference to `__stack_chk_guard'
        /kernel/tools/build/fixdep.c:117: undefined reference to `__stack_chk_guard'
        fixdep-in.o: In function `main':
        /kernel-hydrogen/tools/build/fixdep.c:156: undefined reference to `__stack_chk_guard'
        /kernel/tools/build/fixdep.c:168: undefined reference to `__stack_chk_guard'
        collect2: error: ld returned 1 exit status
        make[2]: *** [fixdep] Error 1
        make[1]: *** [fixdep] Error 2
        make: *** [all] Error 2
      
      This is because the CFLAGS used in building perf pollutes the CFLAGS
      used for fixdep, passing -fstack-protector-all to buiold fixdep which is
      obviously not required. Since fixdep is a small host side tool, we
      should keep its CFLAGS/LDFLAGS simple and clean.
      
      This patch clears the CFLAGS and LDFLAGS passed when building fixdep, so
      such gcc problem won't block the perf build process.
      Signed-off-by: NWang Nan <wangnan0@huawei.com>
      Acked-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Zefan Li <lizefan@huawei.com>
      Cc: pi3orama@163.com
      Link: http://lkml.kernel.org/r/1448372181-151723-2-git-send-email-wangnan0@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5725dd8f
    • M
      perf probe: Fix to free temporal Dwarf_Frame correctly · 4d3b1626
      Masami Hiramatsu 提交于
      The commit 05c8d802 ("perf probe: Fix to free temporal Dwarf_Frame")
      tried to fix the memory leak of Dwarf_Frame, but it released the frame
      at wrong point. Since the dwarf_frame_cfa(frame, &pf->fb_ops, &nops) can
      return an address inside the frame data structure to pf->fb_ops, we can
      not release the frame before using pf->fb_ops.
      
      This reverts the commit and releases the frame afterwards (right before
      returning from call_probe_finder) correctly.
      Reported-and-Tested-by: NArnaldo Carvalho de Melo <acme@kernel.org>
      Reported-by: NMichael Petlan <mpetlan@redhat.com>
      Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Wang Nan <wangnan0@huawei.com>
      Fixes: 05c8d802 ("perf probe: Fix to free temporal Dwarf_Frame")
      LPU-Reference: 20151125103432.1473.31009.stgit@localhost.localdomain
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      4d3b1626
  3. 24 11月, 2015 9 次提交
  4. 23 11月, 2015 14 次提交
    • A
      perf/x86: Handle multiple umask bits for BDW CYCLE_ACTIVITY.* · b7883a1c
      Andi Kleen 提交于
      The earlier constraint fix for Broadwell CYCLE_ACTIVITY.*
      forced umask 8 to counter 2. For this it used UEVENT,
      to match the complete umask.
      
      The event list for Broadwell has an additional
      STALLS_L1D_PENDIND event that uses umask 8, but also
      sets other bits in the umask.  The earlier strict umask match
      didn't handle this case.
      
      Add a new UBIT_EVENT constraint macro that only matches
      the specified bits in the umask. Then use that macro
      to handle CYCLE_ACTIVITY.* on Broadwell.
      
      The documented event also uses cmask, but there's no
      need to let the event scheduler know about the cmask,
      as the scheduling restriction is only tied to the umask.
      Reported-by: NGrant Ayers <ayers@cs.stanford.edu>
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Link: http://lkml.kernel.org/r/1447719667-9998-1-git-send-email-andi@firstfloor.org
      [ Filled in the missing email address of Grant Ayers - hopefully I got the right one. ]
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      b7883a1c
    • T
      perf, x86: Stop Intel PT before kdump starts · da06a43d
      Takao Indoh 提交于
      This patch stops Intel PT logging and saves its registers in memory
      before kdump is started. This feature is needed to prevent Intel PT from
      overwriting its log buffer after panic, and saved registers are needed to
      find the last position where Intel PT wrote data.
      
      After the crash dump is captured by kdump, users can retrieve the log buffer
      from the vmcore and use it to investigate bad kernel behavior.
      Signed-off-by: NTakao Indoh <indou.takao@jp.fujitsu.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Alexander Shishkin<alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: H.Peter Anvin <hpa@zytor.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Link: http://lkml.kernel.org/r/1446614553-6072-3-git-send-email-indou.takao@jp.fujitsu.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      da06a43d
    • T
      perf/x86/intel/pt: Add interface to stop Intel PT logging · 24cc12b1
      Takao Indoh 提交于
      This patch add a function for external components to stop Intel PT.
      Basically this function is used when kernel panic occurs. When it is
      called, the intel_pt driver disables Intel PT and saves its registers
      using pt_event_stop(), which is also used by pmu.stop handler.
      
      This function stops Intel PT on the CPU where it is working, therefore
      users of it need to call it for each CPU to stop all logging.
      Signed-off-by: NTakao Indoh <indou.takao@jp.fujitsu.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Alexander Shishkin<alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: H.Peter Anvin <hpa@zytor.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Link: http://lkml.kernel.org/r/1446614553-6072-2-git-send-email-indou.takao@jp.fujitsu.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      24cc12b1
    • A
      perf/x86: Add option to disable reading branch flags/cycles · b16a5b52
      Andi Kleen 提交于
      With LBRv5 reading the extra LBR flags like mispredict, TSX, cycles is
      not free anymore, as it has moved to a separate MSR.
      
      For callstack mode we don't need any of this information; so we can
      avoid the unnecessary MSR read. Add flags to the perf interface where
      perf record can request not collecting this information.
      
      Add branch_sample_type flags for CYCLES and FLAGS. It's a bit unusual
      for branch_sample_types to be negative (disable), not positive (enable),
      but since the legacy ABI reported the flags we need some form of
      explicit disabling to avoid breaking the ABI.
      
      After we have the flags the x86 perf code can keep track if any users
      need the flags. If noone needs it the information is not collected.
      
      This cuts down the cost of LBR callstack on Skylake significantly.
      Profiling a kernel build with LBR call stack the average run time of
      the PMI handler drops by 43%.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: acme@kernel.org
      Cc: jolsa@kernel.org
      Link: http://lkml.kernel.org/r/1445366797-30894-2-git-send-email-andi@firstfloor.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      b16a5b52
    • A
      perf/x86: Optimize stack walk user accesses · 75925e1a
      Andi Kleen 提交于
      Change the perf user stack walking to use the new
      __copy_from_user_nmi(), and split each access into word sized transfer
      sizes. This allows to inline the complete access and optimize it all
      into a single load.
      
      The main advantage is that this avoids the overhead of double page
      faults.  When normal copy_from_user() fails it reexecutes the copy to
      compute an accurate number of non copied bytes. This leads to
      executing the expensive page fault twice.
      
      While walking stacks having a fault at some point is relatively common
      (typically when some part of the program isn't compiled with frame
      pointers), so this is a large overhead.
      
      With the optimized copies we avoid this problem because they only do
      all accesses once. And of course they're much faster too when the
      access does not fault because they're just single instructions instead
      of complex function calls.
      
      While profiling a kernel build with -g, the patch brings down the
      average time of the PMI handler from 966ns to 552ns (-43%).
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Link: http://lkml.kernel.org/r/1445551641-13379-2-git-send-email-andi@firstfloor.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      75925e1a
    • A
      x86: Add an inlined __copy_from_user_nmi() variant · 10013ebb
      Andi Kleen 提交于
      Add a inlined __ variant of copy_from_user_nmi. The inlined variant allows
      the user to:
      
       - batch the access_ok() check for multiple accesses
      
       - avoid having a pagefault_disable/enable() on every access if the
         caller already ensures disabled page faults due to its context.
      
       - get all the optimizations in copy_*_user() for small constant sized
         transfers
      
      It is just a define to __copy_from_user_inatomic().
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/1445551641-13379-1-git-send-email-andi@firstfloor.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      10013ebb
    • I
      Merge tag 'perf-core-for-mingo' of... · 8c2accc8
      Ingo Molnar 提交于
      Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
      
      Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
      
      User visible changes:
      
        - Allows BPF scriptlets specify arguments to be fetched using
          DWARF info, using a prologue generated at compile/build time (He Kuang, Wang Nan)
      
        - Allow attaching BPF scriptlets to module symbols (Wang Nan)
      
        - Allow attaching BPF scriptlets to userspace code using uprobe (Wang Nan)
      
        - BPF programs now can specify 'perf probe' tunables via its section name,
          separating key=val values using semicolons (Wang Nan)
      
      Testing some of these new BPF features:
      
        Use case: get callchains when receiving SSL packets, filter then in the
                  kernel, at arbitrary place.
      
        # cat ssl.bpf.c
        #define SEC(NAME) __attribute__((section(NAME), used))
      
        struct pt_regs;
      
        SEC("func=__inet_lookup_established hnum")
        int func(struct pt_regs *ctx, int err, unsigned short port)
        {
                return err == 0 && port == 443;
        }
      
        char _license[] SEC("license") = "GPL";
        int  _version   SEC("version") = LINUX_VERSION_CODE;
        #
        # perf record -a -g -e ssl.bpf.c
        ^C[ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.787 MB perf.data (3 samples) ]
        # perf script | head -30
        swapper     0 [000] 58783.268118: perf_bpf_probe:func: (ffffffff816a0f60) hnum=0x1bb
      	 8a0f61 __inet_lookup_established (/lib/modules/4.3.0+/build/vmlinux)
      	 896def ip_rcv_finish (/lib/modules/4.3.0+/build/vmlinux)
      	 8976c2 ip_rcv (/lib/modules/4.3.0+/build/vmlinux)
      	 855eba __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
      	 8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
      	 8572a8 process_backlog (/lib/modules/4.3.0+/build/vmlinux)
      	 856b11 net_rx_action (/lib/modules/4.3.0+/build/vmlinux)
      	 2a284b __do_softirq (/lib/modules/4.3.0+/build/vmlinux)
      	 2a2ba3 irq_exit (/lib/modules/4.3.0+/build/vmlinux)
      	 96b7a4 do_IRQ (/lib/modules/4.3.0+/build/vmlinux)
      	 969807 ret_from_intr (/lib/modules/4.3.0+/build/vmlinux)
      	 2dede5 cpu_startup_entry (/lib/modules/4.3.0+/build/vmlinux)
      	 95d5bc rest_init (/lib/modules/4.3.0+/build/vmlinux)
      	1163ffa start_kernel ([kernel.vmlinux].init.text)
      	11634d7 x86_64_start_reservations ([kernel.vmlinux].init.text)
      	1163623 x86_64_start_kernel ([kernel.vmlinux].init.text)
      
        qemu-system-x86  9178 [003] 58785.792417: perf_bpf_probe:func: (ffffffff816a0f60) hnum=0x1bb
      	 8a0f61 __inet_lookup_established (/lib/modules/4.3.0+/build/vmlinux)
      	 896def ip_rcv_finish (/lib/modules/4.3.0+/build/vmlinux)
      	 8976c2 ip_rcv (/lib/modules/4.3.0+/build/vmlinux)
      	 855eba __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
      	 8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
      	 856660 netif_receive_skb_internal (/lib/modules/4.3.0+/build/vmlinux)
      	 8566ec netif_receive_skb_sk (/lib/modules/4.3.0+/build/vmlinux)
      	   430a br_handle_frame_finish ([bridge])
      	   48bc br_handle_frame ([bridge])
      	 855f44 __netif_receive_skb_core (/lib/modules/4.3.0+/build/vmlinux)
      	 8565d8 __netif_receive_skb (/lib/modules/4.3.0+/build/vmlinux)
        #
      
          Use 'perf probe' various options to list functions, see what variables can
          be collected at any given point, experiment first collecting without a filter,
          then filter, use it together with 'perf trace', 'perf top', with or without
          callchains, if it explodes, please tell us!
      
        - Introduce a new callchain mode: "folded", that will list per line
          representations of all callchains for a give histogram entry, facilitating
          'perf report' output processing by other tools, such as Brendan Gregg's
          flamegraph tools (Namhyung Kim)
      
        E.g:
      
       # perf report | grep -v ^# | head
          18.37%     0.00%  swapper  [kernel.kallsyms]   [k] cpu_startup_entry
                          |
                          ---cpu_startup_entry
                             |
                             |--12.07%--start_secondary
                             |
                              --6.30%--rest_init
                                        start_kernel
                                        x86_64_start_reservations
                                        x86_64_start_kernel
        #
      
       Becomes, in "folded" mode:
      
       # perf report -g folded | grep -v ^# | head -5
           18.37%     0.00%  swapper [kernel.kallsyms]   [k] cpu_startup_entry
         12.07% cpu_startup_entry;start_secondary
          6.30% cpu_startup_entry;rest_init;start_kernel;x86_64_start_reservations;x86_64_start_kernel
           16.90%     0.00%  swapper [kernel.kallsyms]   [k] call_cpuidle
         11.23% call_cpuidle;cpu_startup_entry;start_secondary
          5.67% call_cpuidle;cpu_startup_entry;rest_init;start_kernel;x86_64_start_reservations;x86_64_start_kernel
           16.90%     0.00%  swapper [kernel.kallsyms]   [k] cpuidle_enter
         11.23% cpuidle_enter;call_cpuidle;cpu_startup_entry;start_secondary
          5.67% cpuidle_enter;call_cpuidle;cpu_startup_entry;rest_init;start_kernel;x86_64_start_reservations;x86_64_start_kernel
           15.12%     0.00%  swapper [kernel.kallsyms]   [k] cpuidle_enter_state
        #
      
         The user can also select one of "count", "period" or "percent" as the first column.
      
      Infrastructure changes:
      
        - Fix multiple leaks found with Valgrind and a refcount
          debugger (Masami Hiramatsu)
      
        - Add further 'perf test' entries for BPF and LLVM (Wang Nan)
      
        - Improve 'perf test' to suport subtests, so that the series of tests
          performed in the LLVM and BPF main tests appear in the default 'perf test'
          output (Wang Nan)
      
        - Move memdup() from tools/perf to tools/lib/string.c (Arnaldo Carvalho de Melo)
      
        - Adopt strtobool() from the kernel into tools/lib/ (Wang Nan)
      
        - Fix selftests_install tools/ Makefile rule (Kevin Hilman)
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      8c2accc8
    • P
      treewide: Remove old email address · 90eec103
      Peter Zijlstra 提交于
      There were still a number of references to my old Red Hat email
      address in the kernel source. Remove these while keeping the
      Red Hat copyright notices intact.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      90eec103
    • A
      perf/x86: Fix LBR call stack save/restore · b28ae956
      Andi Kleen 提交于
      This fixes a bug I added in the following commit:
      
        90405aa0 ("perf/x86/intel/lbr: Limit LBR accesses to TOS in callstack mode")
      
      The bug could lead to lost LBR call stacks. When restoring the LBR state
      we need to use the TOS of the previous context, not the current context.
      To do that we need to save/restore the TOS.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: acme@kernel.org
      Cc: jolsa@kernel.org
      Link: http://lkml.kernel.org/r/1445366797-30894-1-git-send-email-andi@firstfloor.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      b28ae956
    • P
      perf: Update email address in MAINTAINERS · daecbd26
      Peter Zijlstra 提交于
      While still valid, I'm trying to phase out this email address.
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      daecbd26
    • S
      perf/core: Robustify the perf_cgroup_from_task() RCU checks · 614e4c4e
      Stephane Eranian 提交于
      This patch reinforces the lockdep checks performed by
      perf_cgroup_from_tsk() by passing the perf_event_context
      whenever possible. It is okay to not hold the RCU read lock
      when we know we hold the ctx->lock. This patch makes sure this
      property holds.
      
      In some functions, such as perf_cgroup_sched_in(), we do not
      pass the context because we are sure we are holding the RCU
      read lock.
      Signed-off-by: NStephane Eranian <eranian@google.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: edumazet@google.com
      Link: http://lkml.kernel.org/r/1447322404-10920-3-git-send-email-eranian@google.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      614e4c4e
    • S
      perf/core: Fix RCU problem with cgroup context switching code · ddaaf4e2
      Stephane Eranian 提交于
      The RCU checker detected RCU violation in the cgroup switching routines
      perf_cgroup_sched_in() and perf_cgroup_sched_out(). We were dereferencing
      cgroup from task without holding the RCU lock.
      
      Fix this by holding the RCU read lock. We move the locking from
      perf_cgroup_switch() to avoid double locking.
      Signed-off-by: NStephane Eranian <eranian@google.com>
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: edumazet@google.com
      Link: http://lkml.kernel.org/r/1447322404-10920-2-git-send-email-eranian@google.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      ddaaf4e2
    • L
      Linux 4.4-rc2 · 1ec21837
      Linus Torvalds 提交于
      1ec21837
    • L
      Merge branch 'akpm' (patches from Andrew) · 104e2a6f
      Linus Torvalds 提交于
      Merge slub bulk allocator updates from Andrew Morton:
       "This missed the merge window because I was waiting for some repairs to
        come in.  Nothing actually uses the bulk allocator yet and the changes
        to other code paths are pretty small.  And the net guys are waiting
        for this so they can start merging the client code"
      
      More comments from Jesper Dangaard Brouer:
       "The kmem_cache_alloc_bulk() call, in mm/slub.c, were included in
        previous kernel.  The present version contains a bug.  Vladimir
        Davydov noticed it contained a bug, when kernel is compiled with
        CONFIG_MEMCG_KMEM (see commit 03ec0ed5: "slub: fix kmem cgroup
        bug in kmem_cache_alloc_bulk").  Plus the mem cgroup counterpart in
        kmem_cache_free_bulk() were missing (see commit 03374518 "slub:
        add missing kmem cgroup support to kmem_cache_free_bulk").
      
        I don't consider the fix stable-material because there are no in-tree
        users of the API.
      
        But with known bugs (for memcg) I cannot start using the API in the
        net-tree"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        slab/slub: adjust kmem_cache_alloc_bulk API
        slub: add missing kmem cgroup support to kmem_cache_free_bulk
        slub: fix kmem cgroup bug in kmem_cache_alloc_bulk
        slub: optimize bulk slowpath free by detached freelist
        slub: support for bulk free with SLUB freelists
      104e2a6f