1. 09 Jul, 2021 4 commits
  2. 07 Jul, 2021 11 commits
    • Jiri Olsa's avatar
      libperf: Change tests to single static and shared binaries · 3d970601
      Jiri Olsa authored
      Make tests to be two binaries 'tests_static' and 'tests_shared', so the
      maintenance is easier.
      
      Adding tests under libperf build system, so we define all the flags just
      once.
      
      Adding make-tests tule to just compile tests without running them.
      Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Michael Petlan <mpetlan@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Shunsuke Nakamura <nakamura.shun@fujitsu.com>
      Link: http://lore.kernel.org/lkml/20210706151704.73662-2-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      3d970601
    • Adrian Hunter's avatar
      perf intel-pt: Add a config for max loops without consuming a packet · b4b046ff
      Adrian Hunter authored
      The Intel PT decoder limits the number of unconditional branches (e.g.
      jmps) decoded without consuming any trace packets. Generally, a loop
      needs a conditional branch which generates a TNT packet, whereas a "ret"
      instruction will generate a TIP or TNT packet. So exceeding the limit is
      assumed to be a never-ending loop, which can happen if there has been a
      decoding error putting the decoder at the wrong place in the code.
      
      Up until now, the limit of 10000 has been enough but some analytic
      purposes have been reported to exceed that.
      
      Increase the limit to 100000, and make it configurable via perf config
      intel-pt.max-loops. Also amend the "Never-ending loop" message to
      mention the configuration entry.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lore.kernel.org/lkml/20210701175132.3977-1-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b4b046ff
    • Jin Yao's avatar
      perf stat: Disable the NMI watchdog message on hybrid · 493be70a
      Jin Yao authored
      If we run a single workload that only runs on big core, there is always
      a ugly message about disabling the NMI watchdog because the atom is not
      counted.
      
      Before:
      
        # ./perf stat true
      
         Performance counter stats for 'true':
      
                      0.43 msec task-clock                #    0.396 CPUs utilized
                         0      context-switches          #    0.000 /sec
                         0      cpu-migrations            #    0.000 /sec
                        45      page-faults               #  103.918 K/sec
                   639,634      cpu_core/cycles/          #    1.477 G/sec
             <not counted>      cpu_atom/cycles/                                              (0.00%)
                   643,498      cpu_core/instructions/    #    1.486 G/sec
             <not counted>      cpu_atom/instructions/                                        (0.00%)
                   123,715      cpu_core/branches/        #  285.694 M/sec
             <not counted>      cpu_atom/branches/                                            (0.00%)
                     4,094      cpu_core/branch-misses/   #    9.454 M/sec
             <not counted>      cpu_atom/branch-misses/                                       (0.00%)
      
               0.001092407 seconds time elapsed
      
               0.001144000 seconds user
               0.000000000 seconds sys
      
        Some events weren't counted. Try disabling the NMI watchdog:
                echo 0 > /proc/sys/kernel/nmi_watchdog
                perf stat ...
                echo 1 > /proc/sys/kernel/nmi_watchdog
      
        # ./perf stat -e '{cpu_atom/cycles/,msr/tsc/}' true
      
         Performance counter stats for 'true':
      
             <not counted>      cpu_atom/cycles/                                              (0.00%)
             <not counted>      msr/tsc/                                                      (0.00%)
      
               0.001904106 seconds time elapsed
      
               0.001947000 seconds user
               0.000000000 seconds sys
      
        Some events weren't counted. Try disabling the NMI watchdog:
                echo 0 > /proc/sys/kernel/nmi_watchdog
                perf stat ...
                echo 1 > /proc/sys/kernel/nmi_watchdog
        The events in group usually have to be from the same PMU. Try reorganizing the group.
      
      Now we disable the NMI watchdog message on hybrid, otherwise there
      are too many false positives.
      
      After:
      
        # ./perf stat true
      
         Performance counter stats for 'true':
      
                      0.79 msec task-clock                #    0.419 CPUs utilized
                         0      context-switches          #    0.000 /sec
                         0      cpu-migrations            #    0.000 /sec
                        48      page-faults               #   60.889 K/sec
                   777,692      cpu_core/cycles/          #  986.519 M/sec
             <not counted>      cpu_atom/cycles/                                              (0.00%)
                   669,147      cpu_core/instructions/    #  848.828 M/sec
             <not counted>      cpu_atom/instructions/                                        (0.00%)
                   128,635      cpu_core/branches/        #  163.176 M/sec
             <not counted>      cpu_atom/branches/                                            (0.00%)
                     4,089      cpu_core/branch-misses/   #    5.187 M/sec
             <not counted>      cpu_atom/branch-misses/                                       (0.00%)
      
               0.001880649 seconds time elapsed
      
               0.001935000 seconds user
               0.000000000 seconds sys
      
        # ./perf stat -e '{cpu_atom/cycles/,msr/tsc/}' true
      
         Performance counter stats for 'true':
      
             <not counted>      cpu_atom/cycles/                                              (0.00%)
             <not counted>      msr/tsc/                                                      (0.00%)
      
               0.000963319 seconds time elapsed
      
               0.000999000 seconds user
               0.000000000 seconds sys
      Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
      Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jin Yao <yao.jin@intel.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20210610034557.29766-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      493be70a
    • Kajol Jain's avatar
      perf vendor events power10: Adds 24x7 nest metric events for power10 platform · a3cbcadf
      Kajol Jain authored
      Patch adds 24x7 nest metric events for POWER10.
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Tested-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
      Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Paul Clarke <pc@us.ibm.com>
      Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lore.kernel.org/lkml/20210628064935.163465-1-kjain@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a3cbcadf
    • Kajol Jain's avatar
      perf script python: Fix buffer size to report iregs in perf script · dea8cfcc
      Kajol Jain authored
      Commit 48a1f565 ("perf script python: Add more PMU fields to
      event handler dict") added functionality to report fields like weight,
      iregs, uregs etc via perf report.  That commit predefined buffer size to
      512 bytes to print those fields.
      
      But in PowerPC, since we added extended regs support in:
      
        068aeea3 ("perf powerpc: Support exposing Performance Monitor Counter SPRs as part of extended regs")
        d735599a ("powerpc/perf: Add extended regs support for power10 platform")
      
      Now iregs can carry more bytes of data and this predefined buffer size
      can result to data loss in perf script output.
      
      This patch resolves this issue by making the buffer size dynamic, based
      on the number of registers needed to print. It also changes the
      regs_map() return type from int to void, as it is not being used by the
      set_regs_in_dict(), its only caller.
      
      Fixes: 068aeea3 ("perf powerpc: Support exposing Performance Monitor Counter SPRs as part of extended regs")
      Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
      Tested-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
      Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Paul Clarke <pc@us.ibm.com>
      Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: http://lore.kernel.org/lkml/20210628062341.155839-1-kjain@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      dea8cfcc
    • Justin M. Forbes's avatar
      perf trace: Fix the perf trace link location · e63cbfa3
      Justin M. Forbes authored
      The install perf_dlfilter.h patch included what seems to be a typo in
      the Makefile.perf, which changed the location of the trace link from
      '$(DESTDIR_SQ)$(bindir_SQ)/trace' to '$(DESTDIR_SQ)$(dir_SQ)/trace'.
      
      This reverts it back to the correct location.
      
      Fixes: 0beb2183 ("perf build: Install perf_dlfilter.h")
      Signed-off-by: default avatarJustin M. Forbes <jforbes@fedoraproject.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Justin M. Forbes <jmforbes@linuxtx.org>
      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/20210706185952.116121-1-jforbes@fedoraproject.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e63cbfa3
    • Riccardo Mancini's avatar
      perf top: Fix overflow in elf_sec__is_text() · 83952286
      Riccardo Mancini authored
      ASan reports a heap-buffer-overflow in elf_sec__is_text when using perf-top.
      
      The bug is caused by the fact that secstrs is built from runtime_ss, while
      shdr is built from syms_ss if shdr.sh_type != SHT_NOBITS. Therefore, they
      point to two different ELF files.
      
      This patch renames secstrs to secstrs_run and adds secstrs_sym, so that
      the correct secstrs is chosen depending on shdr.sh_type.
      
        $ ASAN_OPTIONS=abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1 ./perf top
        =================================================================
        ==363148==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x61300009add6 at pc 0x00000049875c bp 0x7f4f56446440 sp 0x7f4f56445bf0
        READ of size 1 at 0x61300009add6 thread T6
          #0 0x49875b in StrstrCheck(void*, char*, char const*, char const*) (/home/user/linux/tools/perf/perf+0x49875b)
          #1 0x4d13a2 in strstr (/home/user/linux/tools/perf/perf+0x4d13a2)
          #2 0xacae36 in elf_sec__is_text /home/user/linux/tools/perf/util/symbol-elf.c:176:9
          #3 0xac3ec9 in elf_sec__filter /home/user/linux/tools/perf/util/symbol-elf.c:187:9
          #4 0xac2c3d in dso__load_sym /home/user/linux/tools/perf/util/symbol-elf.c:1254:20
          #5 0x883981 in dso__load /home/user/linux/tools/perf/util/symbol.c:1897:9
          #6 0x8e6248 in map__load /home/user/linux/tools/perf/util/map.c:332:7
          #7 0x8e66e5 in map__find_symbol /home/user/linux/tools/perf/util/map.c:366:6
          #8 0x7f8278 in machine__resolve /home/user/linux/tools/perf/util/event.c:707:13
          #9 0x5f3d1a in perf_event__process_sample /home/user/linux/tools/perf/builtin-top.c:773:6
          #10 0x5f30e4 in deliver_event /home/user/linux/tools/perf/builtin-top.c:1197:3
          #11 0x908a72 in do_flush /home/user/linux/tools/perf/util/ordered-events.c:244:9
          #12 0x905fae in __ordered_events__flush /home/user/linux/tools/perf/util/ordered-events.c:323:8
          #13 0x9058db in ordered_events__flush /home/user/linux/tools/perf/util/ordered-events.c:341:9
          #14 0x5f19b1 in process_thread /home/user/linux/tools/perf/builtin-top.c:1109:7
          #15 0x7f4f6a21a298 in start_thread /usr/src/debug/glibc-2.33-16.fc34.x86_64/nptl/pthread_create.c:481:8
          #16 0x7f4f697d0352 in clone ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      
      0x61300009add6 is located 10 bytes to the right of 332-byte region [0x61300009ac80,0x61300009adcc)
      allocated by thread T6 here:
      
          #0 0x4f3f7f in malloc (/home/user/linux/tools/perf/perf+0x4f3f7f)
          #1 0x7f4f6a0a88d9  (/lib64/libelf.so.1+0xa8d9)
      
      Thread T6 created by T0 here:
      
          #0 0x464856 in pthread_create (/home/user/linux/tools/perf/perf+0x464856)
          #1 0x5f06e0 in __cmd_top /home/user/linux/tools/perf/builtin-top.c:1309:6
          #2 0x5ef19f in cmd_top /home/user/linux/tools/perf/builtin-top.c:1762:11
          #3 0x7b28c0 in run_builtin /home/user/linux/tools/perf/perf.c:313:11
          #4 0x7b119f in handle_internal_command /home/user/linux/tools/perf/perf.c:365:8
          #5 0x7b2423 in run_argv /home/user/linux/tools/perf/perf.c:409:2
          #6 0x7b0c19 in main /home/user/linux/tools/perf/perf.c:539:3
          #7 0x7f4f696f7b74 in __libc_start_main /usr/src/debug/glibc-2.33-16.fc34.x86_64/csu/../csu/libc-start.c:332:16
      
        SUMMARY: AddressSanitizer: heap-buffer-overflow (/home/user/linux/tools/perf/perf+0x49875b) in StrstrCheck(void*, char*, char const*, char const*)
        Shadow bytes around the buggy address:
          0x0c268000b560: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
          0x0c268000b570: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
          0x0c268000b580: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
          0x0c268000b590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
          0x0c268000b5a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        =>0x0c268000b5b0: 00 00 00 00 00 00 00 00 00 04[fa]fa fa fa fa fa
          0x0c268000b5c0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
          0x0c268000b5d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
          0x0c268000b5e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
          0x0c268000b5f0: 07 fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
          0x0c268000b600: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
        Shadow byte legend (one shadow byte represents 8 application bytes):
          Addressable:           00
          Partially addressable: 01 02 03 04 05 06 07
          Heap left redzone:       fa
          Freed heap region:       fd
          Stack left redzone:      f1
          Stack mid redzone:       f2
          Stack right redzone:     f3
          Stack after return:      f5
          Stack use after scope:   f8
          Global redzone:          f9
          Global init order:       f6
          Poisoned by user:        f7
          Container overflow:      fc
          Array cookie:            ac
          Intra object redzone:    bb
          ASan internal:           fe
          Left alloca redzone:     ca
          Right alloca redzone:    cb
          Shadow gap:              cc
        ==363148==ABORTING
      Suggested-by: default avatarJiri Slaby <jirislaby@kernel.org>
      Signed-off-by: default avatarRiccardo Mancini <rickyman7@gmail.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Fabian Hemmer <copy@copy.sh>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Jiri Slaby <jirislaby@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Remi Bernon <rbernon@codeweavers.com>
      Link: http://lore.kernel.org/lkml/20210621222108.196219-1-rickyman7@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      83952286
    • Riccardo Mancini's avatar
      perf annotate: Fix 's' on source line when disasm is empty · 5a4451e4
      Riccardo Mancini authored
      If the disasm is empty, 's' should fail. Instead it seemingly works,
      hiding the empty lines and causing an assertion error on the next time
      annotate is called (from within perf report).
      
      The problem is caused by a buffer overflow, caused by a wrong exit
      condition in annotate_browser__find_next_asm_line, which checks
      browser->b.top instead of browser->b.entries.
      
      This patch fixes the issue, making annotate_browser__toggle_source
      fail if the disasm is empty (nothing happens to the user).
      
      Fixes: 6de249d6 ("perf annotate: Allow 's' on source code lines")
      Signed-off-by: default avatarRiccardo Mancini <rickyman7@gmail.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.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: Martin Liška <mliska@suse.cz>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20210705161524.72953-1-rickyman7@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5a4451e4
    • Masami Hiramatsu's avatar
      perf probe: Do not show @plt function by default · d5882a92
      Masami Hiramatsu authored
      Fix the perf-probe --functions option do not show the PLT
      stub symbols (*@plt) by default.
      
        -----
        $ ./perf probe -x /usr/lib64/libc-2.33.so -F | head
        a64l
        abort
        abs
        accept
        accept4
        access
        acct
        addmntent
        addseverity
        adjtime
        -----
      Reported-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Signed-off-by: default avatarMasami Hiramatsu <mhriamat@kernel.org>
      Acked-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Heiko Carstens <hca@linux.ibm.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Stefan Liebler <stli@linux.ibm.com>
      Cc: Sven Schnelle <svens@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/162532653450.393143.12621329879630677469.stgit@devnote2Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d5882a92
    • Masami Hiramatsu's avatar
      perf symbol-elf: Decode dynsym even if symtab exists · 87704345
      Masami Hiramatsu authored
      In Fedora34, libc-2.33.so has both .dynsym and .symtab sections and
      most of (not all) symbols moved to .dynsym. In this case, perf only
      decode the symbols in .symtab, and perf probe can not list up the
      functions in the library.
      
      To fix this issue, decode both .symtab and .dynsym sections.
      
      Without this fix,
        -----
        $ ./perf probe -x /usr/lib64/libc-2.33.so -F
        @plt
        @plt
        calloc@plt
        free@plt
        malloc@plt
        memalign@plt
        realloc@plt
        -----
      
      With this fix.
      
        -----
        $ ./perf probe -x /usr/lib64/libc-2.33.so -F
        @plt
        @plt
        a64l
        abort
        abs
        accept
        accept4
        access
        acct
        addmntent
        -----
      Reported-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Acked-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Cc: Heiko Carstens <hca@linux.ibm.com>
      Cc: Stefan Liebler <stli@linux.ibm.com>
      Cc: Sven Schnelle <svens@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/162532652681.393143.10163733179955267999.stgit@devnote2Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      87704345
    • Masami Hiramatsu's avatar
      perf probe: Fix debuginfo__new() to enable build-id based debuginfo · eb4717f7
      Masami Hiramatsu authored
      Fix debuginfo__new() to set the build-id to dso before
      dso__read_binary_type_filename() so that it can find
      DSO_BINARY_TYPE__BUILDID_DEBUGINFO debuginfo correctly.
      
      However, this may not change the result, because elfutils (libdwfl) has
      its own debuginfo finder. With/without this patch, the perf probe
      correctly find the debuginfo file.
      
      This is just a failsafe and keep code's sanity (if you use
      dso__read_binary_type_filename(), you must set the build-id to the dso.)
      Reported-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Acked-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Signed-off-by: default avatarMasami Hiramatsu <mhriamat@kernel.org>
      Cc: Heiko Carstens <hca@linux.ibm.com>
      Cc: Stefan Liebler <stli@linux.ibm.com>
      Cc: Sven Schnelle <svens@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/162532651863.393143.11692691321219235810.stgit@devnote2Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      eb4717f7
  3. 05 Jul, 2021 7 commits
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync files changed by the quotactl_fd new syscall · 44c2cd80
      Arnaldo Carvalho de Melo authored
      To pick the changes in these csets:
      
        64c2c2c6 ("quota: Change quotactl_path() systcall to an fd-based one")
        65ffb3d6 ("quota: Wire up quotactl_fd syscall")
      
      That silences these perf build warnings and add support for those new
      syscalls in tools such as 'perf trace'.
      
      For instance, this is now possible:
      
        # perf trace -v -e quota*
        event qualifier tracepoint filter: (common_pid != 158365 && common_pid != 2512) && (id == 179 || id == 443)
        ^C#
      
      That is the filter expression attached to the raw_syscalls:sys_{enter,exit}
      tracepoints.
      
        $ grep quota tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
        179	common	quotactl		sys_quotactl
        443	common	quotactl_fd		sys_quotactl_fd
        $
      
      This addresses these perf build warnings:
      
        Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/unistd.h' differs from latest version at 'include/uapi/asm-generic/unistd.h'
        diff -u tools/include/uapi/asm-generic/unistd.h include/uapi/asm-generic/unistd.h
        Warning: Kernel ABI header at 'tools/perf/arch/x86/entry/syscalls/syscall_64.tbl' differs from latest version at 'arch/x86/entry/syscalls/syscall_64.tbl'
        diff -u tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
        Warning: Kernel ABI header at 'tools/perf/arch/powerpc/entry/syscalls/syscall.tbl' differs from latest version at 'arch/powerpc/kernel/syscalls/syscall.tbl'
        diff -u tools/perf/arch/powerpc/entry/syscalls/syscall.tbl arch/powerpc/kernel/syscalls/syscall.tbl
        Warning: Kernel ABI header at 'tools/perf/arch/s390/entry/syscalls/syscall.tbl' differs from latest version at 'arch/s390/kernel/syscalls/syscall.tbl'
        diff -u tools/perf/arch/s390/entry/syscalls/syscall.tbl arch/s390/kernel/syscalls/syscall.tbl
        Warning: Kernel ABI header at 'tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl' differs from latest version at 'arch/mips/kernel/syscalls/syscall_n64.tbl'
        diff -u tools/perf/arch/mips/entry/syscalls/syscall_n64.tbl arch/mips/kernel/syscalls/syscall_n64.tbl
      
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      44c2cd80
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync asm-generic/mman-common.h with the kernel · 097e4e9d
      Arnaldo Carvalho de Melo authored
      To pick the changes from:
      
      Fixes: 4ca9b385 ("mm/madvise: introduce MADV_POPULATE_(READ|WRITE) to prefault page tables")
      
      That result in these changes in the tools:
      
        $ tools/perf/trace/beauty/madvise_behavior.sh > before
        $ cp include/uapi/asm-generic/mman-common.h tools/include/uapi/asm-generic/mman-common.h
        $ tools/perf/trace/beauty/madvise_behavior.sh > after
        $ diff -u before after
        --- before	2021-07-05 14:30:15.167212621 -0300
        +++ after	2021-07-05 14:30:26.638462594 -0300
        @@ -18,6 +18,8 @@
         	[19] = "KEEPONFORK",
         	[20] = "COLD",
         	[21] = "PAGEOUT",
        +	[22] = "POPULATE_READ",
        +	[23] = "POPULATE_WRITE",
         	[100] = "HWPOISON",
         	[101] = "SOFT_OFFLINE",
         };
        $
      
      I.e. now when madvise gets those behaviours as args, it will be able to
      translate from the number to a human readable string.
      
      This addresses the following perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/mman-common.h' differs from latest version at 'include/uapi/asm-generic/mman-common.h'
        diff -u tools/include/uapi/asm-generic/mman-common.h include/uapi/asm-generic/mman-common.h
      
      Cc: David Hildenbrand <david@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      097e4e9d
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Update tools's copy of drm/drm.h header · 84d5c07d
      Arnaldo Carvalho de Melo authored
      Picking the changes from:
      
        2e290c8d ("drm: document minimum kernel version for DRM_CLIENT_CAP_*")
        bbf4627b ("drm: clarify and linkify DRM_CLIENT_CAP_WRITEBACK_CONNECTORS docs")
        88938bf3 ("drm: reference mode flags in DRM_CLIENT_CAP_* docs")
      
      Silencing these perf build warnings:
      
        Warning: Kernel ABI header at 'tools/include/uapi/drm/drm.h' differs from latest version at 'include/uapi/drm/drm.h'
        diff -u tools/include/uapi/drm/drm.h include/uapi/drm/drm.h
      
      No changes in tooling as these are just C comment documentation changes.
      
      Cc: Simon Ser <contact@emersion.fr>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      84d5c07d
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync drm/i915_drm.h with the kernel sources · 4a1cddea
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        2459e56f ("drm/i915/uapi: implement object placement extension")
        ebcb4029 ("drm/i915/uapi: introduce drm_i915_gem_create_ext")
        71021729 ("drm/i915/query: Expose memory regions through the query uAPI")
        e3bdccaf ("drm/i915/uapi: convert i915_query and friend to kernel doc")
        19d053d4 ("drm/i915/uapi: convert i915_user_extension to kernel doc")
        2ef6a01f ("drm/i915/uapi: fix kernel doc warnings")
      
      That picks a new ioctl:
      
        $ tools/perf/trace/beauty/drm_ioctl.sh > before
        $ cp include/uapi/drm/i915_drm.h tools/include/uapi/drm/i915_drm.h
        $ tools/perf/trace/beauty/drm_ioctl.sh > after
        $ diff -u before after
        --- before	2021-07-05 14:25:13.247680316 -0300
        +++ after	2021-07-05 14:25:22.454874111 -0300
        @@ -166,4 +166,5 @@
         	[DRM_COMMAND_BASE + 0x39] = "I915_QUERY",
         	[DRM_COMMAND_BASE + 0x3a] = "I915_GEM_VM_CREATE",
         	[DRM_COMMAND_BASE + 0x3b] = "I915_GEM_VM_DESTROY",
        +	[DRM_COMMAND_BASE + 0x3c] = "I915_GEM_CREATE_EXT",
         };
        $
      
      Addressing this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/drm/i915_drm.h' differs from latest version at 'include/uapi/drm/i915_drm.h'
        diff -u tools/include/uapi/drm/i915_drm.h include/uapi/drm/i915_drm.h
      
      Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4a1cddea
    • Arnaldo Carvalho de Melo's avatar
      tools include UAPI: Sync sound/asound.h copy with the kernel sources · 688ef3e3
      Arnaldo Carvalho de Melo authored
      Picking the changes from:
      
        08fdced6 ("ALSA: rawmidi: Add framing mode")
      
      Which entails no changes in the tooling side as it doesn't introduce new
      ioctls.
      
      To silence this perf tools build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/sound/asound.h' differs from latest version at 'include/uapi/sound/asound.h'
        diff -u tools/include/uapi/sound/asound.h include/uapi/sound/asound.h
      
      Cc: David Henningsson <coding@diwic.se>
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      688ef3e3
    • Namhyung Kim's avatar
      perf stat: Enable BPF counter with --for-each-cgroup · 944138f0
      Namhyung Kim authored
      Recently bperf was added to use BPF to count perf events for various
      purposes.  This is an extension for the approach and targetting to
      cgroup usages.
      
      Unlike the other bperf, it doesn't share the events with other
      processes but it'd reduce unnecessary events (and the overhead of
      multiplexing) for each monitored cgroup within the perf session.
      
      When --for-each-cgroup is used with --bpf-counters, it will open
      cgroup-switches event per cpu internally and attach the new BPF
      program to read given perf_events and to aggregate the results for
      cgroups.  It's only called when task is switched to a task in a
      different cgroup.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarSong Liu <songliubraving@fb.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20210701211227.1403788-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      944138f0
    • Namhyung Kim's avatar
      perf report: Fix --task and --stat with pipe input · 892ba7f1
      Namhyung Kim authored
      Current 'perf report' fails to process a pipe input when --task or
      --stat options are used.  This is because they reset all the tool
      callbacks and fails to find a matching event for a sample.
      
      When pipe input is used, the event info is passed via ATTR records so it
      needs to handle that operation.  Otherwise the following error occurs.
      Note, -14 (= -EFAULT) comes from evlist__parse_sample():
      
        # perf record -a -o- sleep 1 | perf report -i- --stat
        Can't parse sample, err = -14
        0x271044 [0x38]: failed to process type: 9
        Error:
        failed to process sample
        #
      
      Committer testing:
      
      Before:
      
        $ perf record -o- sleep 1 | perf report -i- --stat
        Can't parse sample, err = -14
        [ perf record: Woken up 1 times to write data ]
        0x1350 [0x30]: failed to process type: 9
        Error:
        failed to process sample
        [ perf record: Captured and wrote 0.000 MB - ]
        $
      
      After:
      
        $ perf record -o- sleep 1 | perf report -i- --stat
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.000 MB - ]
      
        Aggregated stats:
                   TOTAL events:         41
                    COMM events:          2  ( 4.9%)
                    EXIT events:          1  ( 2.4%)
                  SAMPLE events:          9  (22.0%)
                   MMAP2 events:          4  ( 9.8%)
                    ATTR events:          1  ( 2.4%)
          FINISHED_ROUND events:          1  ( 2.4%)
              THREAD_MAP events:          1  ( 2.4%)
                 CPU_MAP events:          1  ( 2.4%)
            EVENT_UPDATE events:          1  ( 2.4%)
               TIME_CONV events:          1  ( 2.4%)
                 FEATURE events:         19  (46.3%)
        cycles:uhH stats:
                  SAMPLE events:          9
        $
      
      Fixes: a4a4d0a7 ("perf report: Add --stats option to display quick data statistics")
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20210630043058.1131295-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      892ba7f1
  4. 04 Jul, 2021 12 commits
    • Linus Torvalds's avatar
      iov_iter: remove uaccess_kernel() warning from iov_iter_init() · a180bd1d
      Linus Torvalds authored
      This warning was there to catch any architectures that still use
      CONFIG_SET_FS, and that would mis-use iov_iter_init() for anything that
      wasn't a proper user space pointer.  So that
      
              WARN_ON_ONCE(uaccess_kernel());
      
      makes perfect conceptual sense: you really shouldn't use a kernel
      pointer with set_fs(KERNEL_DS) and then pass it to iov_iter_init().
      
      HOWEVER.
      
      Guenter Roeck reports that this warning actually triggers in no-mmu
      configurations of both ARM and m68k.  And the reason isn't that they
      pass in a kernel pointer under set_fs(KERNEL_DS) at all: the reason is
      that in those configurations, "uaccess_kernel()" is simply not reliable.
      
      Those no-mmu setups set USER_DS and KERNEL_DS to the same values, so you
      can't test for the difference.
      
      In particular, the no-mmu case for ARM does
      
         #define USER_DS                 KERNEL_DS
         #define uaccess_kernel()        (true)
      
      so USER_DS and KERNEL_DS have the same value, and uaccess_kernel() is
      always trivially true.
      
      The m68k case is slightly different and not quite as obvious.  It does
      (spread out over multiple header files just to be extra exciting:
      asm/processor.h, asm/segment.h and asm-generic/uaccess.h):
      
         #define TASK_SIZE       (0xFFFFFFFFUL)
         #define USER_DS         MAKE_MM_SEG(TASK_SIZE)
         #define KERNEL_DS       MAKE_MM_SEG(~0UL)
         #define get_fs()        (current_thread_info()->addr_limit)
         #define uaccess_kernel() (get_fs().seg == KERNEL_DS.seg)
      
      but the end result is the same: uaccess_kernel() will always be true,
      because USER_DS and KERNEL_DS end up having the same value, even if that
      value is defined differently.
      
      This is very arguably a misfeature in those implementations, but in the
      end we don't really care.  All modern architectures have gotten rid of
      set_fs() already, and generic kernel code never uses it.  And while the
      sanity check was a nice idea, an architecture would have to go the extra
      mile to actually break this.
      
      So this well-intentioned warning isn't really all that likely to find
      anything but these known false positives, and as such just isn't worth
      maintaining.
      Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Fixes: 8cd54c1c ("iov_iter: separate direction from flavour")
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a180bd1d
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-2021.07.04' of... · 28e92f99
      Linus Torvalds authored
      Merge branch 'core-rcu-2021.07.04' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu
      
      Pull RCU updates from Paul McKenney:
      
       - Bitmap parsing support for "all" as an alias for all bits
      
       - Documentation updates
      
       - Miscellaneous fixes, including some that overlap into mm and lockdep
      
       - kvfree_rcu() updates
      
       - mem_dump_obj() updates, with acks from one of the slab-allocator
         maintainers
      
       - RCU NOCB CPU updates, including limited deoffloading
      
       - SRCU updates
      
       - Tasks-RCU updates
      
       - Torture-test updates
      
      * 'core-rcu-2021.07.04' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu: (78 commits)
        tasks-rcu: Make show_rcu_tasks_gp_kthreads() be static inline
        rcu-tasks: Make ksoftirqd provide RCU Tasks quiescent states
        rcu: Add missing __releases() annotation
        rcu: Remove obsolete rcu_read_unlock() deadlock commentary
        rcu: Improve comments describing RCU read-side critical sections
        rcu: Create an unrcu_pointer() to remove __rcu from a pointer
        srcu: Early test SRCU polling start
        rcu: Fix various typos in comments
        rcu/nocb: Unify timers
        rcu/nocb: Prepare for fine-grained deferred wakeup
        rcu/nocb: Only cancel nocb timer if not polling
        rcu/nocb: Delete bypass_timer upon nocb_gp wakeup
        rcu/nocb: Cancel nocb_timer upon nocb_gp wakeup
        rcu/nocb: Allow de-offloading rdp leader
        rcu/nocb: Directly call __wake_nocb_gp() from bypass timer
        rcu: Don't penalize priority boosting when there is nothing to boost
        rcu: Point to documentation of ordering guarantees
        rcu: Make rcu_gp_cleanup() be noinline for tracing
        rcu: Restrict RCU_STRICT_GRACE_PERIOD to at most four CPUs
        rcu: Make show_rcu_gp_kthreads() dump rcu_node structures blocking GP
        ...
      28e92f99
    • Linus Torvalds's avatar
      Merge branch 'lkmm.2021.05.10c' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · da803f82
      Linus Torvalds authored
      Pull lkmm fixlet from Paul E McKenney.
      
      Fix missing underscore in Linux-kernel memory model docs.
      
      * 'lkmm.2021.05.10c' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
        tools/memory-model: Fix smp_mb__after_spinlock() spelling
      da803f82
    • Linus Torvalds's avatar
      Merge branch 'kcsan.2021.05.18a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · b97efd5e
      Linus Torvalds authored
      Pull KCSAN updates from Paul McKenney.
      
      * 'kcsan.2021.05.18a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
        kcsan: Use URL link for pointing access-marking.txt
        kcsan: Document "value changed" line
        kcsan: Report observed value changes
        kcsan: Remove kcsan_report_type
        kcsan: Remove reporting indirection
        kcsan: Refactor access_info initialization
        kcsan: Fold panic() call into print_report()
        kcsan: Refactor passing watchpoint/other_info
        kcsan: Distinguish kcsan_report() calls
        kcsan: Simplify value change detection
        kcsan: Add pointer to access-marking.txt to data_race() bullet
      b97efd5e
    • Linus Torvalds's avatar
      Merge tag 'memblock-v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock · a412897f
      Linus Torvalds authored
      Pull memblock updates from Mike Rapoport:
       "Fix arm crashes caused by holes in the memory map.
      
        The coordination between freeing of unused memory map, pfn_valid() and
        core mm assumptions about validity of the memory map in various ranges
        was not designed for complex layouts of the physical memory with a lot
        of holes all over the place.
      
        Kefen Wang reported crashes in move_freepages() on a system with the
        following memory layout [1]:
      
      	node 0: [mem 0x0000000080a00000-0x00000000855fffff]
      	node 0: [mem 0x0000000086a00000-0x0000000087dfffff]
      	node 0: [mem 0x000000008bd00000-0x000000008c4fffff]
      	node 0: [mem 0x000000008e300000-0x000000008ecfffff]
      	node 0: [mem 0x0000000090d00000-0x00000000bfffffff]
      	node 0: [mem 0x00000000cc000000-0x00000000dc9fffff]
      	node 0: [mem 0x00000000de700000-0x00000000de9fffff]
      	node 0: [mem 0x00000000e0800000-0x00000000e0bfffff]
      	node 0: [mem 0x00000000f4b00000-0x00000000f6ffffff]
      	node 0: [mem 0x00000000fda00000-0x00000000ffffefff]
      
        These crashes can be mitigated by enabling CONFIG_HOLES_IN_ZONE on ARM
        and essentially turning pfn_valid_within() to pfn_valid() instead of
        having it hardwired to 1 on that architecture, but this would require
        to keep CONFIG_HOLES_IN_ZONE solely for this purpose.
      
        A cleaner approach is to update ARM's implementation of pfn_valid() to
        take into accounting rounding of the freed memory map to pageblock
        boundaries and make sure it returns true for PFNs that have memory map
        entries even if there is no physical memory backing those PFNs"
      
      Link: https://lore.kernel.org/lkml/2a1592ad-bc9d-4664-fd19-f7448a37edc0@huawei.com [1]
      
      * tag 'memblock-v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock:
        arm: extend pfn_valid to take into account freed memory map alignment
        memblock: ensure there is no overflow in memblock_overlaps_region()
        memblock: align freed memory map on pageblock boundaries with SPARSEMEM
        memblock: free_unused_memmap: use pageblock units instead of MAX_ORDER
      a412897f
    • Linus Torvalds's avatar
      Merge tag 's390-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 2bb919b6
      Linus Torvalds authored
      Pull s390 updates from Vasily Gorbik:
      
       - Rework inline asm to get rid of error prone "register asm"
         constructs, which are problematic especially when code
         instrumentation is enabled.
      
         In particular introduce and use register pair union to allocate
         even/odd register pairs. Unfortunately this breaks compatibility with
         older clang compilers and minimum clang version for s390 has been
         raised to 13.
      
           https://lore.kernel.org/linux-next/CAK7LNARuSmPCEy-ak0erPrPTgZdGVypBROFhtw+=3spoGoYsyw@mail.gmail.com/
      
       - Fix gcc 11 warnings, which triggered various minor reworks all over
         the code.
      
       - Add zstd kernel image compression support.
      
       - Rework boot CPU lowcore handling.
      
       - De-duplicate and move kernel memory layout setup logic earlier.
      
       - Few fixes in preparation for FORTIFY_SOURCE performing compile-time
         and run-time field bounds checking for mem functions.
      
       - Remove broken and unused power management support leftovers in s390
         drivers.
      
       - Disable stack-protector for decompressor and purgatory to fix
         buildroot build.
      
       - Fix vt220 sclp console name to match the char device name.
      
       - Enable HAVE_IOREMAP_PROT and add zpci_set_irq()/zpci_clear_irq() in
         zPCI code.
      
       - Remove some implausible WARN_ON_ONCEs and remove arch specific
         counter transaction call backs in favour of default transaction
         handling in perf code.
      
       - Extend/add new uevents for online/config/mode state changes of AP
         card / queue device in zcrypt.
      
       - Minor entry and ccwgroup code improvements.
      
       - Other small various fixes and improvements all over the code.
      
      * tag 's390-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (91 commits)
        s390/dasd: use register pair instead of register asm
        s390/qdio: get rid of register asm
        s390/ioasm: use symbolic names for asm operands
        s390/ioasm: get rid of register asm
        s390/cmf: get rid of register asm
        s390/lib,string: get rid of register asm
        s390/lib,uaccess: get rid of register asm
        s390/string: get rid of register asm
        s390/cmpxchg: use register pair instead of register asm
        s390/mm,pages-states: get rid of register asm
        s390/lib,xor: get rid of register asm
        s390/timex: get rid of register asm
        s390/hypfs: use register pair instead of register asm
        s390/zcrypt: Switch to flexible array member
        s390/speculation: Use statically initialized const for instructions
        virtio/s390: get rid of open-coded kvm hypercall
        s390/pci: add zpci_set_irq()/zpci_clear_irq()
        scripts/min-tool-version.sh: Raise minimum clang version to 13.0.0 for s390
        s390/ipl: use register pair instead of register asm
        s390/mem_detect: fix tprot() program check new psw handling
        ...
      2bb919b6
    • Linus Torvalds's avatar
      Merge tag 'csky-for-linus-5.14-rc1' of git://github.com/c-sky/csky-linux · 0d4d4c6f
      Linus Torvalds authored
      Pull arch/csky updates from Guo Ren:
       "A small cleanup and a fixup"
      
      * tag 'csky-for-linus-5.14-rc1' of git://github.com/c-sky/csky-linux:
        csky: Kconfig: Remove unused selects
        csky: syscache: Fixup duplicate cache flush
      0d4d4c6f
    • Linus Torvalds's avatar
      Merge tag 'cxl-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · 0c66a95c
      Linus Torvalds authored
      Pull CXL (Compute Express Link) updates from Dan Williams:
       "This subsystem is still in the build-out phase as the bulk of the
        update is improvements to enumeration and fleshing out the device
        model. In terms of new features, more mailbox commands have been added
        to the allowed-list in support of persistent memory provisioning
        support targeting v5.15.
      
        The critical update from an enumeration perspective is support for the
        CXL Fixed Memory Window Structure that indicates to Linux which system
        physical address ranges decode to the CXL Host Bridges in the system.
        This allows the driver to detect which address ranges have been mapped
        by firmware and what address ranges are available for future hotplug.
      
        So, again, mostly skeleton this round, with more meat targeting v5.15.
      
        Summary:
      
         - Add support for the CXL Fixed Memory Window Structure, a recent
           extension of the ACPI CEDT (CXL Early Discovery Table)
      
         - Add infrastructure for component registers
      
         - Add HDM (Host-managed device memory) decoder definitions
      
         - Define a device model for an HDM decoder tree
      
         - Bridge CXL persistent memory capabilities to an NVDIMM bus /
           device-model
      
         - Switch to fine grained mapping of CXL MMIO registers to allow
           different drivers / system software to own individual register
           blocks
      
         - Enable media provisioning commands, and publish the label storage
           area size in sysfs
      
         - Miscellaneous cleanups and fixes"
      
      * tag 'cxl-for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl: (34 commits)
        cxl/pci: Rename CXL REGLOC ID
        cxl/acpi: Use the ACPI CFMWS to create static decoder objects
        cxl/acpi: Add the Host Bridge base address to CXL port objects
        cxl/pmem: Register 'pmem' / cxl_nvdimm devices
        libnvdimm: Drop unused device power management support
        libnvdimm: Export nvdimm shutdown helper, nvdimm_delete()
        cxl/pmem: Add initial infrastructure for pmem support
        cxl/core: Add cxl-bus driver infrastructure
        cxl/pci: Add media provisioning required commands
        cxl/component_regs: Fix offset
        cxl/hdm: Fix decoder count calculation
        cxl/acpi: Introduce cxl_decoder objects
        cxl/acpi: Enumerate host bridge root ports
        cxl/acpi: Add downstream port data to cxl_port instances
        cxl/Kconfig: Default drivers to CONFIG_CXL_BUS
        cxl/acpi: Introduce the root of a cxl_port topology
        cxl/pci: Fixup devm_cxl_iomap_block() to take a 'struct device *'
        cxl/pci: Add HDM decoder capabilities
        cxl/pci: Reserve individual register block regions
        cxl/pci: Map registers based on capabilities
        ...
      0c66a95c
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-mergewindow' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 855ff900
      Linus Torvalds authored
      Pull i2c updates from Wolfram Sang:
      
       - core supports now bus regulators controlling power for SCL/SDA
      
       - quite some DT binding conversions to YAML
      
       - added a seperate DT binding for the optional SMBus Alert feature
      
       - documentation with examples how to deal with I2C sysfs files
      
       - some bigger rework for the i801 driver
      
       - and a few usual driver updates
      
      * 'i2c/for-mergewindow' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (42 commits)
        i2c: ali1535: mention that the device should not be disabled
        i2c: mpc: Restore reread of I2C status register
        i2c: core-smbus: Expose PEC calculate function for generic use
        Documentation: i2c: Add doc for I2C sysfs
        i2c: core: Disable client irq on reboot/shutdown
        dt-bindings: i2c: update bindings for MT8195 SoC
        i2c: imx: Fix some checkpatch warnings
        i2c: davinci: Simplify with dev_err_probe()
        i2c: cadence: Simplify with dev_err_probe()
        i2c: xiic: Simplify with dev_err_probe()
        i2c: cadence: Clear HOLD bit before xfer_size register rolls over
        dt-bindings: i2c: ce4100: Replace "ti,pcf8575" by "nxp,pcf8575"
        i2c: i801: Improve i801_setup_hstcfg
        i2c: i801: Use driver name constant instead of function dev_driver_string
        i2c: i801: Simplify initialization of i2c_board_info in i801_probe_optional_slaves
        i2c: i801: Improve status polling
        i2c: cht-wc: Replace of_node by NULL
        i2c: riic: Add RZ/G2L support
        dt-bindings: i2c: renesas,riic: Document RZ/G2L I2C controller
        dt-bindings: i2c: renesas,iic: Convert to json-schema
        ...
      855ff900
    • Martin K. Petersen's avatar
      scsi: blkcg: Fix application ID config options · d2500a0c
      Martin K. Petersen authored
      Commit d2bcbeab ("scsi: blkcg: Add app identifier support for
      blkcg") introduced an FC_APPID config option under SCSI. However, the
      added config option is not used anywhere. Simply remove it.
      
      The block layer BLK_CGROUP_FC_APPID config option is what actually
      controls whether the application ID code should be built or not. Make
      this option dependent on NVMe over FC since that is currently the only
      transport which supports the capability.
      
      Fixes: d2bcbeab ("scsi: blkcg: Add app identifier support for blkcg")
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d2500a0c
    • Guo Ren's avatar
      csky: Kconfig: Remove unused selects · 90dc8c0e
      Guo Ren authored
       - GENERIC_ALLOCATOR is duplicated
       - Remove USB_ARCH_HAS_OHCI & USB_ARCH_HAS_EHCI, because they
         have been removed from linux.
      Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      90dc8c0e
    • Guo Ren's avatar
      csky: syscache: Fixup duplicate cache flush · 6ea42c84
      Guo Ren authored
      The current csky logic of sys_cacheflush is wrong, it'll cause
      icache flush call dcache flush again. Now fixup it with a
      conditional "break & fallthrough".
      
      Fixes: 997153b9 ("csky: Add flush_icache_mm to defer flush icache all")
      Fixes: 0679d29d ("csky: fix syscache.c fallthrough warning")
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Co-Developed-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarGuo Ren <guoren@linux.alibaba.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      6ea42c84
  5. 03 Jul, 2021 6 commits
    • Linus Torvalds's avatar
      Merge tag 'leds-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds · 303392fd
      Linus Torvalds authored
      Pull LED updates from Pavel Machek:
       "This contains quite a lot of fixes, with more fixes in my inbox that
        did not make it (sorry)"
      
      * tag 'leds-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds: (36 commits)
        leds: lgm: Fix up includes
        leds: ktd2692: Fix an error handling path
        leds: as3645a: Fix error return code in as3645a_parse_node()
        leds: turris-omnia: add missing MODULE_DEVICE_TABLE
        leds: lp55xx: Initialize enable GPIO direction to output
        leds: lm36274: Add missed property.h
        leds: el15203000: Make error handling more robust
        leds: pwm: Make error handling more robust
        leds: lt3593: Make use of device properties
        leds: lp50xx: Put fwnode in error case during ->probe()
        leds: lm3697: Don't spam logs when probe is deferred
        leds: lm3692x: Put fwnode in any case during ->probe()
        leds: lm36274: Correct headers (of*.h -> mod_devicetable.h)
        leds: lm36274: Put fwnode in error case during ->probe()
        leds: lm3532: Make error handling more robust
        leds: lm3532: select regmap I2C API
        leds: lgm-sso: Drop duplicate NULL check for GPIO operations
        leds: lgm-sso: Remove unneeded of_match_ptr()
        leds: lgm-sso: Fix clock handling
        leds: el15203000: Introduce to_el15203000_led() helper
        ...
      303392fd
    • Linus Torvalds's avatar
      Merge tag 'vfio-v5.14-rc1' of git://github.com/awilliam/linux-vfio · 8e8d9442
      Linus Torvalds authored
      Pull VFIO updates from Alex Williamson:
      
       - Module reference fixes, structure renaming (Max Gurtovoy)
      
       - Export and use common pci_dev_trylock() (Luis Chamberlain)
      
       - Enable direct mdev device creation and probing by parent (Christoph
         Hellwig & Jason Gunthorpe)
      
       - Fix mdpy error path leak (Colin Ian King)
      
       - Fix mtty list entry leak (Jason Gunthorpe)
      
       - Enforce mtty device limit (Alex Williamson)
      
       - Resolve concurrent vfio-pci mmap faults (Alex Williamson)
      
      * tag 'vfio-v5.14-rc1' of git://github.com/awilliam/linux-vfio:
        vfio/pci: Handle concurrent vma faults
        vfio/mtty: Enforce available_instances
        vfio/mtty: Delete mdev_devices_list
        vfio: use the new pci_dev_trylock() helper to simplify try lock
        PCI: Export pci_dev_trylock() and pci_dev_unlock()
        vfio/mdpy: Fix memory leak of object mdev_state->vconfig
        vfio/iommu_type1: rename vfio_group struck to vfio_iommu_group
        vfio/mbochs: Convert to use vfio_register_group_dev()
        vfio/mdpy: Convert to use vfio_register_group_dev()
        vfio/mtty: Convert to use vfio_register_group_dev()
        vfio/mdev: Allow the mdev_parent_ops to specify the device driver to bind
        vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE
        driver core: Export device_driver_attach()
        driver core: Don't return EPROBE_DEFER to userspace during sysfs bind
        driver core: Flow the return code from ->probe() through to sysfs bind
        driver core: Better distinguish probe errors in really_probe
        driver core: Pull required checks into driver_probe_device()
        vfio/platform: remove unneeded parent_module attribute
        vfio: centralize module refcount in subsystem layer
      8e8d9442
    • Linus Torvalds's avatar
      Merge branch 'work.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 58ec9059
      Linus Torvalds authored
      Pull vfs name lookup updates from Al Viro:
       "Small namei.c patch series, mostly to simplify the rules for nameidata
        state. It's actually from the previous cycle - but I didn't post it
        for review in time...
      
        Changes visible outside of fs/namei.c: file_open_root() calling
        conventions change, some freed bits in LOOKUP_... space"
      
      * 'work.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        namei: make sure nd->depth is always valid
        teach set_nameidata() to handle setting the root as well
        take LOOKUP_{ROOT,ROOT_GRABBED,JUMPED} out of LOOKUP_... space
        switch file_open_root() to struct path
      58ec9059
    • Linus Torvalds's avatar
      Merge branch 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · d3acb15a
      Linus Torvalds authored
      Pull iov_iter updates from Al Viro:
       "iov_iter cleanups and fixes.
      
        There are followups, but this is what had sat in -next this cycle. IMO
        the macro forest in there became much thinner and easier to follow..."
      
      * 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (37 commits)
        csum_and_copy_to_pipe_iter(): leave handling of csum_state to caller
        clean up copy_mc_pipe_to_iter()
        pipe_zero(): we don't need no stinkin' kmap_atomic()...
        iov_iter: clean csum_and_copy_...() primitives up a bit
        copy_page_from_iter(): don't need kmap_atomic() for kvec/bvec cases
        copy_page_to_iter(): don't bother with kmap_atomic() for bvec/kvec cases
        iterate_xarray(): only of the first iteration we might get offset != 0
        pull handling of ->iov_offset into iterate_{iovec,bvec,xarray}
        iov_iter: make iterator callbacks use base and len instead of iovec
        iov_iter: make the amount already copied available to iterator callbacks
        iov_iter: get rid of separate bvec and xarray callbacks
        iov_iter: teach iterate_{bvec,xarray}() about possible short copies
        iterate_bvec(): expand bvec.h macro forest, massage a bit
        iov_iter: unify iterate_iovec and iterate_kvec
        iov_iter: massage iterate_iovec and iterate_kvec to logics similar to iterate_bvec
        iterate_and_advance(): get rid of magic in case when n is 0
        csum_and_copy_to_iter(): massage into form closer to csum_and_copy_from_iter()
        iov_iter: replace iov_iter_copy_from_user_atomic() with iterator-advancing variant
        [xarray] iov_iter_npages(): just use DIV_ROUND_UP()
        iov_iter_npages(): don't bother with iterate_all_kinds()
        ...
      d3acb15a
    • Linus Torvalds's avatar
      Merge branch 'work.d_path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · f92a322a
      Linus Torvalds authored
      Pull vfs d_path() updates from Al Viro:
       "d_path.c refactoring"
      
      * 'work.d_path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        getcwd(2): clean up error handling
        d_path: prepend_path() is unlikely to return non-zero
        d_path: prepend_path(): lift the inner loop into a new helper
        d_path: prepend_path(): lift resetting b in case when we'd return 3 out of loop
        d_path: prepend_path(): get rid of vfsmnt
        d_path: introduce struct prepend_buffer
        d_path: make prepend_name() boolean
        d_path: lift -ENAMETOOLONG handling into callers of prepend_path()
        d_path: don't bother with return value of prepend()
        getcwd(2): saner logics around prepend_path() call
        d_path: get rid of path_with_deleted()
        d_path: regularize handling of root dentry in __dentry_path()
        d_path: saner calling conventions for __dentry_path()
        d_path: "\0" is {0,0}, not {0}
      f92a322a
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 757fa80f
      Linus Torvalds authored
      Pull tracing updates from Steven Rostedt:
      
       - Added option for per CPU threads to the hwlat tracer
      
       - Have hwlat tracer handle hotplug CPUs
      
       - New tracer: osnoise, that detects latency caused by interrupts,
         softirqs and scheduling of other tasks.
      
       - Added timerlat tracer that creates a thread and measures in detail
         what sources of latency it has for wake ups.
      
       - Removed the "success" field of the sched_wakeup trace event. This has
         been hardcoded as "1" since 2015, no tooling should be looking at it
         now. If one exists, we can revert this commit, fix that tool and try
         to remove it again in the future.
      
       - tgid mapping fixed to handle more than PID_MAX_DEFAULT pids/tgids.
      
       - New boot command line option "tp_printk_stop", as tp_printk causes
         trace events to write to console. When user space starts, this can
         easily live lock the system. Having a boot option to stop just after
         boot up is useful to prevent that from happening.
      
       - Have ftrace_dump_on_oops boot command line option take numbers that
         match the numbers shown in /proc/sys/kernel/ftrace_dump_on_oops.
      
       - Bootconfig clean ups, fixes and enhancements.
      
       - New ktest script that tests bootconfig options.
      
       - Add tracepoint_probe_register_may_exist() to register a tracepoint
         without triggering a WARN*() if it already exists. BPF has a path
         from user space that can do this. All other paths are considered a
         bug.
      
       - Small clean ups and fixes
      
      * tag 'trace-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (49 commits)
        tracing: Resize tgid_map to pid_max, not PID_MAX_DEFAULT
        tracing: Simplify & fix saved_tgids logic
        treewide: Add missing semicolons to __assign_str uses
        tracing: Change variable type as bool for clean-up
        trace/timerlat: Fix indentation on timerlat_main()
        trace/osnoise: Make 'noise' variable s64 in run_osnoise()
        tracepoint: Add tracepoint_probe_register_may_exist() for BPF tracing
        tracing: Fix spelling in osnoise tracer "interferences" -> "interference"
        Documentation: Fix a typo on trace/osnoise-tracer
        trace/osnoise: Fix return value on osnoise_init_hotplug_support
        trace/osnoise: Make interval u64 on osnoise_main
        trace/osnoise: Fix 'no previous prototype' warnings
        tracing: Have osnoise_main() add a quiescent state for task rcu
        seq_buf: Make trace_seq_putmem_hex() support data longer than 8
        seq_buf: Fix overflow in seq_buf_putmem_hex()
        trace/osnoise: Support hotplug operations
        trace/hwlat: Support hotplug operations
        trace/hwlat: Protect kdata->kthread with get/put_online_cpus
        trace: Add timerlat tracer
        trace: Add osnoise tracer
        ...
      757fa80f