Skip to content
  1. Jan 04, 2023
    • Thomas Richter's avatar
      perf lock contention: Fix core dump related to not finding the "__sched_text_end" symbol on s/390 · d8d85ce8
      Thomas Richter authored
      The test case perf lock contention dumps core on s390. Run the following
      commands:
      
        # ./perf lock record -- ./perf bench sched messaging
        # Running 'sched/messaging' benchmark:
        # 20 sender and receiver processes per group
        # 10 groups == 400 processes run
      
            Total time: 2.799 [sec]
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.073 MB perf.data (100 samples) ]
        #
        # ./perf lock contention
        Segmentation fault (core dumped)
        #
      
      The function call stack is lengthy, here are the top 5 functions:
      
        # gdb ./perf core.24048
        GNU gdb (GDB) Fedora Linux 12.1-6.fc37
        Core was generated by `./perf lock contention'.
        Program terminated with signal SIGSEGV, Segmentation fault.
        #0  0x00000000011dd25c in machine__is_lock_function (machine=0x3029e28, addr=1789230) at util/machine.c:3356
               3356 machine->sched.text_end = kmap->unmap_ip(kmap, sym->start);
      
       (gdb) where
        #0  0x00000000011dd25c in machine__is_lock_function (machine=0x3029e28, addr=1789230) at util/machine.c:3356
        #1  0x000000000109f244 in callchain_id (evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:957
        #2  0x000000000109e094 in get_key_by_aggr_mode (key=0x3ffea4f7290, addr=27758136, evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:586
        #3  0x000000000109f4d0 in report_lock_contention_begin_event (evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:1004
        #4  0x00000000010a00ae in evsel__process_contention_begin (evsel=0x30313e0, sample=0x3ffea4f77d0) at builtin-lock.c:1254
        #5  0x00000000010a0e14 in process_sample_event (tool=0x3ffea4f8480, event=0x3ff85601ef8, sample=0x3ffea4f77d0, evsel=0x30313e0, machine=0x3029e28) at builtin-lock.c:1464
        .....
      
      The issue is in function machine__is_lock_function() in file
      ./util/machine.c lines 3355:
      
         /* should not fail from here */
         sym = machine__find_kernel_symbol_by_name(machine, "__sched_text_end", &kmap);
         machine->sched.text_end = kmap->unmap_ip(kmap, sym->start)
      
      On s390 the symbol __sched_text_end is *NOT* in the symbol list and the
      resulting pointer sym is set to NULL. The sym->start is then a NULL pointer
      access and generates the core dump.
      
      The reason why __sched_text_end is not in the symbol list on s390 is
      simple:
      
      When the symbol list is created at perf start up with function calls
      
        dso__load
        +--> dso__load_vmlinux_path
             +--> dso__load_vmlinux
                  +--> dso__load_sym
      	         +--> dso__load_sym_internal (reads kernel symbols)
      		 +--> symbols__fixup_end
      		 +--> symbols__fixup_duplicate
      
      The issue is in function symbols__fixup_duplicate(). It deletes all
      symbols with have the same address. On s390:
      
        # nm -g  ~/linux/vmlinux| fgrep c68390
        0000000000c68390 T __cpuidle_text_start
        0000000000c68390 T __sched_text_end
        #
      
      two symbols have identical addresses and __sched_text_end is considered
      duplicate (in ascending sort order) and removed from the symbol list.
      Therefore it is missing and an invalid pointer reference occurs.  The
      code checks for symbol __sched_text_start and when it exists assumes
      symbol __sched_text_end is also in the symbol table. However this is not
      the case on s390.
      
      Same situation exists for symbol __lock_text_start:
      
      0000000000c68770 T __cpuidle_text_end
      0000000000c68770 T __lock_text_start
      
      This symbol is also removed from the symbol table but used in function
      machine__is_lock_function().
      
      To fix this and keep duplicate symbols in the symbol table, set
      symbol_conf.allow_aliases to true. This prevents the removal of
      duplicate symbols in function symbols__fixup_duplicate().
      
      Output After:
      
       # ./perf lock contention
       contended total wait  max wait  avg wait    type   caller
      
              48   124.39 ms 123.99 ms   2.59 ms rwsem:W unlink_anon_vmas+0x24a
              47    83.68 ms  83.26 ms   1.78 ms rwsem:W free_pgtables+0x132
               5    41.22 us  10.55 us   8.24 us rwsem:W free_pgtables+0x140
               4    40.12 us  20.55 us  10.03 us rwsem:W copy_process+0x1ac8
       #
      
      Fixes: 0d2997f7
      
       ("perf lock: Look up callchain for the contended locks")
      Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Heiko Carstens <hca@linux.ibm.com>
      Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
      Cc: Sven Schnelle <svens@linux.ibm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Link: https://lore.kernel.org/r/20221230102627.2410847-1-tmricht@linux.ibm.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d8d85ce8
    • Ian Rogers's avatar
      perf build: Don't propagate subdir to submakes for install_headers · f89fb557
      Ian Rogers authored
      subdir is added to the OUTPUT which fails as part of building
      install_headers when passed from "make -C tools perf_install".
      
      Committer testing:
      
      The original reporter (see the Link: below) had trouble with this:
      
      $ make -C tools perf_install
      
      That ended up with errors like this:
      
        /var/home/acme/git/perf-urgent/tools/scripts/Makefile.include:17: *** output directory "/var/home/acme/git/perf-urgent/tools/perf/libperf/perf/" does not exist.  Stop.
      
      With this patch applied we now get it installed at:
      
        INSTALL /var/home/acme/git/perf-urgent/tools/perf/libperf/include/perf/bpf_perf.h
      
      As expected:
      
        $ ls -la /var/home/acme/git/perf-urgent/tools/perf/libperf/include/perf/bpf_perf.h
        -rw-r--r--. 1 acme acme 1146 Jan  3 15:42 /var/home/acme/git/perf-urgent/tools/perf/libperf/include/perf/bpf_perf.h
      
      And if we clean tools with:
      
        $ make -C tools clean
      
      it gets cleaned up:
      
        $ ls -la /var/home/acme/git/perf-urgent/tools/perf/libperf/include/perf/bpf_perf.h
        ls: cannot access '/var/home/acme/git/perf-urgent/tools/perf/libperf/include/perf/bpf_perf.h': No such file or directory
        $
      
      Fixes: 746bd29e
      
       ("perf build: Use tools/lib headers from install path")
      Reported-by: default avatarTorsten Hilbrich <torsten.hilbrich@secunet.com>
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/fa4b3115-d555-3d7f-54d1-018002e99350@secunet.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f89fb557
  2. Jan 03, 2023
    • Arnaldo Carvalho de Melo's avatar
      perf test record_probe_libc_inet_pton: Fix failure due to extra inet_pton()... · b963c1d6
      Arnaldo Carvalho de Melo authored
      
      perf test record_probe_libc_inet_pton: Fix failure due to extra inet_pton() backtrace in glibc >= 2.35
      
      Starting with glibc 2.35 there are extra inet_pton() calls when doing a
      IPv6 ping as in one of the 'perf test' entry, which makes it fail:
      
        # perf test inet_pton
        89: probe libc's inet_pton & backtrace it with ping   : FAILED!
        #
      
      If we look at what this script is expecting (commenting out the removal
      of the temporary files in it):
      
        # cat /tmp/expected.aT6
        ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)
        .*inet_pton\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib64/libc.so.6|inlined\)$
        getaddrinfo\+0x[[:xdigit:]]+[[:space:]]\(/usr/lib64/libc.so.6\)$
        .*(\+0x[[:xdigit:]]+|\[unknown\])[[:space:]]\(.*/bin/ping.*\)$
        #
      
      And looking at what we are getting out of 'perf script', to match with
      the above:
      
        # cat /tmp/perf.script.IUC
        ping 623883 [006] 265438.471610: probe_libc:inet_pton: (7f32bcf314c0)
                          1314c0 __GI___inet_pton+0x0 (/usr/lib64/libc.so.6)
                           29510 __libc_start_call_main+0x80 (/usr/lib64/libc.so.6)
      
        ping 623883 [006] 265438.471664: probe_libc:inet_pton: (7f32bcf314c0)
                          1314c0 __GI___inet_pton+0x0 (/usr/lib64/libc.so.6)
                           fa6c6 getaddrinfo+0x126 (/usr/lib64/libc.so.6)
                            491e [unknown] (/usr/bin/ping)
        #
      
      We see that its just the first call to inet_pton() that didn't came thru
      getaddrinfo(), so if we ignore the first the script matches what it
      expects, testing that using 'perf probe' + 'perf record' + 'perf script'
      with callchains on userspace targets is producing the expected results.
      
      Since we don't have a 'perf script --skip' to help us here, use tac +
      grep to do that, resulting in a one liner that makes this script work on
      both older glibc versions as well as with 2.35.
      
      With it, on fedora 36, x86, glibc 2.35:
      
        # perf test inet_pton
         90: probe libc's inet_pton & backtrace it with ping                 : Ok
        # perf test -v inet_pton
         90: probe libc's inet_pton & backtrace it with ping                 :
        --- start ---
        test child forked, pid 627197
        ping 627220 1 267956.962402: probe_libc:inet_pton_1: (7f488bf314c0)
        1314c0 __GI___inet_pton+0x0 (/usr/lib64/libc.so.6)
        fa6c6 getaddrinfo+0x126 (/usr/lib64/libc.so.6)
        491e n (/usr/bin/ping)
        test child finished with 0
        ---- end ----
        probe libc's inet_pton & backtrace it with ping: Ok
        #
      
      And on Ubuntu 22.04.1 LTS on a Libre Computer ROC-RK3399-PC arm64 system:
      
      Before this patch it works (see that the script used has no 'tac' to
      remove the first event):
      
        root@roc-rk3399-pc:~# dpkg -l | grep libc-bin
        ii  libc-bin                                2.35-0ubuntu3.1                         arm64        GNU C Library: Binaries
        root@roc-rk3399-pc:~# grep -w tac ~acme/libexec/perf-core/tests/shell/record+probe_libc_inet_pton.sh
        root@roc-rk3399-pc:~# perf test inet_pton
         86: probe libc's inet_pton & backtrace it with ping                 : Ok
        root@roc-rk3399-pc:~# perf test -v inet_pton
         86: probe libc's inet_pton & backtrace it with ping                 :
        --- start ---
        test child forked, pid 1375
        ping 1399 [000] 4114.417450: probe_libc:inet_pton: (ffffb3e26120)
        106120 inet_pton+0x0 (/usr/lib/aarch64-linux-gnu/libc.so.6)
        d18bc getaddrinfo+0xec (/usr/lib/aarch64-linux-gnu/libc.so.6)
        2b68 [unknown] (/usr/bin/ping)
        test child finished with 0
        ---- end ----
        probe libc's inet_pton & backtrace it with ping: Ok
        root@roc-rk3399-pc:~#
      
      And after it continues to work:
      
        root@roc-rk3399-pc:~# grep -w tac ~acme/libexec/perf-core/tests/shell/record+probe_libc_inet_pton.sh
        	perf script -i $perf_data | tac | grep -m1 ^ping -B9 | tac > $perf_script
        root@roc-rk3399-pc:~# perf test inet_pton
         86: probe libc's inet_pton & backtrace it with ping                 : Ok
        root@roc-rk3399-pc:~# perf test -v inet_pton
         86: probe libc's inet_pton & backtrace it with ping                 :
        --- start ---
        test child forked, pid 6995
        ping 7019 [005] 4832.160741: probe_libc:inet_pton: (ffffa62e6120)
        106120 inet_pton+0x0 (/usr/lib/aarch64-linux-gnu/libc.so.6)
        d18bc getaddrinfo+0xec (/usr/lib/aarch64-linux-gnu/libc.so.6)
        2b68 [unknown] (/usr/bin/ping)
        test child finished with 0
        ---- end ----
        probe libc's inet_pton & backtrace it with ping: Ok
        root@roc-rk3399-pc:~#
      
      Reported-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Heiko Carstens <hca@linux.ibm.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>
      Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
      Cc: Sven Schnelle <svens@linux.ibm.com>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/Y7QyPkPlDYip3cZH@kernel.org
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b963c1d6
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Fix segfault when trying to process tracepoints in perf.data and... · 77fe30fe
      Arnaldo Carvalho de Melo authored
      perf tools: Fix segfault when trying to process tracepoints in perf.data and not linked with libtraceevent
      
      When we have a perf.data file with tracepoints, such as:
      
        # perf evlist -f
        probe_perf:lzma_decompress_to_file
        # Tip: use 'perf evlist --trace-fields' to show fields for tracepoint events
        #
      
      We end up segfaulting when using perf built with NO_LIBTRACEEVENT=1 by
      trying to find an evsel with a NULL 'event_name' variable:
      
        (gdb) run report --stdio -f
        Starting program: /root/bin/perf report --stdio -f
      
        Program received signal SIGSEGV, Segmentation fault.
        0x000000000055219d in find_evsel (evlist=0xfda7b0, event_name=0x0) at util/sort.c:2830
        warning: Source file is more recent than executable.
        2830		if (event_name[0] == '%') {
        Missing separate debuginfos, use: dnf debuginfo-install bzip2-libs-1.0.8-11.fc36.x86_64 cyrus-sasl-lib-2.1.27-18.fc36.x86_64 elfutils-debuginfod-client-0.188-3.fc36.x86_64 elfutils-libelf-0.188-3.fc36.x86_64 elfutils-libs-0.188-3.fc36.x86_64 glibc-2.35-20.fc36.x86_64 keyutils-libs-1.6.1-4.fc36.x86_64 krb5-libs-1.19.2-12.fc36.x86_64 libbrotli-1.0.9-7.fc36.x86_64 libcap-2.48-4.fc36.x86_64 libcom_err-1.46.5-2.fc36.x86_64 libcurl-7.82.0-12.fc36.x86_64 libevent-2.1.12-6.fc36.x86_64 libgcc-12.2.1-4.fc36.x86_64 libidn2-2.3.4-1.fc36.x86_64 libnghttp2-1.51.0-1.fc36.x86_64 libpsl-0.21.1-5.fc36.x86_64 libselinux-3.3-4.fc36.x86_64 libssh-0.9.6-4.fc36.x86_64 libstdc++-12.2.1-4.fc36.x86_64 libunistring-1.0-1.fc36.x86_64 libunwind-1.6.2-2.fc36.x86_64 libxcrypt-4.4.33-4.fc36.x86_64 libzstd-1.5.2-2.fc36.x86_64 numactl-libs-2.0.14-5.fc36.x86_64 opencsd-1.2.0-1.fc36.x86_64 openldap-2.6.3-1.fc36.x86_64 openssl-libs-3.0.5-2.fc36.x86_64 slang-2.3.2-11.fc36.x86_64 xz-libs-5.2.5-9.fc36.x86_64 zlib-1.2.11-33.fc36.x86_64
        (gdb) bt
        #0  0x000000000055219d in find_evsel (evlist=0xfda7b0, event_name=0x0) at util/sort.c:2830
        #1  0x0000000000552416 in add_dynamic_entry (evlist=0xfda7b0, tok=0xffb6eb "trace", level=2) at util/sort.c:2976
        #2  0x0000000000552d26 in sort_dimension__add (list=0xf93e00 <perf_hpp_list>, tok=0xffb6eb "trace", evlist=0xfda7b0, level=2) at util/sort.c:3193
        #3  0x0000000000552e1c in setup_sort_list (list=0xf93e00 <perf_hpp_list>, str=0xffb6eb "trace", evlist=0xfda7b0) at util/sort.c:3227
        #4  0x00000000005532fa in __setup_sorting (evlist=0xfda7b0) at util/sort.c:3381
        #5  0x0000000000553cdc in setup_sorting (evlist=0xfda7b0) at util/sort.c:3608
        #6  0x000000000042eb9f in cmd_report (argc=0, argv=0x7fffffffe470) at builtin-report.c:1596
        #7  0x00000000004aee7e in run_builtin (p=0xf64ca0 <commands+288>, argc=3, argv=0x7fffffffe470) at perf.c:330
        #8  0x00000000004af0f2 in handle_internal_command (argc=3, argv=0x7fffffffe470) at perf.c:384
        #9  0x00000000004af241 in run_argv (argcp=0x7fffffffe29c, argv=0x7fffffffe290) at perf.c:428
        #10 0x00000000004af5fc in main (argc=3, argv=0x7fffffffe470) at perf.c:562
        (gdb)
      
      So check if we have tracepoint events in add_dynamic_entry() and bail
      out instead:
      
        # perf report --stdio -f
        This perf binary isn't linked with libtraceevent, can't process probe_perf:lzma_decompress_to_file
        Error:
        Unknown --sort key: `trace'
        #
      
      Fixes: 378ef0f5
      
       ("perf build: Use libtraceevent from the system")
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/Y7MDb7kRaHZB6APC@kernel.org
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      77fe30fe
  3. Jan 02, 2023
    • Ahelenia Ziemiańska's avatar
      perf tools: Don't include signature in version strings · f24fb539
      Ahelenia Ziemiańska authored
      
      
      This explodes the build if HEAD is signed, since the generated version
      is gpg: Signature made Mon 26 Dec 2022 20:34:48 CET, then a few more
      lines, then the SHA.
      
      Signed-off-by: default avatarAhelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/7c9637711271f50ec2341fb8a7c29585335dab04.1672174189.git.nabijaczleweli@nabijaczleweli.xyz
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f24fb539
    • Yang Jihong's avatar
      perf help: Use HAVE_LIBTRACEEVENT to filter out unsupported commands · 55c41f2e
      Yang Jihong authored
      Commands such as kmem, kwork, lock, sched, trace and timechart depend on
      libtraceevent, these commands need to be isolated using HAVE_LIBTRACEEVENT
      macro when cmdlist generation.
      
      The output of the generate-cmdlist.sh script is as follows:
      
        # ./util/generate-cmdlist.sh
        /* Automatically generated by ./util/generate-cmdlist.sh */
        struct cmdname_help
        {
            char name[16];
            char help[80];
        };
      
        static struct cmdname_help common_cmds[] = {
          {"annotate", "Read perf.data (created by perf record) and display annotated code"},
          {"archive", "Create archive with object files with build-ids found in perf.data file"},
          {"bench", "General framework for benchmark suites"},
          {"buildid-cache", "Manage build-id cache."},
          {"buildid-list", "List the buildids in a perf.data file"},
          {"c2c", "Shared Data C2C/HITM Analyzer."},
          {"config", "Get and set variables in a configuration file."},
          {"daemon", "Run record sessions on background"},
          {"data", "Data file related processing"},
          {"diff", "Read perf.data files and display the differential profile"},
          {"evlist", "List the event names in a perf.data file"},
          {"ftrace", "simple wrapper for kernel's ftrace functionality"},
          {"inject", "Filter to augment the events stream with additional information"},
          {"iostat", "Show I/O performance metrics"},
          {"kallsyms", "Searches running kernel for symbols"},
          {"kvm", "Tool to trace/measure kvm guest os"},
          {"list", "List all symbolic event types"},
          {"mem", "Profile memory accesses"},
          {"record", "Run a command and record its profile into perf.data"},
          {"report", "Read perf.data (created by perf record) and display the profile"},
          {"script", "Read perf.data (created by perf record) and display trace output"},
          {"stat", "Run a command and gather performance counter statistics"},
          {"test", "Runs sanity tests."},
          {"top", "System profiling tool."},
          {"version", "display the version of perf binary"},
        #ifdef HAVE_LIBELF_SUPPORT
          {"probe", "Define new dynamic tracepoints"},
        #endif /* HAVE_LIBELF_SUPPORT */
        #if defined(HAVE_LIBTRACEEVENT) && (defined(HAVE_LIBAUDIT_SUPPORT) || defined(HAVE_SYSCALL_TABLE_SUPPORT))
          {"trace", "strace inspired tool"},
        #endif /* HAVE_LIBTRACEEVENT && (HAVE_LIBAUDIT_SUPPORT || HAVE_SYSCALL_TABLE_SUPPORT) */
        #ifdef HAVE_LIBTRACEEVENT
          {"kmem", "Tool to trace/measure kernel memory properties"},
          {"kwork", "Tool to trace/measure kernel work properties (latencies)"},
          {"lock", "Analyze lock events"},
          {"sched", "Tool to trace/measure scheduler properties (latencies)"},
          {"timechart", "Tool to visualize total system behavior during a workload"},
        #endif /* HAVE_LIBTRACEEVENT */
        };
      
      Fixes: 378ef0f5
      
       ("perf build: Use libtraceevent from the system")
      Signed-off-by: default avatarYang Jihong <yangjihong1@huawei.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20221226085703.95081-1-yangjihong1@huawei.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      55c41f2e
    • Eric Lin's avatar
      perf tools riscv: Fix build error on riscv due to missing header for 'struct perf_sample' · a8f54d94
      Eric Lin authored
      Since the definition of 'struct perf_sample' has been moved to sample.h,
      we need to include this header file to fix the build error as follows:
      
        arch/riscv/util/unwind-libdw.c: In function 'libdw__arch_set_initial_registers':
        arch/riscv/util/unwind-libdw.c:12:50: error: invalid use of undefined type 'struct perf_sample'
           12 |         struct regs_dump *user_regs = &ui->sample->user_regs;
              |                                                  ^~
      
      Fixes: 9823147d
      
       ("perf tools: Move 'struct perf_sample' to a separate header file to disentangle headers")
      Signed-off-by: default avatarEric Lin <eric.lin@sifive.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: greentime.hu@sifive.com
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: linux-riscv@lists.infradead.org
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Palmer Dabbelt <palmer@dabbelt.com>
      Cc: Paul Walmsley <paul.walmsley@sifive.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Vincent Chen <vincent.chen@sifive.com>
      Link: https://lore.kernel.org/r/20221231052731.24908-1-eric.lin@sifive.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a8f54d94
    • Miaoqian Lin's avatar
      perf tools: Fix resources leak in perf_data__open_dir() · 0a6564eb
      Miaoqian Lin authored
      In perf_data__open_dir(), opendir() opens the directory stream.  Add
      missing closedir() to release it after use.
      
      Fixes: eb617670
      
       ("perf data: Add perf_data__open_dir_data function")
      Reviewed-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20221229090903.1402395-1-linmq006@gmail.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0a6564eb
    • Linus Torvalds's avatar
      Linux 6.2-rc2 · 88603b6d
      Linus Torvalds authored
      v6.2-rc2
      88603b6d
    • Linus Torvalds's avatar
      Merge tag 'perf_urgent_for_v6.2_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 150aae35
      Linus Torvalds authored
      Pull perf fixes from Borislav Petkov:
      
       - Pass only an initialized perf event attribute to the LSM hook
      
       - Fix a use-after-free on the perf syscall's error path
      
       - A potential integer overflow fix in amd_core_pmu_init()
      
       - Fix the cgroup events tracking after the context handling rewrite
      
       - Return the proper value from the inherit_event() function on error
      
      * tag 'perf_urgent_for_v6.2_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/core: Call LSM hook after copying perf_event_attr
        perf: Fix use-after-free in error path
        perf/x86/amd: fix potential integer overflow on shift of a int
        perf/core: Fix cgroup events tracking
        perf core: Return error pointer if inherit_event() fails to find pmu_ctx
      150aae35
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v6.2_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5b129817
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - Two fixes to correct how kprobes handles INT3 now that they're added
         by other functionality like the rethunks and not only kgdb
      
       - Remove __init section markings of two functions which are referenced
         by a function in the .text section
      
      * tag 'x86_urgent_for_v6.2_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
        x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
        x86/calldepth: Fix incorrect init section references
      5b129817
    • Linus Torvalds's avatar
      Merge tag 'locking_urgent_for_v6.2_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 95d248d1
      Linus Torvalds authored
      Pull locking fixes from Borislav Petkov:
      
       - Prevent the leaking of a debug timer in futex_waitv()
      
       - A preempt-RT mutex locking fix, adding the proper acquire semantics
      
      * tag 'locking_urgent_for_v6.2_rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        futex: Fix futex_waitv() hrtimer debug object leak on kcalloc error
        rtmutex: Add acquire semantics for rtmutex lock acquisition slow path
      95d248d1
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-01-01' of git://anongit.freedesktop.org/drm/drm · 8b419482
      Linus Torvalds authored
      Pull drm fixes from Daniel Vetter:
       "I'm just back from the mountains, and Dave is out at the beach and
        should be back in a week again. Just i915 fixes and since Rodrigo
        bothered to make the pull last week I figured I should warm up gpg and
        forward this in a nice signed tag as a new years present!
      
         - i915 fixes for newer platforms
      
         - i915 locking rework to not give up in vm eviction fallback path too
           early"
      
      * tag 'drm-fixes-2023-01-01' of git://anongit.freedesktop.org/drm/drm:
        drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index
        drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence
        drm/i915/uc: Fix two issues with over-size firmware files
        drm/i915: improve the catch-all evict to handle lock contention
        drm/i915: Remove __maybe_unused from mtl_info
        drm/i915: fix TLB invalidation for Gen12.50 video and compute engines
      8b419482
  4. Jan 01, 2023
    • Daniel Vetter's avatar
      Merge tag 'drm-intel-fixes-2022-12-30' of... · a9f5a752
      Daniel Vetter authored
      
      Merge tag 'drm-intel-fixes-2022-12-30' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - fix TLB invalidation for DG2 and newer platforms. (Andrzej)
      - Remove __maybe_unused from mtl_info (Lucas)
      - improve the catch-all evict to handle lock contention (Matt Auld)
      - Fix two issues with over-size (GuC/HuC) firmware files (John)
      - Fix DSI resume issues on ICL+ (Jani)
      
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/Y662ijDHrZCjTFla@intel.com
      a9f5a752
    • Linus Torvalds's avatar
      Merge tag 'kbuild-fixes-v6.2' of... · e4cf7c25
      Linus Torvalds authored
      Merge tag 'kbuild-fixes-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
      
      Pull Kbuild fixes from Masahiro Yamada:
      
       - Fix broken BuildID
      
       - Add srcrpm-pkg to the help message
      
       - Fix the option order for modpost built with musl libc
      
       - Fix the build dependency of rpm-pkg for openSUSE
      
      * tag 'kbuild-fixes-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        fixdep: remove unneeded <stdarg.h> inclusion
        kbuild: sort single-targets alphabetically again
        kbuild: rpm-pkg: add libelf-devel as alternative for BuildRequires
        kbuild: Fix running modpost with musl libc
        kbuild: add a missing line for help message
        .gitignore: ignore *.rpm
        arch: fix broken BuildID for arm64 and riscv
        kconfig: Add static text for search information in help menu
      e4cf7c25
    • Linus Torvalds's avatar
      Merge tag 'ata-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata · e39d9b9f
      Linus Torvalds authored
      Pull ata fix from Damien Le Moal:
       "A single fix to address an issue with wake from suspend with PCS
        adapters, from Adam"
      
      * tag 'ata-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata:
        ata: ahci: Fix PCS quirk application for suspend
      e39d9b9f
  5. Dec 31, 2022
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · c8451c14
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These are new ACPI IRQ override quirks, low-power S0 idle (S0ix)
        support adjustments and ACPI backlight handling fixes, mostly for
        platforms using AMD chips.
      
        Specifics:
      
         - Add ACPI IRQ override quirks for Asus ExpertBook B2502, Lenovo
           14ALC7, and XMG Core 15 (Hans de Goede, Adrian Freund, Erik
           Schumacher).
      
         - Adjust ACPI video detection fallback path to prevent
           non-operational ACPI backlight devices from being created on
           systems where the native driver does not detect a suitable panel
           (Mario Limonciello).
      
         - Fix Apple GMUX backlight detection (Hans de Goede).
      
         - Add a low-power S0 idle (S0ix) handling quirk for HP Elitebook 865
           and stop using AMD-specific low-power S0 idle code path for systems
           with Rembrandt chips and newer (Mario Limonciello)"
      
      * tag 'acpi-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: x86: s2idle: Stop using AMD specific codepath for Rembrandt+
        ACPI: x86: s2idle: Force AMD GUID/_REV 2 on HP Elitebook 865
        ACPI: video: Fix Apple GMUX backlight detection
        ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks
        ACPI: resource: do IRQ override on Lenovo 14ALC7
        ACPI: resource: do IRQ override on XMG Core 15
        ACPI: video: Don't enable fallback path for creating ACPI backlight by default
        drm/amd/display: Report to ACPI video if no panels were found
        ACPI: video: Allow GPU drivers to report no panels
      c8451c14
    • Linus Torvalds's avatar
      Merge tag 'sound-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 262eef26
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Just a few small fixes:
      
         - A regression fix for HDMI audio on HD-audio AMD codecs
      
         - Fixes for LINE6 MIDI handling
      
         - HD-audio quirk for Dell laptops"
      
      * tag 'sound-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda/hdmi: Static PCM mapping again with AMD HDMI codecs
        ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
        ALSA: line6: fix stack overflow in line6_midi_transmit
        ALSA: line6: correct midi status byte when receiving data from podxt
      262eef26
  6. Dec 30, 2022
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-resource' and 'acpi-video' · 0948a9ef
      Rafael J. Wysocki authored
      Merge ACPI resource handling quirks and ACPI backlight handling fixes
      for 6.2-rc2:
      
       - Add ACPI IRQ override quirks for Asus ExpertBook B2502, Lenovo
         14ALC7, and XMG Core 15 (Hans de Goede, Adrian Freund,  Erik
         Schumacher).
      
       - Adjust ACPI video detection fallback path to prevent non-operational
         ACPI backlight devices from being created on systems where the native
         driver does not detect a suitable panel (Mario Limonciello).
      
       - Fix Apple GMUX backlight detection (Hans de Goede).
      
      * acpi-resource:
        ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks
        ACPI: resource: do IRQ override on Lenovo 14ALC7
        ACPI: resource: do IRQ override on XMG Core 15
      
      * acpi-video:
        ACPI: video: Fix Apple GMUX backlight detection
        ACPI: video: Don't enable fallback path for creating ACPI backlight by default
        drm/amd/display: Report to ACPI video if no panels were found
        ACPI: video: Allow GPU drivers to report no panels
      0948a9ef
    • Jani Nikula's avatar
      drm/i915/dsi: fix MIPI_BKLT_EN_1 native GPIO index · 6217e9f0
      Jani Nikula authored
      Due to copy-paste fail, MIPI_BKLT_EN_1 would always use PPS index 1,
      never 0. Fix the sloppiest commit in recent memory.
      
      Fixes: 963bbdb3
      
       ("drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence")
      Reported-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221220140105.313333-1-jani.nikula@intel.com
      (cherry picked from commit a561933c
      
      )
      Cc: stable@vger.kernel.org # 6.1
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      6217e9f0
    • Jani Nikula's avatar
      drm/i915/dsi: add support for ICL+ native MIPI GPIO sequence · 963bbdb3
      Jani Nikula authored
      
      
      Starting from ICL, the default for MIPI GPIO sequences seems to be using
      native GPIOs i.e. GPIOs available in the GPU. These native GPIOs reuse
      many pins that quite frankly seem scary to poke based on the VBT
      sequences. We pretty much have to trust that the board is configured
      such that the relevant HPD, PP_CONTROL and GPIO bits aren't used for
      anything else.
      
      MIPI sequence v4 also adds a flag to fall back to non-native sequences.
      
      v5:
      - Wrap SHOTPLUG_CTL_DDI modification in spin_lock() in icp_irq_handler()
        too (Ville)
      - References instead of Closes issue 6131 because this does not fix everything
      
      v4:
      - Wrap SHOTPLUG_CTL_DDI modification in spin_lock_irq() (Ville)
      
      v3:
      - Fix -Wbitwise-conditional-parentheses (kernel test robot <lkp@intel.com>)
      
      v2:
      - Fix HPD pin output set (impacts GPIOs 0 and 5)
      - Fix GPIO data output direction set (impacts GPIOs 4 and 9)
      - Reduce register accesses to single intel_de_rwm()
      
      References: https://gitlab.freedesktop.org/drm/intel/-/issues/6131
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221219105955.4014451-1-jani.nikula@intel.com
      (cherry picked from commit f087cfe6
      
      )
      Cc: stable@vger.kernel.org # 6.1
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      963bbdb3
    • Masahiro Yamada's avatar
      fixdep: remove unneeded <stdarg.h> inclusion · 6a5e25fc
      Masahiro Yamada authored
      This is unneeded since commit 69304379
      
       ("fixdep: use fflush() and
      ferror() to ensure successful write to files").
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      6a5e25fc
    • Masahiro Yamada's avatar
      kbuild: sort single-targets alphabetically again · aa4847db
      Masahiro Yamada authored
      
      
      This was previously alphabetically sorted. Sort it again.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarMiguel Ojeda <ojeda@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      aa4847db
    • Masahiro Yamada's avatar
      kbuild: rpm-pkg: add libelf-devel as alternative for BuildRequires · 02a893bc
      Masahiro Yamada authored
      Guoqing Jiang reports that openSUSE cannot compile the kernel rpm due
      to "BuildRequires: elfutils-libelf-devel" added by commit 8818039f
      ("kbuild: add ability to make source rpm buildable using koji").
      The relevant package name in openSUSE is libelf-devel.
      
      Add it as an alternative package.
      
      BTW, if it is impossible to solve the build requirement, the final
      resort would be:
      
          $ make RPMOPTS=--nodeps rpm-pkg
      
      This passes --nodeps to the rpmbuild command so it will not verify
      build dependencies. This is useful to test rpm builds on non-rpm
      system. On Debian/Ubuntu, for example, you can install rpmbuild by
      'apt-get install rpm'.
      
      NOTE1:
        Likewise, it is possible to bypass the build dependency check for
        debian package builds:
      
          $ make DPKG_FLAGS=-d deb-pkg
      
      NOTE2:
        The 'or' operator is supported since RPM 4.13. So, old distros such
        as CentOS 7 will break. I suggest installing newer rpmbuild in such
        cases.
      
      Link: https://lore.kernel.org/linux-kbuild/ee227d24-9c94-bfa3-166a-4ee6b5dfea09@linux.dev/T/#u
      Fixes: 8818039f
      
       ("kbuild: add ability to make source rpm buildable using koji")
      Reported-by: default avatarGuoqing Jiang <guoqing.jiang@linux.dev>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Tested-by: default avatarGuoqing Jiang <guoqing.jiang@linux.dev>
      Acked-by: default avatarJonathan Toppins <jtoppins@redhat.com>
      02a893bc
    • Samuel Holland's avatar
      kbuild: Fix running modpost with musl libc · 63ffe00d
      Samuel Holland authored
      commit 3d57e1b7 ("kbuild: refactor the prerequisites of the modpost
      rule") moved 'vmlinux.o' inside modpost-args, possibly before some of
      the other options. However, getopt() in musl libc follows POSIX and
      stops looking for options upon reaching the first non-option argument.
      As a result, the '-T' option is misinterpreted as a positional argument,
      and the build fails:
      
        make -f ./scripts/Makefile.modpost
           scripts/mod/modpost   -E   -o Module.symvers vmlinux.o -T modules.order
        -T: No such file or directory
        make[1]: *** [scripts/Makefile.modpost:137: Module.symvers] Error 1
        make: *** [Makefile:1960: modpost] Error 2
      
      The fix is to move all options before 'vmlinux.o' in modpost-args.
      
      Fixes: 3d57e1b7
      
       ("kbuild: refactor the prerequisites of the modpost rule")
      Signed-off-by: default avatarSamuel Holland <samuel@sholland.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      63ffe00d
    • Jun ASAKA's avatar
      kbuild: add a missing line for help message · 9c9b55a5
      Jun ASAKA authored
      
      
      The help message line for building the source RPM package was missing.
      Added it.
      
      Signed-off-by: default avatarJun ASAKA <JunASAKA@zzy040330.moe>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      9c9b55a5
    • Masahiro Yamada's avatar
      .gitignore: ignore *.rpm · 924d28b3
      Masahiro Yamada authored
      Previously, *.rpm files were created under $HOME/rpmbuild/, but since
      commit 8818039f
      
       ("kbuild: add ability to make source rpm buildable
      using koji"), srcrpm-pkg creates the source rpm in the kernel tree
      because it sets '_srcrpmdir'.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      924d28b3
    • Masahiro Yamada's avatar
      arch: fix broken BuildID for arm64 and riscv · 99cb0d91
      Masahiro Yamada authored
      Dennis Gilmore reports that the BuildID is missing in the arm64 vmlinux
      since commit 994b7ac1 ("arm64: remove special treatment for the
      link order of head.o").
      
      The issue is that the type of .notes section, which contains the BuildID,
      changed from NOTES to PROGBITS.
      
      Ard Biesheuvel figured out that whichever object gets linked first gets
      to decide the type of a section. The PROGBITS type is the result of the
      compiler emitting .note.GNU-stack as PROGBITS rather than NOTE.
      
      While Ard provided a fix for arm64, I want to fix this globally because
      the same issue is happening on riscv since commit 2348e6bf ("riscv:
      remove special treatment for the link order of head.o"). This problem
      will happen in general for other architectures if they start to drop
      unneeded entries from scripts/head-object-list.txt.
      
      Discard .note.GNU-stack in include/asm-generic/vmlinux.lds.h.
      
      Link: https://lore.kernel.org/lkml/CAABkxwuQoz1CTbyb57n0ZX65eSYiTonFCU8-LCQc=74D=xE=rA@mail.gmail.com/
      Fixes: 994b7ac1 ("arm64: remove special treatment for the link order of head.o")
      Fixes: 2348e6bf
      
       ("riscv: remove special treatment for the link order of head.o")
      Reported-by: default avatarDennis Gilmore <dennis@ausil.us>
      Suggested-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
      99cb0d91
    • John Harrison's avatar
      drm/i915/uc: Fix two issues with over-size firmware files · 11ce8fd8
      John Harrison authored
      In the case where a firmware file is too large (e.g. someone
      downloaded a web page ASCII dump from github...), the firmware object
      is released but the pointer is not zerod. If no other firmware file
      was found then release would be called again leading to a double kfree.
      
      Also, the size check was only being applied to the initial firmware
      load not any of the subsequent attempts. So move the check into a
      wrapper that is used for all loads.
      
      Fixes: 01624116
      
       ("drm/i915/uc: use different ggtt pin offsets for uc loads")
      Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
      Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221221193031.687266-4-John.C.Harrison@Intel.com
      (cherry picked from commit 4071d98b
      
      )
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      11ce8fd8
    • Matthew Auld's avatar
      drm/i915: improve the catch-all evict to handle lock contention · 3f882f2d
      Matthew Auld authored
      The catch-all evict can fail due to object lock contention, since it
      only goes as far as trylocking the object, due to us already holding the
      vm->mutex. Doing a full object lock here can deadlock, since the
      vm->mutex is always our inner lock. Add another execbuf pass which drops
      the vm->mutex and then tries to grab the object will the full lock,
      before then retrying the eviction. This should be good enough for now to
      fix the immediate regression with userspace seeing -ENOSPC from execbuf
      due to contended object locks during GTT eviction.
      
      v2 (Mani)
        - Also revamp the docs for the different passes.
      
      Testcase: igt@gem_ppgtt@shrink-vs-evict-*
      Fixes: 7e00897b
      
       ("drm/i915: Add object locking to i915_gem_evict_for_node and i915_gem_evict_something, v2.")
      References: https://gitlab.freedesktop.org/drm/intel/-/issues/7627
      References: https://gitlab.freedesktop.org/drm/intel/-/issues/7570
      References: https://bugzilla.mozilla.org/show_bug.cgi?id=1779558
      Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Cc: Andrzej Hajda <andrzej.hajda@intel.com>
      Cc: Mani Milani <mani@chromium.org>
      Cc: <stable@vger.kernel.org> # v5.18+
      Reviewed-by: default avatarMani Milani <mani@chromium.org>
      Tested-by: default avatarMani Milani <mani@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221216113456.414183-1-matthew.auld@intel.com
      (cherry picked from commit 801fa7a8
      
      )
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      3f882f2d
    • Lucas De Marchi's avatar
      drm/i915: Remove __maybe_unused from mtl_info · fff75869
      Lucas De Marchi authored
      The attribute __maybe_unused should remain only until the respective
      info is not in the pciidlist. The info can't be added together
      with its definition because that would cause the driver to automatically
      probe for the device, while it's still not ready for that. However once
      pciidlist contains it, the attribute can be removed.
      
      Fixes: 78353039
      
       ("drm/i915/mtl: Add MeteorLake PCI IDs")
      Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
      Reviewed-by: default avatarRadhakrishna Sripada <radhakrishna.sripada@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221214194944.3670344-1-lucas.demarchi@intel.com
      (cherry picked from commit 50490ce0
      
      )
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      fff75869
    • Andrzej Hajda's avatar
      drm/i915: fix TLB invalidation for Gen12.50 video and compute engines · c5bc0736
      Andrzej Hajda authored
      In case of Gen12.50 video and compute engines, TLB_INV registers are
      masked - to modify one bit, corresponding bit in upper half of the register
      must be enabled, otherwise nothing happens.
      
      Fixes: 77fa9efc
      
       ("drm/i915/xehp: Create separate reg definitions for new MCR registers")
      Signed-off-by: default avatarAndrzej Hajda <andrzej.hajda@intel.com>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20221214075439.402485-1-andrzej.hajda@intel.com
      (cherry picked from commit 4d5cf7b1
      
      )
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      c5bc0736
    • Linus Torvalds's avatar
      Merge tag 'block-6.2-2022-12-29' of git://git.kernel.dk/linux · bff687b3
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Mostly just NVMe, but also a single fixup for BFQ for a regression
        that happened during the merge window. In detail:
      
         - NVMe pull requests via Christoph:
            - Fix doorbell buffer value endianness (Klaus Jensen)
            - Fix Linux vs NVMe page size mismatch (Keith Busch)
            - Fix a potential use memory access beyong the allocation limit
              (Keith Busch)
            - Fix a multipath vs blktrace NULL pointer dereference (Yanjun
              Zhang)
            - Fix various problems in handling the Command Supported and
              Effects log (Christoph Hellwig)
            - Don't allow unprivileged passthrough of commands that don't
              transfer data but modify logical block content (Christoph
              Hellwig)
            - Add a features and quirks policy document (Christoph Hellwig)
            - Fix some really nasty code that was correct but made smatch
              complain (Sagi Grimberg)
      
         - Use-after-free regression in BFQ from this merge window (Yu)"
      
      * tag 'block-6.2-2022-12-29' of git://git.kernel.dk/linux:
        nvme-auth: fix smatch warning complaints
        nvme: consult the CSE log page for unprivileged passthrough
        nvme: also return I/O command effects from nvme_command_effects
        nvmet: don't defer passthrough commands with trivial effects to the workqueue
        nvmet: set the LBCC bit for commands that modify data
        nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
        nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
        docs, nvme: add a feature and quirk policy document
        nvme-pci: update sqsize when adjusting the queue depth
        nvme: fix setting the queue depth in nvme_alloc_io_tag_set
        block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq
        nvme: fix multipath crash caused by flush request when blktrace is enabled
        nvme-pci: fix page size checks
        nvme-pci: fix mempool alloc size
        nvme-pci: fix doorbell buffer value endianness
      bff687b3
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.2-2022-12-29' of git://git.kernel.dk/linux · ac787ffa
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
      
       - Two fixes for mutex grabbing when the task state is != TASK_RUNNING
         (me)
      
       - Check for invalid opcode in io_uring_register() a bit earlier, to
         avoid going through the quiesce machinery just to return -EINVAL
         later in the process (me)
      
       - Fix for the uapi io_uring header, skipping including time_types.h
         when necessary (Stefan)
      
      * tag 'io_uring-6.2-2022-12-29' of git://git.kernel.dk/linux:
        uapi:io_uring.h: allow linux/time_types.h to be skipped
        io_uring: check for valid register opcode earlier
        io_uring/cancel: re-grab ctx mutex after finishing wait
        io_uring: finish waiting before flushing overflow entries
      ac787ffa
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-kunit-fixes-6.2-rc2' of... · 69fb073b
      Linus Torvalds authored
      Merge tag 'linux-kselftest-kunit-fixes-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull KUnit fix from Shuah Khan:
      
       - alloc_string_stream_fragment() error path fix to free before
         returning a failure.
      
      * tag 'linux-kselftest-kunit-fixes-6.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        kunit: alloc_string_stream_fragment error handling bug fix
      69fb073b
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 2258c2dc
      Linus Torvalds authored
      Pull kvm fixes from Paolo Bonzini:
       "Changes that were posted too late for 6.1, or after the release.
      
        x86:
      
         - several fixes to nested VMX execution controls
      
         - fixes and clarification to the documentation for Xen emulation
      
         - do not unnecessarily release a pmu event with zero period
      
         - MMU fixes
      
         - fix Coverity warning in kvm_hv_flush_tlb()
      
        selftests:
      
         - fixes for the ucall mechanism in selftests
      
         - other fixes mostly related to compilation with clang"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (41 commits)
        KVM: selftests: restore special vmmcall code layout needed by the harness
        Documentation: kvm: clarify SRCU locking order
        KVM: x86: fix deadlock for KVM_XEN_EVTCHN_RESET
        KVM: x86/xen: Documentation updates and clarifications
        KVM: x86/xen: Add KVM_XEN_INVALID_GPA and KVM_XEN_INVALID_GFN to uapi
        KVM: x86/xen: Simplify eventfd IOCTLs
        KVM: x86/xen: Fix SRCU/RCU usage in readers of evtchn_ports
        KVM: x86/xen: Use kvm_read_guest_virt() instead of open-coding it badly
        KVM: x86/xen: Fix memory leak in kvm_xen_write_hypercall_page()
        KVM: Delete extra block of "};" in the KVM API documentation
        kvm: x86/mmu: Remove duplicated "be split" in spte.h
        kvm: Remove the unused macro KVM_MMU_READ_{,UN}LOCK()
        MAINTAINERS: adjust entry after renaming the vmx hyperv files
        KVM: selftests: Mark correct page as mapped in virt_map()
        KVM: arm64: selftests: Don't identity map the ucall MMIO hole
        KVM: selftests: document the default implementation of vm_vaddr_populate_bitmap
        KVM: selftests: Use magic value to signal ucall_alloc() failure
        KVM: selftests: Disable "gnu-variable-sized-type-not-at-end" warning
        KVM: selftests: Include lib.mk before consuming $(CC)
        KVM: selftests: Explicitly disable builtins for mem*() overrides
        ...
      2258c2dc
    • Jens Axboe's avatar
      Merge tag 'nvme-6.2-2022-12-29' of git://git.infradead.org/nvme into block-6.2 · 1551ed5a
      Jens Axboe authored
      Pull NVMe fixes from Christoph:
      
      "nvme fixes for Linux 6.2
      
       - fix various problems in handling the Command Supported and Effects log
         (Christoph Hellwig)
       - don't allow unprivileged passthrough of commands that don't transfer
         data but modify logical block content (Christoph Hellwig)
       - add a features and quirks policy document (Christoph Hellwig)
       - fix some really nasty code that was correct but made smatch complain
         (Sagi Grimberg)"
      
      * tag 'nvme-6.2-2022-12-29' of git://git.infradead.org/nvme:
        nvme-auth: fix smatch warning complaints
        nvme: consult the CSE log page for unprivileged passthrough
        nvme: also return I/O command effects from nvme_command_effects
        nvmet: don't defer passthrough commands with trivial effects to the workqueue
        nvmet: set the LBCC bit for commands that modify data
        nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it
        nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
        docs, nvme: add a feature and quirk policy document
      1551ed5a
  7. Dec 29, 2022