1. 15 Aug, 2023 6 commits
    • Ian Rogers's avatar
      perf bpf examples: With no BPF events remove examples · 5056c99e
      Ian Rogers authored
      The examples were used to give demonstrations of BPF events but such
      functionality is now subsumed by using --filter with 'perf record' or
      the direct use of BPF skeletons.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJiri 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: Andrii Nakryiko <andrii@kernel.org>
      Cc: Anshuman Khandual <anshuman.khandual@arm.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Carsten Haitzler <carsten.haitzler@arm.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Fangrui Song <maskray@google.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@amd.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
      Cc: Tom Rix <trix@redhat.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: Yang Jihong <yangjihong1@huawei.com>
      Cc: Yonghong Song <yhs@fb.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230810184853.2860737-4-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5056c99e
    • Ian Rogers's avatar
      perf trace: Migrate BPF augmentation to use a skeleton · 5e6da6be
      Ian Rogers authored
      Previously a BPF event of augmented_raw_syscalls.c could be used to
      enable augmentation of syscalls by perf trace. As BPF events are no
      longer supported, switch to using a BPF skeleton which when attached
      explicitly opens the sysenter and sysexit tracepoints.
      
      The dump map is removed as debugging wasn't supported by the
      augmentation and bpf_printk can be used when necessary.
      
      Remove tools/perf/examples/bpf/augmented_raw_syscalls.c so that the
      rename/migration to a BPF skeleton captures that this was the source.
      
      Committer notes:
      
      Some minor stylistic changes to help visualizing the diff.
      
      Use libbpf_strerror when failing to load the augmented raw syscalls BPF.
      
      Use  bpf_object__for_each_program(prog, trace.skel->obj) to disable auto
      attachment for all but the sys_enter, sys_exit tracepoints, to avoid
      having to add extra lines as we go adding support for more pointer
      receiving syscalls.
      
      Committer testing:
      
        # perf trace -e open*  --max-events=10
           0.000 ( 0.022 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/proc/meminfo", flags: RDONLY|CLOEXEC)    = 11
         208.833 (         ): gnome-terminal/3223 openat(dfd: CWD, filename: "/proc/51250/cmdline")                  ...
         249.993 ( 0.024 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/proc/meminfo", flags: RDONLY|CLOEXEC)    = 11
         250.118 ( 0.030 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.pressure", flags: RDONLY|CLOEXEC) = 11
         250.205 ( 0.016 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.current", flags: RDONLY|CLOEXEC) = 11
         250.244 ( 0.014 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.min", flags: RDONLY|CLOEXEC) = 11
         250.282 ( 0.014 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.low", flags: RDONLY|CLOEXEC) = 11
         250.320 ( 0.014 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.swap.current", flags: RDONLY|CLOEXEC) = 11
         250.355 ( 0.014 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/memory.stat", flags: RDONLY|CLOEXEC) = 11
         250.717 ( 0.016 ms): systemd-oomd/1151 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1001.slice/user@1001.service/memory.pressure", flags: RDONLY|CLOEXEC) = 11
        #
        # perf trace -e *nanosleep*  --max-events=10
               ? (         ): SCTP timer/28304  ... [continued]: clock_nanosleep())                                  = 0
           0.007 (10.058 ms): SCTP timer/28304 clock_nanosleep(rqtp: { .tv_sec: 0, .tv_nsec: 10000000 }, rmtp: 0x7f0466b78de0) = 0
          10.069 (         ): SCTP timer/28304 clock_nanosleep(rqtp: { .tv_sec: 0, .tv_nsec: 10000000 }, rmtp: 0x7f0466b78de0) ...
          10.069 (10.056 ms): SCTP timer/28304  ... [continued]: clock_nanosleep())                                  = 0
          17.059 (         ): podman/3572 nanosleep(rqtp: 0x7fc4f4d75be0)                                    ...
          17.059 (10.061 ms): podman/3572  ... [continued]: nanosleep())                                        = 0
          20.131 (10.059 ms): SCTP timer/28304 clock_nanosleep(rqtp: { .tv_sec: 0, .tv_nsec: 10000000 }, rmtp: 0x7f0466b78de0) = 0
          30.195 (10.038 ms): SCTP timer/28304 clock_nanosleep(rqtp: { .tv_sec: 0, .tv_nsec: 10000000 }, rmtp: 0x7f0466b78de0) = 0
          40.238 (10.057 ms): SCTP timer/28304 clock_nanosleep(rqtp: { .tv_sec: 0, .tv_nsec: 10000000 }, rmtp: 0x7f0466b78de0) = 0
          50.301 (         ): SCTP timer/28304 clock_nanosleep(rqtp: { .tv_sec: 0, .tv_nsec: 10000000 }, rmtp: 0x7f0466b78de0) ...
        #
      
        # perf trace -e perf_event*  -- perf stat -e instructions,cycles,cache-misses sleep 0.1
           0.000 ( 0.011 ms): perf/51331 perf_event_open(attr_uptr: { type: 0 (PERF_TYPE_HARDWARE), size: 136, config: 0x1 (PERF_COUNT_HW_INSTRUCTIONS), sample_type: IDENTIFIER, read_format: TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING, disabled: 1, inherit: 1, enable_on_exec: 1, exclude_guest: 1 }, pid: 51332 (perf), cpu: -1, group_fd: -1, flags: FD_CLOEXEC) = 3
           0.013 ( 0.003 ms): perf/51331 perf_event_open(attr_uptr: { type: 0 (PERF_TYPE_HARDWARE), size: 136, config: 0 (PERF_COUNT_HW_CPU_CYCLES), sample_type: IDENTIFIER, read_format: TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING, disabled: 1, inherit: 1, enable_on_exec: 1, exclude_guest: 1 }, pid: 51332 (perf), cpu: -1, group_fd: -1, flags: FD_CLOEXEC) = 4
           0.017 ( 0.002 ms): perf/51331 perf_event_open(attr_uptr: { type: 0 (PERF_TYPE_HARDWARE), size: 136, config: 0x3 (PERF_COUNT_HW_CACHE_MISSES), sample_type: IDENTIFIER, read_format: TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING, disabled: 1, inherit: 1, enable_on_exec: 1, exclude_guest: 1 }, pid: 51332 (perf), cpu: -1, group_fd: -1, flags: FD_CLOEXEC) = 5
      
       Performance counter stats for 'sleep 0.1':
      
               1,495,051      instructions                     #    1.11  insn per cycle
               1,347,641      cycles
                  35,424      cache-misses
      
             0.100935279 seconds time elapsed
      
             0.000924000 seconds user
             0.000000000 seconds sys
      
        #
      
        # perf trace -e connect*  ssh localhost
             0.000 ( 0.012 ms): ssh/51346 connect(fd: 4, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.118 ( 0.004 ms): ssh/51346 connect(fd: 6, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.399 ( 0.007 ms): ssh/51346 connect(fd: 4, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.426 ( 0.003 ms): ssh/51346 connect(fd: 4, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.754 ( 0.009 ms): ssh/51346 connect(fd: 4, uservaddr: { .family: INET, port: 22, addr: 127.0.0.1 }, addrlen: 16) = 0
             0.771 ( 0.010 ms): ssh/51346 connect(fd: 4, uservaddr: { .family: INET6, port: 22, addr: ::1 }, addrlen: 28) = 0
             0.798 ( 0.053 ms): ssh/51346 connect(fd: 4, uservaddr: { .family: INET6, port: 22, addr: ::1 }, addrlen: 28) = 0
             0.870 ( 0.004 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.904 ( 0.003 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.930 ( 0.003 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.957 ( 0.003 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             0.981 ( 0.003 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             1.006 ( 0.004 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
             1.036 ( 0.005 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/lib/sss/pipes/nss }, addrlen: 110) = -1 ECONNREFUSED (Connection refused)
            65.077 ( 0.022 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/run/.heim_org.h5l.kcm-socket }, addrlen: 110) = 0
            66.608 ( 0.014 ms): ssh/51346 connect(fd: 5, uservaddr: { .family: LOCAL, path: /var/run/.heim_org.h5l.kcm-socket }, addrlen: 110) = 0
        root@localhost's password:
        #
      
        # perf trace -e sendto*  ping -c 2 localhost
        PING localhost(localhost (::1)) 56 data bytes
        64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.024 ms
             0.000 ( 0.011 ms): ping/51357 sendto(fd: 5, buff: 0x7ffcca35e620, len: 20, addr: { .family: NETLINK }, addr_len: 0xc) = 20
             0.135 ( 0.026 ms): ping/51357 sendto(fd: 4, buff: 0x5601398f7b20, len: 64, addr: { .family: INET6, port: 58, addr: ::1 }, addr_len: 0x1c) = 64
          1014.929 ( 0.050 ms): ping/51357 sendto(fd: 4, buff: 0x5601398f7b20, len: 64, flags: CONFIRM, addr: { .family: INET6, port: 58, addr: ::1 }, addr_len: 0x1c) = 64
        64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.046 ms
      
        --- localhost ping statistics ---
        2 packets transmitted, 2 received, 0% packet loss, time 1015ms
        rtt min/avg/max/mdev = 0.024/0.035/0.046/0.011 ms
        #
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Anshuman Khandual <anshuman.khandual@arm.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Carsten Haitzler <carsten.haitzler@arm.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Fangrui Song <maskray@google.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@amd.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
      Cc: Tom Rix <trix@redhat.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: Yang Jihong <yangjihong1@huawei.com>
      Cc: Yonghong Song <yhs@fb.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230810184853.2860737-3-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5e6da6be
    • Ian Rogers's avatar
      perf parse-events: Remove BPF event support · 3d6dfae8
      Ian Rogers authored
      New features like the BPF --filter support in perf record have made the
      BPF event functionality somewhat redundant. As shown by commit
      fcb027c1a4f6 ("perf tools: Revert enable indices setting syntax for BPF
      map") and commit 14e4b9f4 ("perf trace: Raw augmented syscalls fix
      libbpf 1.0+ compatibility") the BPF event support hasn't been well
      maintained and it adds considerable complexity in areas like event
      parsing, not least as '/' is a separator for event modifiers as well as
      in paths.
      
      This patch removes support in the event parser for BPF events and then
      the associated functions are removed. This leads to the removal of whole
      source files like bpf-loader.c.  Removing support means that augmented
      syscalls in perf trace is broken, this will be fixed in a later commit
      adding support using BPF skeletons.
      
      The removal of BPF events causes an unused label warning from flex
      generated code, so update build to ignore it:
      
        ```
        util/parse-events-flex.c:2704:1: error: label ‘find_rule’ defined but not used [-Werror=unused-label]
        2704 | find_rule: /* we branch to this label when backing up */
        ```
      
      Committer notes:
      
      Extracted from a larger patch that was also removing the support for
      linking with libllvm and libclang, that were an alternative to using an
      external clang execution to compile the .c event source code into BPF
      bytecode.
      
      Testing it:
      
        # perf trace -e /home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.c
        event syntax error: '/home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.c'
                              \___ Bad event or PMU
      
        Unabled to find PMU or event on a PMU of 'home'
      
        Initial error:
        event syntax error: '/home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.c'
                              \___ Cannot find PMU `home'. Missing kernel support?
        Run 'perf list' for a list of valid events
      
         Usage: perf trace [<options>] [<command>]
            or: perf trace [<options>] -- <command> [<options>]
            or: perf trace record [<options>] [<command>]
            or: perf trace record [<options>] -- <command> [<options>]
      
            -e, --event <event>   event/syscall selector. use 'perf list' to list available events
        #
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Anshuman Khandual <anshuman.khandual@arm.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Carsten Haitzler <carsten.haitzler@arm.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Fangrui Song <maskray@google.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@amd.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
      Cc: Tom Rix <trix@redhat.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: Yang Jihong <yangjihong1@huawei.com>
      Cc: Yonghong Song <yhs@fb.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Cc: bpf@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Link: https://lore.kernel.org/r/20230810184853.2860737-2-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      3d6dfae8
    • Ian Rogers's avatar
      perf bpf: Remove support for embedding clang for compiling BPF events (-e foo.c) · 56b11a21
      Ian Rogers authored
      This never was in the default build for perf, is difficult to maintain
      as it uses clang/llvm internals so ditch it, keeping, for now, the
      external compilation of .c BPF into .o bytecode and its subsequent
      loading, that is also going to be removed, do it separately to help
      bisection and to properly document what is being removed and why.
      
      Committer notes:
      
      Extracted from a larger patch and removed some leftovers, namely
      deleting these now unused feature tests:
      
          tools/build/feature/test-clang.cpp
          tools/build/feature/test-cxx.cpp
          tools/build/feature/test-llvm-version.cpp
          tools/build/feature/test-llvm.cpp
      
      Testing the use of BPF events after applying this patch:
      
      To use the external clang/llvm toolchain to compile a .c event and then
      use libbpf to load it, to get the syscalls:sys_enter_open* tracepoints
      and read the filename pointer, putting it into the ring buffer right
      after the usual tracepoint payload for 'perf trace' to then print it:
      
        [root@quaco ~]# perf trace -e /home/acme/git/perf-tools-next/tools/perf/examples/bpf/augmented_raw_syscalls.c,open* --max-events=10
           0.000 systemd-oomd/959 openat(dfd: CWD, filename: "/proc/meminfo", flags: RDONLY|CLOEXEC) = 12
           0.083 abrt-dump-jour/1453 openat(dfd: CWD, filename: "/var/log/journal/d6a97235307247e09f13f326fb607e3c/system.journal", flags: RDONLY|CLOEXEC|NONBLOCK) = 4
           0.063 abrt-dump-jour/1454 openat(dfd: CWD, filename: "/var/log/journal/d6a97235307247e09f13f326fb607e3c/system.journal", flags: RDONLY|CLOEXEC|NONBLOCK) = 4
           0.082 abrt-dump-jour/1455 openat(dfd: CWD, filename: "/var/log/journal/d6a97235307247e09f13f326fb607e3c/system.journal", flags: RDONLY|CLOEXEC|NONBLOCK) = 4
         250.124 systemd-oomd/959 openat(dfd: CWD, filename: "/proc/meminfo", flags: RDONLY|CLOEXEC) = 12
         250.521 systemd-oomd/959 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice/memory.pressure", flags: RDONLY|CLOEXEC) = 12
         251.047 systemd-oomd/959 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice/memory.current", flags: RDONLY|CLOEXEC) = 12
         251.162 systemd-oomd/959 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice/memory.min", flags: RDONLY|CLOEXEC) = 12
         251.242 systemd-oomd/959 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice/memory.low", flags: RDONLY|CLOEXEC) = 12
         251.353 systemd-oomd/959 openat(dfd: CWD, filename: "/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice/memory.swap.current", flags: RDONLY|CLOEXEC) = 12
        [root@quaco ~]#
      
      Same thing, but with a prebuilt .o BPF bytecode:
      
        [root@quaco ~]# perf trace -e /home/acme/git/perf-tools-next/tools/perf/examples/bpf/augmented_raw_syscalls.o,open* --max-events=10
           0.000 systemd-oomd/959 openat(dfd: CWD, filename: "/proc/meminfo", flags: RDONLY|CLOEXEC) = 12
           0.083 abrt-dump-jour/1453 openat(dfd: CWD, filename: "/var/log/journal/d6a97235307247e09f13f326fb607e3c/system.journal", flags: RDONLY|CLOEXEC|NONBLOCK) = 4
           0.083 abrt-dump-jour/1455 openat(dfd: CWD, filename: "/var/log/journal/d6a97235307247e09f13f326fb607e3c/system.journal", flags: RDONLY|CLOEXEC|NONBLOCK) = 4
           0.062 abrt-dump-jour/1454 openat(dfd: CWD, filename: "/var/log/journal/d6a97235307247e09f13f326fb607e3c/system.journal", flags: RDONLY|CLOEXEC|NONBLOCK) = 4
         249.985 systemd-oomd/959 openat(dfd: CWD, filename: "/proc/meminfo", flags: RDONLY|CLOEXEC) = 12
         466.763 thermald/1234 openat(dfd: CWD, filename: "/sys/class/powercap/intel-rapl/intel-rapl:0/intel-rapl:0:2/energy_uj") = 13
         467.145 thermald/1234 openat(dfd: CWD, filename: "/sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj") = 13
         467.311 thermald/1234 openat(dfd: CWD, filename: "/sys/class/thermal/thermal_zone2/temp") = 13
         500.040 cgroupify/24006 openat(dfd: 4, filename: ".", flags: RDONLY|CLOEXEC|DIRECTORY|NONBLOCK) = 5
         500.295 cgroupify/24006 openat(dfd: 4, filename: "24616/cgroup.procs") = 5
        [root@quaco ~]#
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Anshuman Khandual <anshuman.khandual@arm.com>
      Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Carsten Haitzler <carsten.haitzler@arm.com>
      Cc: Eduard Zingerman <eddyz87@gmail.com>
      Cc: Fangrui Song <maskray@google.com>
      Cc: He Kuang <hekuang@huawei.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@amd.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
      Cc: Tom Rix <trix@redhat.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Wang ShaoBo <bobo.shaobowang@huawei.com>
      Cc: Yang Jihong <yangjihong1@huawei.com>
      Cc: Yonghong Song <yhs@fb.com>
      Cc: YueHaibing <yuehaibing@huawei.com>
      Link: https://lore.kernel.org/lkml/ZNZWsAXg2px1sm2h@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      56b11a21
    • Arnaldo Carvalho de Melo's avatar
      perf tests trace+probe_vfs_getname.sh: Accept quotes surrounding the filename · 6f769c34
      Arnaldo Carvalho de Melo authored
      With augmented_raw_syscalls transformed into a BPF skel made the output have a "
      around the filenames, which is not what the old perf probe vfs_getname
      method of obtaining filenames did, so accept the augmented way, with the
      quotes.
      
      At this point probably removing all the logic for the vfs_getname method
      is in order, will do it at some point.
      
      For now lets accept with/without quotes and make that test pass.
      
      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>
      Link: https://lore.kernel.org/lkml/Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6f769c34
    • Arnaldo Carvalho de Melo's avatar
      perf test trace+probe_vfs_getname.sh: Remove stray \ before / · 7777ac3d
      Arnaldo Carvalho de Melo authored
      Running on fedora:38 in verbose mode I noticed:
      
        # perf test -v 117
        grep: warning: stray \ before /
        117: Check open filename arg using perf trace + vfs_getname          :
      
      Remove that \ before /.
      
      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>
      Link: https://lore.kernel.org/lkml/ZNvTDsSMO3nw9Tnp@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7777ac3d
  2. 11 Aug, 2023 3 commits
    • Ian Rogers's avatar
      perf script python: Add stub for PMU symbol to the python binding · 33d9c506
      Ian Rogers authored
      Fix missing symbol seen in:
      
        ```
         19: 'import perf' in python                                         :
        --- start ---
        test child forked, pid 2640936
        python usage test: "echo "import sys ; sys.path.insert(0, 'python'); import perf" | '/usr/bin/python3' "
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ImportError: tools/perf/python/perf.cpython-311-x86_64-linux-gnu.so: undefined symbol: perf_pmus__supports_extended_type
        test child finished with -1
        ---- end ----
        'import perf' in python: FAILED!
        ```
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Yang Jihong <yangjihong1@huawei.com>
      Link: https://lore.kernel.org/r/20230810180944.2794188-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      33d9c506
    • Athira Rajeev's avatar
      perf symbols: Fix DSO kernel load and symbol process to correctly map DSO to... · e59fea47
      Athira Rajeev authored
      perf symbols: Fix DSO kernel load and symbol process to correctly map DSO to its long_name, type and adjust_symbols
      
      Test "object code reading" fails sometimes for kernel address as below:
      
          Reading object code for memory address: 0xc000000000004c3c
          File is: [kernel.kallsyms]
          On file address is: 0x14c3c
          dso__data_read_offset failed
          test child finished with -1
          ---- end ----
          Object code reading: FAILED!
      
      Here dso__data_read_offset() fails for symbol address
      0xc000000000004c3c. This is because the DSO long_name here is
      "[kernel.kallsyms]" and hence open_dso() fails to open this file. There
      is an incorrect DSO to map handling here. The key points here are:
      
      - The DSO long_name is set to "[kernel.kallsyms]". This file is
        not present and hence returns error
      - The DSO binary type is set to DSO_BINARY_TYPE__NOT_FOUND
      - The DSO adjust_symbols member is set to zero
      
      In the end dso__data_read_offset() returns -1 and the address 0x14c3c
      can not be resolved. Hence the test fails. But the address actually maps
      to the kernel DSO
      
          # objdump -z -d --start-address=0xc000000000004c3c --stop-address=0xc000000000004cbc /home/athira/linux/vmlinux
      
          /home/athira/linux/vmlinux:     file format elf64-powerpcle
      
          Disassembly of section .head.text:
      
          c000000000004c3c <exc_virt_0x4c00_system_call+0x3c>:
          c000000000004c3c:	a6 02 9b 7d 	mfsrr1  r12
          c000000000004c40:	78 13 42 7c 	mr      r2,r2
          c000000000004c44:	18 00 4d e9 	ld      r10,24(r13)
          c000000000004c48:	60 c6 4a 61 	ori     r10,r10,50784
          c000000000004c4c:	a6 03 49 7d 	mtctr   r10
      
      Fix dso__process_kernel_symbol() to set the binary_type and
      adjust_symbols members. dso->adjust_symbols is used by
      map__rip_2objdump() which converts the symbol start address to the
      objdump address. Also set dso->long_name in dso__load_vmlinux().
      Suggested-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
      Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Disha Goel <disgoel@linux.vnet.ibm.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: linuxppc-dev@lists.ozlabs.org
      Link: https://lore.kernel.org/r/20230811051546.70039-1-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e59fea47
    • Arnaldo Carvalho de Melo's avatar
      perf build: Remove -Wno-unused-but-set-variable from the flex flags when... · 878460e8
      Arnaldo Carvalho de Melo authored
      perf build: Remove -Wno-unused-but-set-variable from the flex flags when building with clang < 13.0.0
      
      clang < 13.0.0 doesn't grok -Wno-unused-but-set-variable, so just remove
      it to avoid:
      
        error: unknown warning option '-Wno-unused-but-set-variable'; did you mean '-Wno-unused-const-variable'? [-Werror,-Wunknown-warning-option]
        make[4]: *** [/git/perf-6.5.0-rc4/tools/build/Makefile.build:128: /tmp/build/perf/util/pmu-flex.o] Error 1
        make[4]: *** Waiting for unfinished jobs....
      
      Fixes: ddc8e4c9 ("perf build: Disable fewer bison warnings")
      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>
      Link: https://lore.kernel.org/lkml/ZNUSWr52jUnVaaa%2F@kernel.org/Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      878460e8
  3. 10 Aug, 2023 3 commits
    • Arnaldo Carvalho de Melo's avatar
      Merge remote-tracking branch 'torvalds/master' into perf-tools-next · 55b29050
      Arnaldo Carvalho de Melo authored
      To pick up some more fixes that went upstream via the perf-tools fixes
      branch.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      55b29050
    • Linus Torvalds's avatar
      Merge tag '6.5-rc5-ksmbd-server' of git://git.samba.org/ksmbd · 374a7f47
      Linus Torvalds authored
      Pull smb server fixes from Steve French:
       "Two ksmbd server fixes, both also for stable:
      
         - improve buffer validation when multiple EAs returned
      
         - missing check for command payload size"
      
      * tag '6.5-rc5-ksmbd-server' of git://git.samba.org/ksmbd:
        ksmbd: fix wrong next length validation of ea buffer in smb2_set_ea()
        ksmbd: validate command request size
      374a7f47
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v6.5-3-2023-08-09' of... · b4f63b0f
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v6.5-3-2023-08-09' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull perf tools fixes from Arnaldo Carvalho de Melo:
      
       - Revert a patch that unconditionally resolved addresses to inlines in
         callchains, something that was done before when DWARF mode was asked
         for, but could as well be done when just frame pointers (the default)
         was selected.
      
         This enriches the callchains with inlines but the way to resolve it
         is gross right now, relying on addr2line, and even if we come up with
         an efficient way of processing all the associated DWARF info for a
         big file as vmlinux is, this has to be something people opt-in, as it
         will still result in overheads, so revert it until we get this done
         in a saner way.
      
       - Update the x86 msr-index.h header with the kernel original, no change
         in tooling output, just addresses a tools/perf build warning.
      
        - Resolve a regression where special "tool events", such as
          "duration_time" were being presented for all CPUs, when it only
          makes sense to show it for the workload, that is, just once.
      
      * tag 'perf-tools-fixes-for-v6.5-3-2023-08-09' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
        perf stat: Don't display zero tool counts
        tools arch x86: Sync the msr-index.h copy with the kernel sources
        Revert "perf report: Append inlines to non-DWARF callchains"
      b4f63b0f
  4. 09 Aug, 2023 3 commits
  5. 08 Aug, 2023 8 commits
  6. 07 Aug, 2023 15 commits
    • Linus Torvalds's avatar
      Merge tag 'x86_bugs_srso' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 138bcddb
      Linus Torvalds authored
      Pull x86/srso fixes from Borislav Petkov:
       "Add a mitigation for the speculative RAS (Return Address Stack)
        overflow vulnerability on AMD processors.
      
        In short, this is yet another issue where userspace poisons a
        microarchitectural structure which can then be used to leak privileged
        information through a side channel"
      
      * tag 'x86_bugs_srso' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/srso: Tie SBPB bit setting to microcode patch detection
        x86/srso: Add a forgotten NOENDBR annotation
        x86/srso: Fix return thunks in generated code
        x86/srso: Add IBPB on VMEXIT
        x86/srso: Add IBPB
        x86/srso: Add SRSO_NO support
        x86/srso: Add IBPB_BRTYPE support
        x86/srso: Add a Speculative RAS Overflow mitigation
        x86/bugs: Increase the x86 bugs vector size to two u32s
      138bcddb
    • Linus Torvalds's avatar
      Merge tag 'wq-for-6.5-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 14f9643d
      Linus Torvalds authored
      Pull workqueue fixes from Tejun Heo:
      
       - The recently added cpu_intensive auto detection and warning mechanism
         was spuriously triggered on slow CPUs.
      
         While not causing serious issues, it's still a nuisance and can cause
         unintended concurrency management behaviors.
      
         Relax the threshold on machines with lower BogoMIPS. While BogoMIPS
         is not an accurate measure of performance by most measures, we don't
         have to be accurate and it has rough but strong enough correlation.
      
       - A correction in Kconfig help text
      
      * tag 'wq-for-6.5-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: Scale up wq_cpu_intensive_thresh_us if BogoMIPS is below 4000
        workqueue: Fix cpu_intensive_thresh_us name in help text
      14f9643d
    • Linus Torvalds's avatar
      Merge tag 'tpmdd-v6.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd · 8043e222
      Linus Torvalds authored
      Pull tpm fixes from Jarkko Sakkinen:
       "A few more bug fixes"
      
      * tag 'tpmdd-v6.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd:
        tpm/tpm_tis: Disable interrupts for Lenovo P620 devices
        tpm: Disable RNG for all AMD fTPMs
        sysctl: set variable key_sysctls storage-class-specifier to static
        tpm/tpm_tis: Disable interrupts for TUXEDO InfinityBook S 15/17 Gen7
      8043e222
    • Arnaldo Carvalho de Melo's avatar
      perf probe: Make synthesize_perf_probe_point() private to probe-event.c · aeb50d3f
      Arnaldo Carvalho de Melo authored
      Not used in any other place, so just make it static.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lore.kernel.org/lkml/ZM0pjfOe6R4X%2Fcql@kernel.org/Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      aeb50d3f
    • Arnaldo Carvalho de Melo's avatar
      perf probe: Free string returned by synthesize_perf_probe_point() on failure... · a612bbf8
      Arnaldo Carvalho de Melo authored
      perf probe: Free string returned by synthesize_perf_probe_point() on failure in synthesize_perf_probe_command()
      
      Building perf with EXTRA_CFLAGS="-fsanitize=address" a leak was detected
      elsewhere and lead to an audit, where we found that
      synthesize_perf_probe_command() may leak synthesize_perf_probe_point()
      return on failure, fix it.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lore.kernel.org/lkml/ZM0mzpQktHnhXJXr@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a612bbf8
    • Arnaldo Carvalho de Melo's avatar
      perf probe: Free string returned by synthesize_perf_probe_point() on failure to add a probe · 7bc0153c
      Arnaldo Carvalho de Melo authored
      Building perf with EXTRA_CFLAGS="-fsanitize=address" a leak is detect
      when trying to add a probe to a non-existent function:
      
        # perf probe -x ~/bin/perf dso__neW
        Probe point 'dso__neW' not found.
          Error: Failed to add events.
      
        =================================================================
        ==296634==ERROR: LeakSanitizer: detected memory leaks
      
        Direct leak of 128 byte(s) in 1 object(s) allocated from:
            #0 0x7f67642ba097 in calloc (/lib64/libasan.so.8+0xba097)
            #1 0x7f67641a76f1 in allocate_cfi (/lib64/libdw.so.1+0x3f6f1)
      
        Direct leak of 65 byte(s) in 1 object(s) allocated from:
            #0 0x7f67642b95b5 in __interceptor_realloc.part.0 (/lib64/libasan.so.8+0xb95b5)
            #1 0x6cac75 in strbuf_grow util/strbuf.c:64
            #2 0x6ca934 in strbuf_init util/strbuf.c:25
            #3 0x9337d2 in synthesize_perf_probe_point util/probe-event.c:2018
            #4 0x92be51 in try_to_find_probe_trace_events util/probe-event.c:964
            #5 0x93d5c6 in convert_to_probe_trace_events util/probe-event.c:3512
            #6 0x93d6d5 in convert_perf_probe_events util/probe-event.c:3529
            #7 0x56f37f in perf_add_probe_events /var/home/acme/git/perf-tools-next/tools/perf/builtin-probe.c:354
            #8 0x572fbc in __cmd_probe /var/home/acme/git/perf-tools-next/tools/perf/builtin-probe.c:738
            #9 0x5730f2 in cmd_probe /var/home/acme/git/perf-tools-next/tools/perf/builtin-probe.c:766
            #10 0x635d81 in run_builtin /var/home/acme/git/perf-tools-next/tools/perf/perf.c:323
            #11 0x6362c1 in handle_internal_command /var/home/acme/git/perf-tools-next/tools/perf/perf.c:377
            #12 0x63667a in run_argv /var/home/acme/git/perf-tools-next/tools/perf/perf.c:421
            #13 0x636b8d in main /var/home/acme/git/perf-tools-next/tools/perf/perf.c:537
            #14 0x7f676302950f in __libc_start_call_main (/lib64/libc.so.6+0x2950f)
      
        SUMMARY: AddressSanitizer: 193 byte(s) leaked in 2 allocation(s).
        #
      
      synthesize_perf_probe_point() returns a "detachec" strbuf, i.e. a
      malloc'ed string that needs to be free'd.
      
      An audit will be performed to find other such cases.
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      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>
      Link: https://lore.kernel.org/lkml/ZM0l1Oxamr4SVjfY@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7bc0153c
    • Jonathan McDowell's avatar
      tpm/tpm_tis: Disable interrupts for Lenovo P620 devices · e117e7ad
      Jonathan McDowell authored
      The Lenovo ThinkStation P620 suffers from an irq storm issue like various
      other Lenovo machines, so add an entry for it to tpm_tis_dmi_table and
      force polling.
      
      It is worth noting that 481c2d14 (tpm,tpm_tis: Disable interrupts after
      1000 unhandled IRQs) does not seem to fix the problem on this machine, but
      setting 'tpm_tis.interrupts=0' on the kernel command line does.
      
      [jarkko@kernel.org: truncated the commit ID in the description to 12
      characters]
      Cc: stable@vger.kernel.org # v6.4+
      Fixes: e644b2f4 ("tpm, tpm_tis: Enable interrupt test")
      Signed-off-by: default avatarJonathan McDowell <noodles@meta.com>
      Reviewed-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      e117e7ad
    • Mario Limonciello's avatar
      tpm: Disable RNG for all AMD fTPMs · 554b841d
      Mario Limonciello authored
      The TPM RNG functionality is not necessary for entropy when the CPU
      already supports the RDRAND instruction. The TPM RNG functionality
      was previously disabled on a subset of AMD fTPM series, but reports
      continue to show problems on some systems causing stutter root caused
      to TPM RNG functionality.
      
      Expand disabling TPM RNG use for all AMD fTPMs whether they have versions
      that claim to have fixed or not. To accomplish this, move the detection
      into part of the TPM CRB registration and add a flag indicating that
      the TPM should opt-out of registration to hwrng.
      
      Cc: stable@vger.kernel.org # 6.1.y+
      Fixes: b006c439 ("hwrng: core - start hwrng kthread also for untrusted sources")
      Fixes: f1324bbc ("tpm: disable hwrng for fTPM on some AMD designs")
      Reported-by: daniil.stas@posteo.net
      Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217719
      Reported-by: bitlord0xff@gmail.com
      Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217212Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
      Reviewed-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      554b841d
    • Tom Rix's avatar
      sysctl: set variable key_sysctls storage-class-specifier to static · 0de030b3
      Tom Rix authored
      smatch reports
      security/keys/sysctl.c:12:18: warning: symbol
        'key_sysctls' was not declared. Should it be static?
      
      This variable is only used in its defining file, so it should be static.
      Signed-off-by: default avatarTom Rix <trix@redhat.com>
      Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      0de030b3
    • Takashi Iwai's avatar
      tpm/tpm_tis: Disable interrupts for TUXEDO InfinityBook S 15/17 Gen7 · 0b15afc9
      Takashi Iwai authored
      TUXEDO InfinityBook S 15/17 Gen7 suffers from an IRQ problem on
      tpm_tis like a few other laptops.  Add an entry for the workaround.
      
      Cc: stable@vger.kernel.org
      Fixes: e644b2f4 ("tpm, tpm_tis: Enable interrupt test")
      Link: https://bugzilla.suse.com/show_bug.cgi?id=1213645Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Acked-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
      0b15afc9
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · a027b2ec
      Linus Torvalds authored
      Pull kvm fixes from Paolo Bonzini:
       "x86:
      
         - Fix SEV race condition
      
        ARM:
      
         - Fixes for the configuration of SVE/SME traps when hVHE mode is in
           use
      
         - Allow use of pKVM on systems with FF-A implementations that are
           v1.0 compatible
      
         - Request/release percpu IRQs (arch timer, vGIC maintenance)
           correctly when pKVM is in use
      
         - Fix function prototype after __kvm_host_psci_cpu_entry() rename
      
         - Skip to the next instruction when emulating writes to TCR_EL1 on
           AmpereOne systems
      
        Selftests:
      
         - Fix missing include"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        selftests/rseq: Fix build with undefined __weak
        KVM: SEV: remove ghcb variable declarations
        KVM: SEV: only access GHCB fields once
        KVM: SEV: snapshot the GHCB before accessing it
        KVM: arm64: Skip instruction after emulating write to TCR_EL1
        KVM: arm64: fix __kvm_host_psci_cpu_entry() prototype
        KVM: arm64: Fix resetting SME trap values on reset for (h)VHE
        KVM: arm64: Fix resetting SVE trap values on reset for hVHE
        KVM: arm64: Use the appropriate feature trap register when activating traps
        KVM: arm64: Helper to write to appropriate feature trap register based on mode
        KVM: arm64: Disable SME traps for (h)VHE at setup
        KVM: arm64: Use the appropriate feature trap register for SVE at EL2 setup
        KVM: arm64: Factor out code for checking (h)VHE mode into a macro
        KVM: arm64: Rephrase percpu enable/disable tracking in terms of hyp
        KVM: arm64: Fix hardware enable/disable flows for pKVM
        KVM: arm64: Allow pKVM on v1.0 compatible FF-A implementations
      a027b2ec
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 016ce297
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
      
       - moxart: Fix big-endian conversion for SCR structure
      
       - sdhci-f-sdh30: Replace with sdhci_pltfm to fix PM support
      
      * tag 'mmc-v6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: sdhci-f-sdh30: Replace with sdhci_pltfm
        mmc: moxart: read scr register without changing byte order
      016ce297
    • Bob Peterson's avatar
      gfs2: Don't use filemap_splice_read · 0be84321
      Bob Peterson authored
      Starting with patch 2cb1e089, gfs2 started using the new function
      filemap_splice_read rather than the old (and subsequently deleted)
      function generic_file_splice_read.
      
      filemap_splice_read works by taking references to a number of folios in
      the page cache and splicing those folios into a pipe.  The folios are
      then read from the pipe and the folio references are dropped.  This can
      take an arbitrary amount of time.  We cannot allow that in gfs2 because
      those folio references will pin the inode glock to the node and prevent
      it from being demoted, which can lead to cluster-wide deadlocks.
      
      Instead, use copy_splice_read.
      
      (In addition, the old generic_file_splice_read called into ->read_iter,
      which called gfs2_file_read_iter, which took the inode glock during the
      operation.  The new filemap_splice_read interface does not take the
      inode glock anymore.  This is fixable, but it still wouldn't prevent
      cluster-wide deadlocks.)
      
      Fixes: 2cb1e089 ("splice: Use filemap_splice_read() instead of generic_file_splice_read()")
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      0be84321
    • Andreas Gruenbacher's avatar
      gfs2: Fix freeze consistency check in gfs2_trans_add_meta · 2cbd8064
      Andreas Gruenbacher authored
      Function gfs2_trans_add_meta() checks for the SDF_FROZEN flag to make
      sure that no buffers are added to a transaction while the filesystem is
      frozen.  With the recent freeze/thaw rework, the SDF_FROZEN flag is
      cleared after thaw_super() is called, which is sufficient for
      serializing freeze/thaw.
      
      However, other filesystem operations started after thaw_super() may now
      be calling gfs2_trans_add_meta() before the SDF_FROZEN flag is cleared,
      which will trigger the SDF_FROZEN check in gfs2_trans_add_meta().  Fix
      that by checking the s_writers.frozen state instead.
      
      In addition, make sure not to call gfs2_assert_withdraw() with the
      sd_log_lock spin lock held.  Check for a withdrawn filesystem before
      checking for a frozen filesystem, and don't pin/add buffers to the
      current transaction in case of a failure in either case.
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      2cbd8064
    • Borislav Petkov (AMD)'s avatar
      x86/srso: Tie SBPB bit setting to microcode patch detection · 5a15d834
      Borislav Petkov (AMD) authored
      The SBPB bit in MSR_IA32_PRED_CMD is supported only after a microcode
      patch has been applied so set X86_FEATURE_SBPB only then. Otherwise,
      guests would attempt to set that bit and #GP on the MSR write.
      
      While at it, make SMT detection more robust as some guests - depending
      on how and what CPUID leafs their report - lead to cpu_smt_control
      getting set to CPU_SMT_NOT_SUPPORTED but SRSO_NO should be set for any
      guest incarnation where one simply cannot do SMT, for whatever reason.
      
      Fixes: fb3bd914 ("x86/srso: Add a Speculative RAS Overflow mitigation")
      Reported-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Reported-by: default avatarSalvatore Bonaccorso <carnil@debian.org>
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      5a15d834
  7. 06 Aug, 2023 2 commits