1. 05 9月, 2020 18 次提交
    • K
      perf vendor events amd: Enable Family 19h users by matching Zen2 events · 09b54b30
      Kim Phillips 提交于
      This enables zen3 users by reusing mostly-compatible zen2 events
      until the official public list of zen3 events is published in a
      future PPR.
      Signed-off-by: NKim Phillips <kim.phillips@amd.com>
      Acked-by: NIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Jon Grimm <jon.grimm@amd.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Martin Jambor <mjambor@suse.cz>
      Cc: Martin Liška <mliska@suse.cz>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Vijay Thakkar <vijaythakkar@me.com>
      Cc: William Cohen <wcohen@redhat.com>
      Cc: Yunfeng Ye <yeyunfeng@huawei.com>
      Link: http://lore.kernel.org/lkml/20200901220944.277505-4-kim.phillips@amd.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      09b54b30
    • K
      perf vendor events amd: Add recommended events · 08ed77e4
      Kim Phillips 提交于
      Add support for events listed in Section 2.1.15.2 "Performance
      Measurement" of "PPR for AMD Family 17h Model 31h B0 - 55803
      Rev 0.54 - Sep 12, 2019".
      
      perf now supports these new events (-e):
      
        all_dc_accesses
        all_tlbs_flushed
        l1_dtlb_misses
        l2_cache_accesses_from_dc_misses
        l2_cache_accesses_from_ic_misses
        l2_cache_hits_from_dc_misses
        l2_cache_hits_from_ic_misses
        l2_cache_misses_from_dc_misses
        l2_cache_misses_from_ic_miss
        l2_dtlb_misses
        l2_itlb_misses
        sse_avx_stalls
        uops_dispatched
        uops_retired
        l3_accesses
        l3_misses
      
      and these metrics (-M):
      
        branch_misprediction_ratio
        all_l2_cache_accesses
        all_l2_cache_hits
        all_l2_cache_misses
        ic_fetch_miss_ratio
        l2_cache_accesses_from_l2_hwpf
        l2_cache_hits_from_l2_hwpf
        l2_cache_misses_from_l2_hwpf
        l3_read_miss_latency
        l1_itlb_misses
        all_remote_links_outbound
        nps1_die_to_dram
      
      The nps1_die_to_dram event may need perf stat's --metric-no-group
      switch if the number of available data fabric counters is less
      than the number it uses (8).
      
      Committer testing:
      
      On a AMD Ryzen 3900x system:
      
      Before:
      
        # perf list all_dc_accesses   all_tlbs_flushed   l1_dtlb_misses   l2_cache_accesses_from_dc_misses   l2_cache_accesses_from_ic_misses   l2_cache_hits_from_dc_misses   l2_cache_hits_from_ic_misses   l2_cache_misses_from_dc_misses   l2_cache_misses_from_ic_miss   l2_dtlb_misses   l2_itlb_misses   sse_avx_stalls   uops_dispatched   uops_retired   l3_accesses   l3_misses | grep -v "^Metric Groups:$" | grep -v "^$"
        #
      
      After:
      
        # perf list all_dc_accesses   all_tlbs_flushed   l1_dtlb_misses   l2_cache_accesses_from_dc_misses   l2_cache_accesses_from_ic_misses   l2_cache_hits_from_dc_misses   l2_cache_hits_from_ic_misses   l2_cache_misses_from_dc_misses   l2_cache_misses_from_ic_miss   l2_dtlb_misses   l2_itlb_misses   sse_avx_stalls   uops_dispatched   uops_retired   l3_accesses   l3_misses | grep -v "^Metric Groups:$" | grep -v "^$" | grep -v "^recommended:$"
        all_dc_accesses
             [All L1 Data Cache Accesses]
        all_tlbs_flushed
             [All TLBs Flushed]
        l1_dtlb_misses
             [L1 DTLB Misses]
        l2_cache_accesses_from_dc_misses
             [L2 Cache Accesses from L1 Data Cache Misses (including prefetch)]
        l2_cache_accesses_from_ic_misses
             [L2 Cache Accesses from L1 Instruction Cache Misses (including
              prefetch)]
        l2_cache_hits_from_dc_misses
             [L2 Cache Hits from L1 Data Cache Misses]
        l2_cache_hits_from_ic_misses
             [L2 Cache Hits from L1 Instruction Cache Misses]
        l2_cache_misses_from_dc_misses
             [L2 Cache Misses from L1 Data Cache Misses]
        l2_cache_misses_from_ic_miss
             [L2 Cache Misses from L1 Instruction Cache Misses]
        l2_dtlb_misses
             [L2 DTLB Misses & Data page walks]
        l2_itlb_misses
             [L2 ITLB Misses & Instruction page walks]
        sse_avx_stalls
             [Mixed SSE/AVX Stalls]
        uops_dispatched
             [Micro-ops Dispatched]
        uops_retired
             [Micro-ops Retired]
        l3_accesses
             [L3 Accesses. Unit: amd_l3]
        l3_misses
             [L3 Misses (includes Chg2X). Unit: amd_l3]
        #
      
        # perf stat -a -e all_dc_accesses,all_tlbs_flushed,l1_dtlb_misses,l2_cache_accesses_from_dc_misses,l2_cache_accesses_from_ic_misses,l2_cache_hits_from_dc_misses,l2_cache_hits_from_ic_misses,l2_cache_misses_from_dc_misses,l2_cache_misses_from_ic_miss,l2_dtlb_misses,l2_itlb_misses,sse_avx_stalls,uops_dispatched,uops_retired,l3_accesses,l3_misses sleep 2
      
         Performance counter stats for 'system wide':
      
             433,439,949      all_dc_accesses                                               (35.66%)
                     443      all_tlbs_flushed                                              (35.66%)
               2,985,885      l1_dtlb_misses                                                (35.66%)
              18,318,019      l2_cache_accesses_from_dc_misses                                     (35.68%)
              50,114,810      l2_cache_accesses_from_ic_misses                                     (35.72%)
              12,423,978      l2_cache_hits_from_dc_misses                                     (35.74%)
              40,703,103      l2_cache_hits_from_ic_misses                                     (35.74%)
               6,698,673      l2_cache_misses_from_dc_misses                                     (35.74%)
              12,090,892      l2_cache_misses_from_ic_miss                                     (35.74%)
                 614,267      l2_dtlb_misses                                                (35.74%)
                 216,036      l2_itlb_misses                                                (35.74%)
                  11,977      sse_avx_stalls                                                (35.74%)
             999,276,223      uops_dispatched                                               (35.73%)
           1,075,311,620      uops_retired                                                  (35.69%)
               1,420,763      l3_accesses
                 540,164      l3_misses
      
             2.002344121 seconds time elapsed
      
        # perf stat -a -e all_dc_accesses,all_tlbs_flushed,l1_dtlb_misses,l2_cache_accesses_from_dc_misses,l2_cache_accesses_from_ic_misses sleep 2
      
         Performance counter stats for 'system wide':
      
             175,943,104      all_dc_accesses
                     310      all_tlbs_flushed
               2,280,359      l1_dtlb_misses
              11,700,151      l2_cache_accesses_from_dc_misses
              25,414,963      l2_cache_accesses_from_ic_misses
      
             2.001957818 seconds time elapsed
      
        #
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537Signed-off-by: NKim Phillips <kim.phillips@amd.com>
      Acked-by: NIan Rogers <irogers@google.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Jon Grimm <jon.grimm@amd.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Martin Jambor <mjambor@suse.cz>
      Cc: Martin Liška <mliska@suse.cz>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Vijay Thakkar <vijaythakkar@me.com>
      Cc: William Cohen <wcohen@redhat.com>
      Cc: Yunfeng Ye <yeyunfeng@huawei.com>
      Link: http://lore.kernel.org/lkml/20200901220944.277505-3-kim.phillips@amd.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      08ed77e4
    • K
      perf vendor events amd: Add ITLB Instruction Fetch Hits event for zen1 · ab22eea3
      Kim Phillips 提交于
      The ITLB Instruction Fetch Hits event isn't documented even in later
      zen1 PPRs, but it seems to count correctly on zen1 hardware.
      
      Add it to zen1 group so zen1 users can use the upcoming IC Fetch Miss
      Ratio Metric.
      
      The IF1G, 1IF2M, IF4K (Instruction fetches to a 1 GB, 2 MB, and 4K page)
      unit masks are not added because unlike zen2 hardware, zen1 hardware
      counts all its unit masks with a 0 unit mask according to the old
      convention:
      
        zen1$ perf stat -e cpu/event=0x94/,cpu/event=0x94,umask=0xff/ sleep 1
      
         Performance counter stats for 'sleep 1':
      
                   211,318      cpu/event=0x94/u
                   211,318      cpu/event=0x94,umask=0xff/u
      
      Rome/zen2:
      
        zen2$ perf stat -e cpu/event=0x94/,cpu/event=0x94,umask=0xff/ sleep 1
      
         Performance counter stats for 'sleep 1':
      
                         0      cpu/event=0x94/u
                   190,744      cpu/event=0x94,umask=0xff/u
      Signed-off-by: NKim Phillips <kim.phillips@amd.com>
      Acked-by: NIan Rogers <irogers@google.com>
      Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> # on Zen2 only (3900x)
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Jon Grimm <jon.grimm@amd.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Martin Jambor <mjambor@suse.cz>
      Cc: Martin Liška <mliska@suse.cz>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Vijay Thakkar <vijaythakkar@me.com>
      Cc: William Cohen <wcohen@redhat.com>
      Cc: Yunfeng Ye <yeyunfeng@huawei.com>
      Link: http://lore.kernel.org/lkml/20200901220944.277505-2-kim.phillips@amd.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ab22eea3
    • K
      perf vendor events amd: Add L2 Prefetch events for zen1 · 60d80452
      Kim Phillips 提交于
      Later revisions of PPRs that post-date the original Family 17h events
      submission patch add these events.
      
      Specifically, they were not in this 2017 revision of the F17h PPR:
      
      Processor Programming Reference (PPR) for AMD Family 17h Model 01h, Revision B1 Processors Rev 1.14 - April 15, 2017
      
      But e.g., are included in this 2019 version of the PPR:
      
      Processor Programming Reference (PPR) for AMD Family 17h Model 18h, Revision B1 Processors Rev. 3.14 - Sep 26, 2019
      
      Fixes: 98c07a8f ("perf vendor events amd: perf PMU events for AMD Family 17h")
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537Signed-off-by: NKim Phillips <kim.phillips@amd.com>
      Reviewed-by: NIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Jon Grimm <jon.grimm@amd.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Martin Jambor <mjambor@suse.cz>
      Cc: Martin Liška <mliska@suse.cz>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: stable@vger.kernel.org
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Vijay Thakkar <vijaythakkar@me.com>
      Cc: William Cohen <wcohen@redhat.com>
      Cc: Yunfeng Ye <yeyunfeng@huawei.com>
      Link: http://lore.kernel.org/lkml/20200901220944.277505-1-kim.phillips@amd.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      60d80452
    • C
      perf: ftrace: Add filter support for option -F/--funcs · 2ae05fe0
      Changbin Du 提交于
      Same as 'perf probe -F', this patch adds filter support for the ftrace
      subcommand option '-F, --funcs <[FILTER]>'.
      
      Here is an example that only lists functions which start with 'vfs_':
      
        $ sudo perf ftrace -F vfs_*
        vfs_fadvise
        vfs_fallocate
        vfs_truncate
        vfs_open
        vfs_setpos
        vfs_llseek
        vfs_readf
        vfs_writef
        ...
      Suggested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NChangbin Du <changbin.du@gmail.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200904152357.6053-1-changbin.du@gmail.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      2ae05fe0
    • A
      perf tools: Consolidate close_control_option()'s into one function · ee7fe31e
      Adrian Hunter 提交于
      Consolidate control option fifo closing into one function.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Suggested-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200903122937.25691-1-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ee7fe31e
    • A
      perf intel-pt: Document snapshot control command · 98189236
      Adrian Hunter 提交于
      The documentation describes snapshot mode.  Update it to include the new
      snapshot control command.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200901093758.32293-7-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      98189236
    • A
      perf annotate: Add 'ret' (intel disasm style) as an alias for 'retq' · 0b157b10
      Arnaldo Carvalho de Melo 提交于
      When we use the 'intel' disassembler style we get 'ret' instead of
      'retq', so add that as an alias.
      
        # perf annotate --disassembler-style=intel --stdio2 acpi_processor_ffh_cstate_enter > before
      
      Apply this patch and then:
      
        # perf annotate --disassembler-style=intel --stdio2 acpi_processor_ffh_cstate_enter > after
        # diff -u before after
        --- before	2020-09-04 14:10:47.768414634 -0300
        +++ after	2020-09-04 14:10:59.116681039 -0300
        @@ -33,7 +33,7 @@
                       test    al,0x8
                     ↓ je      97
                       and     DWORD PTR gs:[rip+0x7e548509],0x7fffffff
        -        97:   ret
        +        97: ← ret
                       mov     rax,QWORD PTR gs:0x17bc0
                       lock    or      BYTE PTR [rax+0x2],0x20
                       mov     rax,QWORD PTR [rax]
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Martin Liška <mliska@suse.cz>
      Cc: Matt P. Dziubinski <matdzb@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
      Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0b157b10
    • A
      perf annotate: Allow configuring the 'disassembler_style' knob via 'perf config' · bbe54468
      Arnaldo Carvalho de Melo 提交于
        # perf annotate --stdio2 acpi_processor_ffh_cstate_enter > default
        # perf config annotate.disassembler_style=intel
        # perf config annotate.disassembler_style
        annotate.disassembler_style=intel
        # perf annotate --stdio2 acpi_processor_ffh_cstate_enter > intel
        # diff -u default intel
        --- default	2020-09-04 13:09:26.019205732 -0300
        +++ intel	2020-09-04 13:09:52.823795081 -0300
        @@ -1,42 +1,42 @@
         Samples: 1K of event 'cycles', 4000 Hz, Event count (approx.): 990065316, [percent: local period]
         acpi_processor_ffh_cstate_enter() /lib/modules/5.9.0-rc3/build/vmlinux
        -Percent     → callq   __fentry__
        -              mov     cpu_number,%edx
        -              mov     %edx,%edx
        -              mov     cpu_cstate_entry,%rax
        -              add     -0x7dbe9700(,%rdx,8),%rax
        -              movzbl  0x9(%rdi),%edx
        -              mov     0x4(%rax,%rdx,8),%edi
        -              mov     (%rax,%rdx,8),%esi
        -            → jmpq    137ccc6
        -        2d: → jmpq    137ccd8
        +Percent     → call    __fentry__
        +              mov     edx,DWORD PTR gs:[rip+0x7e541d74]
        +              mov     edx,edx
        +              mov     rax,QWORD PTR [rip+0x152b8fb]
        +              add     rax,QWORD PTR [rdx*8-0x7dbe9700]
        +              movzx   edx,BYTE PTR [rdi+0x9]
        +              mov     edi,DWORD PTR [rax+rdx*8+0x4]
        +              mov     esi,DWORD PTR [rax+rdx*8]
        +            → jmp     137ccc6
        +        2d: → jmp     137ccd8
                       mfence
        -              mov     %gs:0x17bc0,%rax
        -              clflush (%rax)
        +              mov     rax,QWORD PTR gs:0x17bc0
        +              clflush BYTE PTR [rax]
                       mfence
        -              xor     %edx,%edx
        -              mov     %rdx,%rcx
        -              mov     %gs:0x17bc0,%rax
        -  0.00        monitor %rax,%ecx,%edx
        -              mov     (%rax),%rax
        -              test    $0x8,%al
        +              xor     edx,edx
        +              mov     rcx,rdx
        +              mov     rax,QWORD PTR gs:0x17bc0
        +  0.00        monitor
        +              mov     rax,QWORD PTR [rax]
        +              test    al,0x8
                     ↓ jne     71
        -            ↓ jmpq    68
        -              verw    0x538b08(%rip)        # ffffffff82008150 <ds.0>
        -        68:   mov     %rsi,%rax
        -              mov     %rdi,%rcx
        -100.00        mwait   %eax,%ecx
        -        71:   mov     %gs:0x17bc0,%rax
        -              lock    andb    $0xdf,0x2(%rax)
        -              lock    addl    $0x0,-0x4(%rsp)
        -              mov     (%rax),%rax
        -              test    $0x8,%al
        +            ↓ jmp     68
        +              verw    WORD PTR [rip+0x538b08]        # ffffffff82008150 <ds.0>
        +        68:   mov     rax,rsi
        +              mov     rcx,rdi
        +100.00        mwait
        +        71:   mov     rax,QWORD PTR gs:0x17bc0
        +              lock    and     BYTE PTR [rax+0x2],0xdf
        +              lock    add     DWORD PTR [rsp-0x4],0x0
        +              mov     rax,QWORD PTR [rax]
        +              test    al,0x8
                     ↓ je      97
        -              andl    $0x7fffffff,__preempt_count
        -        97: ← retq
        -              mov     %gs:0x17bc0,%rax
        -              lock    orb     $0x20,0x2(%rax)
        -              mov     (%rax),%rax
        -              test    $0x8,%al
        +              and     DWORD PTR gs:[rip+0x7e548509],0x7fffffff
        +        97:   ret
        +              mov     rax,QWORD PTR gs:0x17bc0
        +              lock    or      BYTE PTR [rax+0x2],0x20
        +              mov     rax,QWORD PTR [rax]
        +              test    al,0x8
                     ↑ jne     71
        -            ↑ jmpq    2d
        +            ↑ jmp     2d
        #
      Requested-by: NMatt P. Dziubinski <matdzb@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      bbe54468
    • A
      perf record: Add 'snapshot' control command · d20aff15
      Adrian Hunter 提交于
      Add 'snapshot' control command to create an AUX area tracing snapshot
      the same as if sending SIGUSR2. The advantage of the FIFO is that access
      is governed by access to the FIFO.
      
      Example:
      
        $ mkfifo perf.control
        $ mkfifo perf.ack
        $ cat perf.ack &
        [1] 15235
        $ sudo ~/bin/perf record --control fifo:perf.control,perf.ack -S -e intel_pt//u -- sleep 60 &
        [2] 15243
        $ ps -e | grep perf
         15244 pts/1    00:00:00 perf
        $ kill -USR2 15244
        bash: kill: (15244) - Operation not permitted
        $ echo snapshot > perf.control
        ack
        $
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200901093758.32293-6-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      d20aff15
    • A
      perf tools: Add FIFO file names as alternative options to --control · a8fcbd26
      Adrian Hunter 提交于
      Enable the --control option to accept file names as an alternative to
      file descriptors.
      
      Example:
      
        $ mkfifo perf.control
        $ mkfifo perf.ack
        $ cat perf.ack &
        [1] 6808
        $ perf record --control fifo:perf.control,perf.ack -- sleep 300 &
        [2] 6810
        $ echo disable > perf.control
        $ Events disabled
        ack
      
        $ echo enable > perf.control
        $ Events enabled
        ack
      
        $ echo disable > perf.control
        $ Events disabled
        ack
      
        $ kill %2
        [ perf record: Woken up 4 times to write data ]
        $ [ perf record: Captured and wrote 0.018 MB perf.data (7 samples) ]
      
        [1]-  Done                    cat perf.ack
        [2]+  Terminated              perf record --control fifo:perf.control,perf.ack -- sleep 300
        $
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200902105707.11491-1-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a8fcbd26
    • A
      perf tools: Use AsciiDoc formatting for --control option documentation · 1f4390d8
      Adrian Hunter 提交于
      The --control option does not display well in man pages unless AsciiDoc
      formatting is used.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200901093758.32293-4-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      1f4390d8
    • A
      perf tools: Handle read errors from ctl_fd · 40db8ff5
      Adrian Hunter 提交于
      Handle read errors from ctl_fd such as EINTR, EAGAIN and EWOULDBLOCK.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200901093758.32293-3-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      40db8ff5
    • A
      perf tools: Consolidate --control option parsing into one function · 9864a66d
      Adrian Hunter 提交于
      Consolidate --control option parsing into one function, in preparation
      for adding FIFO file name options.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: NAlexey Budankov <alexey.budankov@linux.intel.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200901093758.32293-2-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      9864a66d
    • R
      perf tests: Add test for PE binary format support · ed21d6d7
      Remi Bernon 提交于
      This adds a precompiled file in PE binary format, with split debug file,
      and tries to read its build_id and .gnu_debuglink sections, as well as
      looking up the main symbol from the debug file. This should succeed if
      libbfd is supported.
      
      Committer testing:
      
        $ perf test "PE file support"
        68: PE file support           : Ok
        $
      Signed-off-by: NRemi Bernon <rbernon@codeweavers.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jacek Caban <jacek@codeweavers.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200821165238.1340315-3-rbernon@codeweavers.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ed21d6d7
    • R
      perf symbols: Try reading the symbol table with libbfd · eac9a434
      Remi Bernon 提交于
      Wine generates PE binaries for its code modules and also generates debug
      files in PE or PDB formats, which perf cannot parse either.
      
      Trying to read symbols on non-ELF binaries with libbfd, when supported,
      makes it possible for perf to report symbols and annotations for Windows
      applications running under Wine.
      
      Because libbfd doesn't provide symbol size (probably because of some
      backends not supporting it), we compute it by first sorting the symbols
      by addresses and then considering that they are sequential in a given
      section.
      
      v3: Also include local and weak bfd symbols and mark them as such, only
          global symbols were previously reported, and that caused a very
          imprecise address to symbol resolution.
      Signed-off-by: NRemi Bernon <rbernon@codeweavers.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jacek Caban <jacek@codeweavers.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200821165238.1340315-2-rbernon@codeweavers.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      eac9a434
    • R
      perf dso: Use libbfd to read build_id and .gnu_debuglink section · ba0509dc
      Remi Bernon 提交于
      Wine generates PE binaries for most of its modules and perf is unable to
      parse these files to get build_id or .gnu_debuglink section.
      
      Using libbfd when available, instead of libelf, makes it possible to
      resolve debug file location regardless of the dso binary format.
      
      Committer notes:
      
      Made the filename__read_build_id() variant that uses abfd->build_id
      depend on the feature test that defines HAVE_LIBBFD_BUILDID_SUPPORT, to
      get this to continue building with older libbfd/binutils.
      Signed-off-by: NRemi Bernon <rbernon@codeweavers.com>
      Acked-by: NJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jacek Caban <jacek@codeweavers.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200821165238.1340315-1-rbernon@codeweavers.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ba0509dc
    • A
      tools features: Add feature test to check if libbfd has buildid support · e71e19a9
      Arnaldo Carvalho de Melo 提交于
      Which is needed by the PE executable support, for instance.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jacek Caban <jacek@codeweavers.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Remi Bernon <rbernon@codeweavers.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e71e19a9
  2. 04 9月, 2020 20 次提交
    • L
      Merge tag 'perf-tools-fixes-for-v5.9-2020-09-03' of... · 59126901
      Linus Torvalds 提交于
      Merge tag 'perf-tools-fixes-for-v5.9-2020-09-03' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull more perf tools fixes from Arnaldo Carvalho de Melo:
      
       - Use uintptr_t when casting numbers to pointers
      
       - Keep output expected by 3rd parties: Turn off summary for interval
         mode by default.
      
       - BPF is in kernel space, make sure do_validate_kcore_modules() knows
         about that.
      
       - Explicitly call out event modifiers in the documentation.
      
       - Fix jevents() allocation of space for regular expressions.
      
       - Address libtraceevent build warnings on 32-bit arches.
      
       - Fix checking of functions returns using ERR_PTR() in 'perf bench'.
      
      * tag 'perf-tools-fixes-for-v5.9-2020-09-03' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
        perf tools: Add bpf image check to __map__is_kmodule
        perf record/stat: Explicitly call out event modifiers in the documentation
        perf bench: The do_run_multi_threaded() function must use IS_ERR(perf_session__new())
        perf stat: Turn off summary for interval mode by default
        libtraceevent: Fix build warning on 32-bit arches
        perf jevents: Fix suspicious code in fixregex()
        perf parse-events: Use uintptr_t when casting numbers to pointers
      59126901
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 3e8d3bdc
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) Use netif_rx_ni() when necessary in batman-adv stack, from Jussi
          Kivilinna.
      
       2) Fix loss of RTT samples in rxrpc, from David Howells.
      
       3) Memory leak in hns_nic_dev_probe(), from Dignhao Liu.
      
       4) ravb module cannot be unloaded, fix from Yuusuke Ashizuka.
      
       5) We disable BH for too lokng in sctp_get_port_local(), add a
          cond_resched() here as well, from Xin Long.
      
       6) Fix memory leak in st95hf_in_send_cmd, from Dinghao Liu.
      
       7) Out of bound access in bpf_raw_tp_link_fill_link_info(), from
          Yonghong Song.
      
       8) Missing of_node_put() in mt7530 DSA driver, from Sumera
          Priyadarsini.
      
       9) Fix crash in bnxt_fw_reset_task(), from Michael Chan.
      
      10) Fix geneve tunnel checksumming bug in hns3, from Yi Li.
      
      11) Memory leak in rxkad_verify_response, from Dinghao Liu.
      
      12) In tipc, don't use smp_processor_id() in preemptible context. From
          Tuong Lien.
      
      13) Fix signedness issue in mlx4 memory allocation, from Shung-Hsi Yu.
      
      14) Missing clk_disable_prepare() in gemini driver, from Dan Carpenter.
      
      15) Fix ABI mismatch between driver and firmware in nfp, from Louis
          Peens.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (110 commits)
        net/smc: fix sock refcounting in case of termination
        net/smc: reset sndbuf_desc if freed
        net/smc: set rx_off for SMCR explicitly
        net/smc: fix toleration of fake add_link messages
        tg3: Fix soft lockup when tg3_reset_task() fails.
        doc: net: dsa: Fix typo in config code sample
        net: dp83867: Fix WoL SecureOn password
        nfp: flower: fix ABI mismatch between driver and firmware
        tipc: fix shutdown() of connectionless socket
        ipv6: Fix sysctl max for fib_multipath_hash_policy
        drivers/net/wan/hdlc: Change the default of hard_header_len to 0
        net: gemini: Fix another missing clk_disable_unprepare() in probe
        net: bcmgenet: fix mask check in bcmgenet_validate_flow()
        amd-xgbe: Add support for new port mode
        net: usb: dm9601: Add USB ID of Keenetic Plus DSL
        vhost: fix typo in error message
        net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init()
        pktgen: fix error message with wrong function name
        net: ethernet: ti: am65-cpsw: fix rmii 100Mbit link mode
        cxgb4: fix thermal zone device registration
        ...
      3e8d3bdc
    • L
      Merge branch 'gate-page-refcount' (patches from Dave Hansen) · 8381979d
      Linus Torvalds 提交于
      Merge gate page refcount fix from Dave Hansen:
       "During the conversion over to pin_user_pages(), gate pages were missed.
      
        The fix is pretty simple, and is accompanied by a new test from Andy
        which probably would have caught this earlier"
      
      * emailed patches from Dave Hansen <dave.hansen@linux.intel.com>:
        selftests/x86/test_vsyscall: Improve the process_vm_readv() test
        mm: fix pin vs. gup mismatch with gate pages
      8381979d
    • A
      selftests/x86/test_vsyscall: Improve the process_vm_readv() test · 8891adc6
      Andy Lutomirski 提交于
      The existing code accepted process_vm_readv() success or failure as long
      as it didn't return garbage.  This is too weak: if the vsyscall page is
      readable, then process_vm_readv() should succeed and, if the page is not
      readable, then it should fail.
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Signed-off-by: NDave Hansen <dave.hansen@linux.intel.com>
      Cc: x86@kernel.org
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Jann Horn <jannh@google.com>
      Cc: John Hubbard <jhubbard@nvidia.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8891adc6
    • D
      mm: fix pin vs. gup mismatch with gate pages · 9fa2dd94
      Dave Hansen 提交于
      Gate pages were missed when converting from get to pin_user_pages().
      This can lead to refcount imbalances.  This is reliably and quickly
      reproducible running the x86 selftests when vsyscall=emulate is enabled
      (the default).  Fix by using try_grab_page() with appropriate flags
      passed.
      
      The long story:
      
      Today, pin_user_pages() and get_user_pages() are similar interfaces for
      manipulating page reference counts.  However, "pins" use a "bias" value
      and manipulate the actual reference count by 1024 instead of 1 used by
      plain "gets".
      
      That means that pin_user_pages() must be matched with unpin_user_pages()
      and can't be mixed with a plain put_user_pages() or put_page().
      
      Enter gate pages, like the vsyscall page.  They are pages usually in the
      kernel image, but which are mapped to userspace.  Userspace is allowed
      access to them, including interfaces using get/pin_user_pages().  The
      refcount of these kernel pages is manipulated just like a normal user
      page on the get/pin side so that the put/unpin side can work the same
      for normal user pages or gate pages.
      
      get_gate_page() uses try_get_page() which only bumps the refcount by
      1, not 1024, even if called in the pin_user_pages() path.  If someone
      pins a gate page, this happens:
      
      	pin_user_pages()
      		get_gate_page()
      			try_get_page() // bump refcount +1
      	... some time later
      	unpin_user_pages()
      		page_ref_sub_and_test(page, 1024))
      
      ... and boom, we get a refcount off by 1023.  This is reliably and
      quickly reproducible running the x86 selftests when booted with
      vsyscall=emulate (the default).  The selftests use ptrace(), but I
      suspect anything using pin_user_pages() on gate pages could hit this.
      
      To fix it, simply use try_grab_page() instead of try_get_page(), and
      pass 'gup_flags' in so that FOLL_PIN can be respected.
      
      This bug traces back to the very beginning of the FOLL_PIN support in
      commit 3faa52c0 ("mm/gup: track FOLL_PIN pages"), which showed up in
      the 5.7 release.
      Signed-off-by: NDave Hansen <dave.hansen@linux.intel.com>
      Fixes: 3faa52c0 ("mm/gup: track FOLL_PIN pages")
      Reported-by: NPeter Zijlstra <peterz@infradead.org>
      Reviewed-by: NJohn Hubbard <jhubbard@nvidia.com>
      Acked-by: NAndy Lutomirski <luto@kernel.org>
      Cc: x86@kernel.org
      Cc: Jann Horn <jannh@google.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9fa2dd94
    • D
      Merge branch 'smc-fixes' · b61ac5bb
      David S. Miller 提交于
      Karsten Graul says:
      
      ====================
      net/smc: fixes 2020-09-03
      
      Please apply the following patch series for smc to netdev's net tree.
      
      Patch 1 fixes the toleration of older SMC implementations. Patch 2
      takes care of a problem that happens when SMCR is used after SMCD
      initialization failed. Patch 3 fixes a problem with freed send buffers,
      and patch 4 corrects refcounting when SMC terminates due to device
      removal.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b61ac5bb
    • U
      net/smc: fix sock refcounting in case of termination · 5fb8642a
      Ursula Braun 提交于
      When an ISM device is removed, all its linkgroups are terminated,
      i.e. all the corresponding connections are killed.
      Connection killing invokes smc_close_active_abort(), which decreases
      the sock refcount for certain states to simulate passive closing.
      And it cancels the close worker and has to give up the sock lock for
      this timeframe. This opens the door for a passive close worker or a
      socket close to run in between. In this case smc_close_active_abort() and
      passive close worker resp. smc_release() might do a sock_put for passive
      closing. This causes:
      
      [ 1323.315943] refcount_t: underflow; use-after-free.
      [ 1323.316055] WARNING: CPU: 3 PID: 54469 at lib/refcount.c:28 refcount_warn_saturate+0xe8/0x130
      [ 1323.316069] Kernel panic - not syncing: panic_on_warn set ...
      [ 1323.316084] CPU: 3 PID: 54469 Comm: uperf Not tainted 5.9.0-20200826.rc2.git0.46328853ed20.300.fc32.s390x+debug #1
      [ 1323.316096] Hardware name: IBM 2964 NC9 702 (z/VM 6.4.0)
      [ 1323.316108] Call Trace:
      [ 1323.316125]  [<00000000c0d4aae8>] show_stack+0x90/0xf8
      [ 1323.316143]  [<00000000c15989b0>] dump_stack+0xa8/0xe8
      [ 1323.316158]  [<00000000c0d8344e>] panic+0x11e/0x288
      [ 1323.316173]  [<00000000c0d83144>] __warn+0xac/0x158
      [ 1323.316187]  [<00000000c1597a7a>] report_bug+0xb2/0x130
      [ 1323.316201]  [<00000000c0d36424>] monitor_event_exception+0x44/0xc0
      [ 1323.316219]  [<00000000c195c716>] pgm_check_handler+0x1da/0x238
      [ 1323.316234]  [<00000000c151844c>] refcount_warn_saturate+0xec/0x130
      [ 1323.316280] ([<00000000c1518448>] refcount_warn_saturate+0xe8/0x130)
      [ 1323.316310]  [<000003ff801f2e2a>] smc_release+0x192/0x1c8 [smc]
      [ 1323.316323]  [<00000000c169f1fa>] __sock_release+0x5a/0xe0
      [ 1323.316334]  [<00000000c169f2ac>] sock_close+0x2c/0x40
      [ 1323.316350]  [<00000000c1086de0>] __fput+0xb8/0x278
      [ 1323.316362]  [<00000000c0db1e0e>] task_work_run+0x76/0xb8
      [ 1323.316393]  [<00000000c0d8ab84>] do_exit+0x26c/0x520
      [ 1323.316408]  [<00000000c0d8af08>] do_group_exit+0x48/0xc0
      [ 1323.316421]  [<00000000c0d8afa8>] __s390x_sys_exit_group+0x28/0x38
      [ 1323.316433]  [<00000000c195c32c>] system_call+0xe0/0x2b4
      [ 1323.316446] 1 lock held by uperf/54469:
      [ 1323.316456]  #0: 0000000044125e60 (&sb->s_type->i_mutex_key#9){+.+.}-{3:3}, at: __sock_release+0x44/0xe0
      
      The patch rechecks sock state in smc_close_active_abort() after
      smc_close_cancel_work() to avoid duplicate decrease of sock
      refcount for the same purpose.
      
      Fixes: 611b63a1 ("net/smc: cancel tx worker in case of socket aborts")
      Reviewed-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NUrsula Braun <ubraun@linux.ibm.com>
      Signed-off-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5fb8642a
    • U
      net/smc: reset sndbuf_desc if freed · 1d8df41d
      Ursula Braun 提交于
      When an SMC connection is created, and there is a problem to
      create an RMB or DMB, the previously created send buffer is
      thrown away as well including buffer descriptor freeing.
      Make sure the connection no longer references the freed
      buffer descriptor, otherwise bugs like this are possible:
      
      [71556.835148] =============================================================================
      [71556.835168] BUG kmalloc-128 (Tainted: G    B      OE    ): Poison overwritten
      [71556.835172] -----------------------------------------------------------------------------
      
      [71556.835179] INFO: 0x00000000d20894be-0x00000000aaef63e9 @offset=2724. First byte 0x0 instead of 0x6b
      [71556.835215] INFO: Allocated in __smc_buf_create+0x184/0x578 [smc] age=0 cpu=5 pid=46726
      [71556.835234]     ___slab_alloc+0x5a4/0x690
      [71556.835239]     __slab_alloc.constprop.0+0x70/0xb0
      [71556.835243]     kmem_cache_alloc_trace+0x38e/0x3f8
      [71556.835250]     __smc_buf_create+0x184/0x578 [smc]
      [71556.835257]     smc_buf_create+0x2e/0xe8 [smc]
      [71556.835264]     smc_listen_work+0x516/0x6a0 [smc]
      [71556.835275]     process_one_work+0x280/0x478
      [71556.835280]     worker_thread+0x66/0x368
      [71556.835287]     kthread+0x17a/0x1a0
      [71556.835294]     ret_from_fork+0x28/0x2c
      [71556.835301] INFO: Freed in smc_buf_create+0xd8/0xe8 [smc] age=0 cpu=5 pid=46726
      [71556.835307]     __slab_free+0x246/0x560
      [71556.835311]     kfree+0x398/0x3f8
      [71556.835318]     smc_buf_create+0xd8/0xe8 [smc]
      [71556.835324]     smc_listen_work+0x516/0x6a0 [smc]
      [71556.835328]     process_one_work+0x280/0x478
      [71556.835332]     worker_thread+0x66/0x368
      [71556.835337]     kthread+0x17a/0x1a0
      [71556.835344]     ret_from_fork+0x28/0x2c
      [71556.835348] INFO: Slab 0x00000000a0744551 objects=51 used=51 fp=0x0000000000000000 flags=0x1ffff00000010200
      [71556.835352] INFO: Object 0x00000000563480a1 @offset=2688 fp=0x00000000289567b2
      
      [71556.835359] Redzone 000000006783cde2: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835363] Redzone 00000000e35b876e: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835367] Redzone 0000000023074562: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835372] Redzone 00000000b9564b8c: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835376] Redzone 00000000810c6362: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835380] Redzone 0000000065ef52c3: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835384] Redzone 00000000c5dd6984: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835388] Redzone 000000004c480f8f: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      [71556.835392] Object 00000000563480a1: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      [71556.835397] Object 000000009c479d06: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      [71556.835401] Object 000000006e1dce92: 6b 6b 6b 6b 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b  kkkk....kkkkkkkk
      [71556.835405] Object 00000000227f7cf8: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      [71556.835410] Object 000000009a701215: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      [71556.835414] Object 000000003731ce76: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      [71556.835418] Object 00000000f7085967: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      [71556.835422] Object 0000000007f99927: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5  kkkkkkkkkkkkkkk.
      [71556.835427] Redzone 00000000579c4913: bb bb bb bb bb bb bb bb                          ........
      [71556.835431] Padding 00000000305aef82: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      [71556.835435] Padding 00000000b1cdd722: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      [71556.835438] Padding 00000000c7568199: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      [71556.835442] Padding 00000000fad4c4d4: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      [71556.835451] CPU: 0 PID: 47939 Comm: kworker/0:15 Tainted: G    B      OE     5.9.0-rc1uschi+ #54
      [71556.835456] Hardware name: IBM 3906 M03 703 (LPAR)
      [71556.835464] Workqueue: events smc_listen_work [smc]
      [71556.835470] Call Trace:
      [71556.835478]  [<00000000d5eaeb10>] show_stack+0x90/0xf8
      [71556.835493]  [<00000000d66fc0f8>] dump_stack+0xa8/0xe8
      [71556.835499]  [<00000000d61a511c>] check_bytes_and_report+0x104/0x130
      [71556.835504]  [<00000000d61a57b2>] check_object+0x26a/0x2e0
      [71556.835509]  [<00000000d61a59bc>] alloc_debug_processing+0x194/0x238
      [71556.835514]  [<00000000d61a8c14>] ___slab_alloc+0x5a4/0x690
      [71556.835519]  [<00000000d61a9170>] __slab_alloc.constprop.0+0x70/0xb0
      [71556.835524]  [<00000000d61aaf66>] kmem_cache_alloc_trace+0x38e/0x3f8
      [71556.835530]  [<000003ff80549bbc>] __smc_buf_create+0x184/0x578 [smc]
      [71556.835538]  [<000003ff8054a396>] smc_buf_create+0x2e/0xe8 [smc]
      [71556.835545]  [<000003ff80540c16>] smc_listen_work+0x516/0x6a0 [smc]
      [71556.835549]  [<00000000d5f0f448>] process_one_work+0x280/0x478
      [71556.835554]  [<00000000d5f0f6a6>] worker_thread+0x66/0x368
      [71556.835559]  [<00000000d5f18692>] kthread+0x17a/0x1a0
      [71556.835563]  [<00000000d6abf3b8>] ret_from_fork+0x28/0x2c
      [71556.835569] INFO: lockdep is turned off.
      [71556.835573] FIX kmalloc-128: Restoring 0x00000000d20894be-0x00000000aaef63e9=0x6b
      
      [71556.835577] FIX kmalloc-128: Marking all objects used
      
      Fixes: fd7f3a74 ("net/smc: remove freed buffer from list")
      Reviewed-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NUrsula Braun <ubraun@linux.ibm.com>
      Signed-off-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1d8df41d
    • U
      net/smc: set rx_off for SMCR explicitly · 2d2bfeb8
      Ursula Braun 提交于
      SMC tries to make use of SMCD first. If a problem shows up,
      it tries to switch to SMCR. If the SMCD initializing problem shows
      up after the SMCD connection has already been initialized, field
      rx_off keeps the wrong SMCD value for SMCR, which results in corrupted
      data at the receiver.
      This patch adds an explicit (re-)setting of field rx_off to zero if the
      connection uses SMCR.
      
      Fixes: be244f28 ("net/smc: add SMC-D support in data transfer")
      Reviewed-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NUrsula Braun <ubraun@linux.ibm.com>
      Signed-off-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2d2bfeb8
    • K
      net/smc: fix toleration of fake add_link messages · fffe83c8
      Karsten Graul 提交于
      Older SMCR implementations had no link failover support and used one
      link only. Because the handshake protocol requires to try the
      establishment of a second link the old code sent a fake add_link message
      and declined any server response afterwards.
      The current code supports multiple links and inspects the received fake
      add_link message more closely. To tolerate the fake add_link messages
      smc_llc_is_local_add_link() needs an improved check of the message to
      be able to separate between locally enqueued and fake add_link messages.
      And smc_llc_cli_add_link() needs to check if the provided qp_mtu size is
      invalid and reject the add_link request in that case.
      
      Fixes: c48254fa ("net/smc: move add link processing for new device into llc layer")
      Reviewed-by: NUrsula Braun <ubraun@linux.ibm.com>
      Signed-off-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fffe83c8
    • M
      tg3: Fix soft lockup when tg3_reset_task() fails. · 55669934
      Michael Chan 提交于
      If tg3_reset_task() fails, the device state is left in an inconsistent
      state with IFF_RUNNING still set but NAPI state not enabled.  A
      subsequent operation, such as ifdown or AER error can cause it to
      soft lock up when it tries to disable NAPI state.
      
      Fix it by bringing down the device to !IFF_RUNNING state when
      tg3_reset_task() fails.  tg3_reset_task() running from workqueue
      will now call tg3_close() when the reset fails.  We need to
      modify tg3_reset_task_cancel() slightly to avoid tg3_close()
      calling cancel_work_sync() to cancel tg3_reset_task().  Otherwise
      cancel_work_sync() will wait forever for tg3_reset_task() to
      finish.
      Reported-by: NDavid Christensen <drc@linux.vnet.ibm.com>
      Reported-by: NBaptiste Covolato <baptiste@arista.com>
      Fixes: db219973 ("tg3: Schedule at most one tg3_reset_task run")
      Signed-off-by: NMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      55669934
    • J
      perf tools: Add bpf image check to __map__is_kmodule · 830fadfd
      Jiri Olsa 提交于
      When validating kcore modules the do_validate_kcore_modules function
      checks on every kernel module dso against modules record. The
      __map__is_kmodule check is used to get only kernel module dso objects
      through.
      
      Currently the bpf images are slipping through the check and making the
      validation to fail, so report falls back from kcore usage to kallsyms.
      
      Adding __map__is_bpf_image check for bpf image and adding it to
      __map__is_kmodule check.
      
      Fixes: 3c29d448 ("perf annotate: Add basic support for bpf_image")
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20200826213017.818788-1-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      830fadfd
    • K
      perf record/stat: Explicitly call out event modifiers in the documentation · e48a73a3
      Kim Phillips 提交于
      Event modifiers are not mentioned in the perf record or perf stat
      manpages.  Add them to orient new users more effectively by pointing
      them to the perf list manpage for details.
      
      Fixes: 2055fdaf ("perf list: Document precise event sampling for AMD IBS")
      Signed-off-by: NKim Phillips <kim.phillips@amd.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Clarke <pc@us.ibm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tony Jones <tonyj@suse.de>
      Cc: stable@vger.kernel.org
      Link: http://lore.kernel.org/lkml/20200901215853.276234-1-kim.phillips@amd.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e48a73a3
    • Y
      perf bench: The do_run_multi_threaded() function must use IS_ERR(perf_session__new()) · e4d71f79
      YueHaibing 提交于
      In case of error, the function perf_session__new() returns ERR_PTR() and
      never returns NULL. The NULL test in the return value check should be
      replaced with IS_ERR()
      
      Committer notes:
      
      This wasn't compiling due to an extraneous '{' not matched by a '}', fix
      it.
      
      Fixes: 13edc237 ("perf bench: Add a multi-threaded synthesize benchmark")
      Signed-off-by: NYueHaibing <yuehaibing@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200902140526.26916-1-yuehaibing@huawei.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e4d71f79
    • J
      perf stat: Turn off summary for interval mode by default · ee6a9614
      Jin Yao 提交于
      There's a risk that outputting interval mode summaries by default breaks
      CSV consumers. It already broke pmu-tools/toplev.
      
      So now we turn off the summary by default but we create a new option
      '--summary' to enable the summary. This is active even when not using
      CSV mode.
      
      Before:
      
        root@kbl-ppc:~# perf stat -I1000 --interval-count 2
        #           time             counts unit events
             1.000265904           8,005.73 msec cpu-clock                 #    8.006 CPUs utilized
             1.000265904                601      context-switches          #    0.075 K/sec
             1.000265904                 10      cpu-migrations            #    0.001 K/sec
             1.000265904                  0      page-faults               #    0.000 K/sec
             1.000265904         66,746,521      cycles                    #    0.008 GHz
             1.000265904         71,874,398      instructions              #    1.08  insn per cycle
             1.000265904         13,356,781      branches                  #    1.668 M/sec
             1.000265904            298,756      branch-misses             #    2.24% of all branches
             2.001857667           8,012.52 msec cpu-clock                 #    8.013 CPUs utilized
             2.001857667                164      context-switches          #    0.020 K/sec
             2.001857667                 10      cpu-migrations            #    0.001 K/sec
             2.001857667                  2      page-faults               #    0.000 K/sec
             2.001857667          5,822,188      cycles                    #    0.001 GHz
             2.001857667          2,186,170      instructions              #    0.38  insn per cycle
             2.001857667            442,378      branches                  #    0.055 M/sec
             2.001857667             44,750      branch-misses             #   10.12% of all branches
      
         Performance counter stats for 'system wide':
      
                 16,018.25 msec cpu-clock                 #    7.993 CPUs utilized
                       765      context-switches          #    0.048 K/sec
                        20      cpu-migrations            #    0.001 K/sec
                         2      page-faults               #    0.000 K/sec
                72,568,709      cycles                    #    0.005 GHz
                74,060,568      instructions              #    1.02  insn per cycle
                13,799,159      branches                  #    0.861 M/sec
                   343,506      branch-misses             #    2.49% of all branches
      
               2.004118489 seconds time elapsed
      
      After:
      
        root@kbl-ppc:~# perf stat -I1000 --interval-count 2
        #           time             counts unit events
             1.001336393           8,013.28 msec cpu-clock                 #    8.013 CPUs utilized
             1.001336393                 82      context-switches          #    0.010 K/sec
             1.001336393                  8      cpu-migrations            #    0.001 K/sec
             1.001336393                  0      page-faults               #    0.000 K/sec
             1.001336393          4,199,121      cycles                    #    0.001 GHz
             1.001336393          1,373,991      instructions              #    0.33  insn per cycle
             1.001336393            270,681      branches                  #    0.034 M/sec
             1.001336393             31,659      branch-misses             #   11.70% of all branches
             2.003905006           8,020.52 msec cpu-clock                 #    8.021 CPUs utilized
             2.003905006                184      context-switches          #    0.023 K/sec
             2.003905006                  8      cpu-migrations            #    0.001 K/sec
             2.003905006                  2      page-faults               #    0.000 K/sec
             2.003905006          5,446,190      cycles                    #    0.001 GHz
             2.003905006          2,312,547      instructions              #    0.42  insn per cycle
             2.003905006            451,691      branches                  #    0.056 M/sec
             2.003905006             37,925      branch-misses             #    8.40% of all branches
      
        root@kbl-ppc:~# perf stat -I1000 --interval-count 2 --summary
        #           time             counts unit events
             1.001313128           8,013.20 msec cpu-clock                 #    8.013 CPUs utilized
             1.001313128                 83      context-switches          #    0.010 K/sec
             1.001313128                  8      cpu-migrations            #    0.001 K/sec
             1.001313128                  0      page-faults               #    0.000 K/sec
             1.001313128          4,470,950      cycles                    #    0.001 GHz
             1.001313128          1,440,045      instructions              #    0.32  insn per cycle
             1.001313128            283,222      branches                  #    0.035 M/sec
             1.001313128             33,576      branch-misses             #   11.86% of all branches
             2.003857385           8,020.34 msec cpu-clock                 #    8.020 CPUs utilized
             2.003857385                154      context-switches          #    0.019 K/sec
             2.003857385                  8      cpu-migrations            #    0.001 K/sec
             2.003857385                  2      page-faults               #    0.000 K/sec
             2.003857385          4,515,676      cycles                    #    0.001 GHz
             2.003857385          2,180,449      instructions              #    0.48  insn per cycle
             2.003857385            435,254      branches                  #    0.054 M/sec
             2.003857385             31,179      branch-misses             #    7.16% of all branches
      
         Performance counter stats for 'system wide':
      
                 16,033.53 msec cpu-clock                 #    7.992 CPUs utilized
                       237      context-switches          #    0.015 K/sec
                        16      cpu-migrations            #    0.001 K/sec
                         2      page-faults               #    0.000 K/sec
                 8,986,626      cycles                    #    0.001 GHz
                 3,620,494      instructions              #    0.40  insn per cycle
                   718,476      branches                  #    0.045 M/sec
                    64,755      branch-misses             #    9.01% of all branches
      
               2.006124542 seconds time elapsed
      
      Fixes: c7e5b328 ("perf stat: Report summary for interval mode")
      Signed-off-by: NJin Yao <yao.jin@linux.intel.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200903010113.32232-1-yao.jin@linux.intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ee6a9614
    • T
      libtraceevent: Fix build warning on 32-bit arches · 10a6f5c3
      Tzvetomir Stoyanov (VMware) 提交于
      Fixed a compilation warning for casting to pointer from integer of
      different size on 32-bit platforms.
      Reported-by: NArnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
      Signed-off-by: NTzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
      Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
      Cc: linux-trace-devel@vger.kernel.org
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      10a6f5c3
    • N
      perf jevents: Fix suspicious code in fixregex() · e62458e3
      Namhyung Kim 提交于
      The new string should have enough space for the original string and the
      back slashes IMHO.
      
      Fixes: fbc2844e ("perf vendor events: Use more flexible pattern matching for CPU identification for mapfile.csv")
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Reviewed-by: NIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: William Cohen <wcohen@redhat.com>
      Link: http://lore.kernel.org/lkml/20200903152510.489233-1-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e62458e3
    • A
      perf parse-events: Use uintptr_t when casting numbers to pointers · 0823f768
      Arnaldo Carvalho de Melo 提交于
      To address these errors found when cross building from x86_64 to MIPS
      little endian 32-bit:
      
          CC       /tmp/build/perf/util/parse-events-bison.o
        util/parse-events.y: In function 'parse_events_parse':
        util/parse-events.y:514:6: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
          514 |      (void *) $2, $6, $4);
              |      ^
        util/parse-events.y:531:7: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
          531 |       (void *) $2, NULL, $4)) {
              |       ^
        util/parse-events.y:547:6: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
          547 |      (void *) $2, $4, 0);
              |      ^
        util/parse-events.y:564:7: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
          564 |       (void *) $2, NULL, 0)) {
              |       ^
      
      Fixes: cabbf268 ("perf parse: Before yyabort-ing free components")
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Martin KaFai Lau <kafai@fb.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Song Liu <songliubraving@fb.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Yonghong Song <yhs@fb.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0823f768
    • P
      doc: net: dsa: Fix typo in config code sample · af0ae997
      Paul Barker 提交于
      In the "single port" example code for configuring a DSA switch without
      tagging support from userspace the command to bring up the "lan2" link
      was typo'd.
      Signed-off-by: NPaul Barker <pbarker@konsulko.com>
      Acked-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      af0ae997
    • L
      Merge tag 'fixes-2020-09-03' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock · e28f0104
      Linus Torvalds 提交于
      Pull misc build failure fixes from Mike Rapoport:
       "Fix min_low_pfn/max_low_pfn build errors on ia64 and microblaze.
      
        Some configurations of ia64 and microblaze use min_low_pfn and
        max_low_pfn in pfn_valid(). This causes build failures for modules
        that use pfn_valid().
      
        The fix is to add EXPORT_SYMBOL() for these variables on ia64 and
        microblaze"
      
      * tag 'fixes-2020-09-03' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock:
        ia64: fix min_low_pfn/max_low_pfn build errors
        microblaze: fix min_low_pfn/max_low_pfn build errors
      e28f0104
  3. 03 9月, 2020 2 次提交