Skip to content
  1. May 08, 2023
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-for-v6.4-3-2023-05-06' of... · f085df1b
      Linus Torvalds authored
      Merge tag 'perf-tools-for-v6.4-3-2023-05-06' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull perf tool updates from Arnaldo Carvalho de Melo:
       "Third version of perf tool updates, with the build problems with with
        using a 'vmlinux.h' generated from the main build fixed, and the bpf
        skeleton build disabled by default.
      
        Build:
      
         - Require libtraceevent to build, one can disable it using
           NO_LIBTRACEEVENT=1.
      
           It is required for tools like 'perf sched', 'perf kvm', 'perf
           trace', etc.
      
           libtraceevent is available in most distros so installing
           'libtraceevent-devel' should be a one-time event to continue
           building perf as usual.
      
           Using NO_LIBTRACEEVENT=1 produces tooling that is functional and
           sufficient for lots of users not interested in those libtraceevent
           dependent features.
      
         - Allow Python support in 'perf script' when libtraceevent isn't
           linked, as not all features requires it, for instance Intel PT does
           not use tracepoints.
      
         - Error if the python interpreter needed for jevents to work isn't
           available and NO_JEVENTS=1 isn't set, preventing a build without
           support for JSON vendor events, which is a rare but possible
           condition. The two check error messages:
      
              $(error ERROR: No python interpreter needed for jevents generation. Install python or build with NO_JEVENTS=1.)
              $(error ERROR: Python interpreter needed for jevents generation too old (older than 3.6). Install a newer python or build with NO_JEVENTS=1.)
      
         - Make libbpf 1.0 the minimum required when building with out of
           tree, distro provided libbpf.
      
         - Use libsdtc++'s and LLVM's libcxx's __cxa_demangle, a portable C++
           demangler, add 'perf test' entry for it.
      
         - Make binutils libraries opt in, as distros disable building with it
           due to licensing, they were used for C++ demangling, for instance.
      
         - Switch libpfm4 to opt-out rather than opt-in, if libpfm-devel (or
           equivalent) isn't installed, we'll just have a build warning:
      
             Makefile.config:1144: libpfm4 not found, disables libpfm4 support. Please install libpfm4-dev
      
         - Add a feature test for scandirat(), that is not implemented so far
           in musl and uclibc, disabling features that need it, such as
           scanning for tracepoints in /sys/kernel/tracing/events.
      
        perf BPF filters:
      
         - New feature where BPF can be used to filter samples, for instance:
      
            $ sudo ./perf record -e cycles --filter 'period > 1000' true
            $ sudo ./perf script
                 perf-exec 2273949 546850.708501:       5029 cycles:  ffffffff826f9e25 finish_wait+0x5 ([kernel.kallsyms])
                 perf-exec 2273949 546850.708508:      32409 cycles:  ffffffff826f9e25 finish_wait+0x5 ([kernel.kallsyms])
                 perf-exec 2273949 546850.708526:     143369 cycles:  ffffffff82b4cdbf xas_start+0x5f ([kernel.kallsyms])
                 perf-exec 2273949 546850.708600:     372650 cycles:  ffffffff8286b8f7 __pagevec_lru_add+0x117 ([kernel.kallsyms])
                 perf-exec 2273949 546850.708791:     482953 cycles:  ffffffff829190de __mod_memcg_lruvec_state+0x4e ([kernel.kallsyms])
                      true 2273949 546850.709036:     501985 cycles:  ffffffff828add7c tlb_gather_mmu+0x4c ([kernel.kallsyms])
                      true 2273949 546850.709292:     503065 cycles:      7f2446d97c03 _dl_map_object_deps+0x973 (/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
      
         - In addition to 'period' (PERF_SAMPLE_PERIOD), the other
           PERF_SAMPLE_ can be used for filtering, and also some other sample
           accessible values, from tools/perf/Documentation/perf-record.txt:
      
              Essentially the BPF filter expression is:
      
              <term> <operator> <value> (("," | "||") <term> <operator> <value>)*
      
           The <term> can be one of:
              ip, id, tid, pid, cpu, time, addr, period, txn, weight, phys_addr,
              code_pgsz, data_pgsz, weight1, weight2, weight3, ins_lat, retire_lat,
              p_stage_cyc, mem_op, mem_lvl, mem_snoop, mem_remote, mem_lock,
              mem_dtlb, mem_blk, mem_hops
      
           The <operator> can be one of:
              ==, !=, >, >=, <, <=, &
      
           The <value> can be one of:
              <number> (for any term)
              na, load, store, pfetch, exec (for mem_op)
              l1, l2, l3, l4, cxl, io, any_cache, lfb, ram, pmem (for mem_lvl)
              na, none, hit, miss, hitm, fwd, peer (for mem_snoop)
              remote (for mem_remote)
              na, locked (for mem_locked)
              na, l1_hit, l1_miss, l2_hit, l2_miss, any_hit, any_miss, walk, fault (for mem_dtlb)
              na, by_data, by_addr (for mem_blk)
              hops0, hops1, hops2, hops3 (for mem_hops)
      
        perf lock contention:
      
         - Show lock type with address.
      
         - Track and show mmap_lock, siglock and per-cpu rq_lock with address.
           This is done for mmap_lock by following the current->mm pointer:
      
            $ sudo ./perf lock con -abl -- sleep 10
             contended   total wait     max wait     avg wait            address   symbol
             ...
                 16344    312.30 ms      2.22 ms     19.11 us   ffff8cc702595640
                 17686    310.08 ms      1.49 ms     17.53 us   ffff8cc7025952c0
                     3     84.14 ms     45.79 ms     28.05 ms   ffff8cc78114c478   mmap_lock
                  3557     76.80 ms     68.75 us     21.59 us   ffff8cc77ca3af58
                     1     68.27 ms     68.27 ms     68.27 ms   ffff8cda745dfd70
                     9     54.53 ms      7.96 ms      6.06 ms   ffff8cc7642a48b8   mmap_lock
                 14629     44.01 ms     60.00 us      3.01 us   ffff8cc7625f9ca0
                  3481     42.63 ms    140.71 us     12.24 us   ffffffff937906ac   vmap_area_lock
                 16194     38.73 ms     42.15 us      2.39 us   ffff8cd397cbc560
                    11     38.44 ms     10.39 ms      3.49 ms   ffff8ccd6d12fbb8   mmap_lock
                     1      5.43 ms      5.43 ms      5.43 ms   ffff8cd70018f0d8
                  1674      5.38 ms    422.93 us      3.21 us   ffffffff92e06080   tasklist_lock
                   581      4.51 ms    130.68 us      7.75 us   ffff8cc9b1259058
                     5      3.52 ms      1.27 ms    703.23 us   ffff8cc754510070
                   112      3.47 ms     56.47 us     31.02 us   ffff8ccee38b3120
                   381      3.31 ms     73.44 us      8.69 us   ffffffff93790690   purge_vmap_area_lock
                   255      3.19 ms     36.35 us     12.49 us   ffff8d053ce30c80
      
         - Update default map size to 16384.
      
         - Allocate single letter option -M for --map-nr-entries, as it is
           proving being frequently used.
      
         - Fix struct rq lock access for older kernels with BPF's CO-RE
           (Compile once, run everywhere).
      
         - Fix problems found with MSAn.
      
        perf report/top:
      
         - Add inline information when using --call-graph=fp or lbr, as was
           already done to the --call-graph=dwarf callchain mode.
      
         - Improve the 'srcfile' sort key performance by really using an
           optimization introduced in 6.2 for the 'srcline' sort key that
           avoids calling addr2line for comparision with each sample.
      
        perf sched:
      
         - Make 'perf sched latency/map/replay' to use "sched:sched_waking"
           instead of "sched:sched_waking", consistent with 'perf record'
           since d566a9c2 ("perf sched: Prefer sched_waking event when it
           exists").
      
        perf ftrace:
      
         - Make system wide the default target for latency subcommand, run the
           following command then generate some network traffic and press
           control+C:
      
             # perf ftrace latency -T __kfree_skb
           ^C
               DURATION     |      COUNT | GRAPH                                          |
                0 - 1    us |         27 | #############                                  |
                1 - 2    us |         22 | ###########                                    |
                2 - 4    us |          8 | ####                                           |
                4 - 8    us |          5 | ##                                             |
                8 - 16   us |         24 | ############                                   |
               16 - 32   us |          2 | #                                              |
               32 - 64   us |          1 |                                                |
               64 - 128  us |          0 |                                                |
              128 - 256  us |          0 |                                                |
              256 - 512  us |          0 |                                                |
              512 - 1024 us |          0 |                                                |
                1 - 2    ms |          0 |                                                |
                2 - 4    ms |          0 |                                                |
                4 - 8    ms |          0 |                                                |
                8 - 16   ms |          0 |                                                |
               16 - 32   ms |          0 |                                                |
               32 - 64   ms |          0 |                                                |
               64 - 128  ms |          0 |                                                |
              128 - 256  ms |          0 |                                                |
              256 - 512  ms |          0 |                                                |
              512 - 1024 ms |          0 |                                                |
                1 - ...   s |          0 |                                                |
             #
      
        perf top:
      
         - Add --branch-history (LBR: Last Branch Record) option, just like
           already available for 'perf record'.
      
         - Fix segfault in thread__comm_len() where thread->comm was being
           used outside thread->comm_lock.
      
        perf annotate:
      
         - Allow configuring objdump and addr2line in ~/.perfconfig., so that
           you can use alternative binaries, such as llvm's.
      
        perf kvm:
      
         - Add TUI mode for 'perf kvm stat report'.
      
        Reference counting:
      
         - Add reference count checking infrastructure to check for use after
           free, done to the 'cpumap', 'namespaces', 'maps' and 'map' structs,
           more to come.
      
           To build with it use -DREFCNT_CHECKING=1 in the make command line
           to build tools/perf. Documented at:
      
             https://perf.wiki.kernel.org/index.php/Reference_Count_Checking
      
         - The above caught, for instance, fix, present in this series:
      
              - Fix maps use after put in 'perf test "Share thread maps"':
      
                'maps' is copied from leader, but the leader is put on line 79
                and then 'maps' is used to read the reference count below - so
                a use after put, with the put of maps happening within
                thread__put.
      
           Fixed by reversing the order of puts so that the leader is put
           last.
      
         - Also several fixes were made to places where reference counts were
           not being held.
      
         - Make this one of the tests in 'make -C tools/perf build-test' to
           regularly build test it and to make sure no direct access to the
           reference counted structs are made, doing that via accessors to
           check the validity of the struct pointer.
      
        ARM64:
      
         - Fix 'perf report' segfault when filtering coresight traces by
           sparse lists of CPUs.
      
         - Add support for 'simd' as a sort field for 'perf report', to show
           ARM's NEON SIMD's predicate flags: "partial" and "empty".
      
        arm64 vendor events:
      
         - Add N1 metrics.
      
        Intel vendor events:
      
         - Add graniterapids, grandridge and sierraforrest events.
      
         - Refresh events for: alderlake, aldernaken, broadwell, broadwellde,
           broadwellx, cascadelakx, haswell, haswellx, icelake, icelakex,
           jaketown, meteorlake, knightslanding, sandybridge, sapphirerapids,
           silvermont, skylake, tigerlake and westmereep-dp
      
         - Refresh metrics for alderlake-n, broadwell, broadwellde,
           broadwellx, haswell, haswellx, icelakex, ivybridge, ivytown and
           skylakex.
      
        perf stat:
      
         - Implement --topdown using JSON metrics.
      
         - Add TopdownL1 JSON metric as a default if present, but disable it
           for now for some Intel hybrid architectures, a series of patches
           addressing this is being reviewed and will be submitted for v6.5.
      
         - Use metrics for --smi-cost.
      
         - Update topdown documentation.
      
        Vendor events (JSON) infrastructure:
      
         - Add support for computing and printing metric threshold values. For
           instance, here is one found in thesapphirerapids json file:
      
             {
                 "BriefDescription": "Percentage of cycles spent in System Management Interrupts.",
                 "MetricExpr": "((msr@aperf@ - cycles) / msr@aperf@ if msr@smi@ > 0 else 0)",
                 "MetricGroup": "smi",
                 "MetricName": "smi_cycles",
                 "MetricThreshold": "smi_cycles > 0.1",
                 "ScaleUnit": "100%"
             },
      
         - Test parsing metric thresholds with the fake PMU in 'perf test
           pmu-events'.
      
         - Support for printing metric thresholds in 'perf list'.
      
         - Add --metric-no-threshold option to 'perf stat'.
      
         - Add rand (reverse and) and has_pmem (optane memory) support to
           metrics.
      
         - Sort list of input files to avoid depending on the order from
           readdir() helping in obtaining reproducible builds.
      
        S/390:
      
         - Add common metrics: - CPI (cycles per instruction), prbstate (ratio
           of instructions executed in problem state compared to total number
           of instructions), l1mp (Level one instruction and data cache misses
           per 100 instructions).
      
         - Add cache metrics for z13, z14, z15 and z16.
      
         - Add metric for TLB and cache.
      
        ARM:
      
         - Add raw decoding for SPE (Statistical Profiling Extension) v1.3 MTE
           (Memory Tagging Extension) and MOPS (Memory Operations) load/store.
      
        Intel PT hardware tracing:
      
         - Add event type names UINTR (User interrupt delivered) and UIRET
           (Exiting from user interrupt routine), documented in table 32-50
           "CFE Packet Type and Vector Fields Details" in the Intel Processor
           Trace chapter of The Intel SDM Volume 3 version 078.
      
         - Add support for new branch instructions ERETS and ERETU.
      
         - Fix CYC timestamps after standalone CBR
      
        ARM CoreSight hardware tracing:
      
         - Allow user to override timestamp and contextid settings.
      
         - Fix segfault in dso lookup.
      
         - Fix timeless decode mode detection.
      
         - Add separate decode paths for timeless and per-thread modes.
      
        auxtrace:
      
         - Fix address filter entire kernel size.
      
        Miscellaneous:
      
         - Fix use-after-free and unaligned bugs in the PLT handling routines.
      
         - Use zfree() to reduce chances of use after free.
      
         - Add missing 0x prefix for addresses printed in hexadecimal in 'perf
           probe'.
      
         - Suppress massive unsupported target platform errors in the unwind
           code.
      
         - Fix return incorrect build_id size in elf_read_build_id().
      
         - Fix 'perf scripts intel-pt-events.py' IPC output for Python 2 .
      
         - Add missing new parameter in kfree_skb tracepoint to the python
           scripts using it.
      
         - Add 'perf bench syscall fork' benchmark.
      
         - Add support for printing PERF_MEM_LVLNUM_UNC (Uncached access) in
           'perf mem'.
      
         - Fix wrong size expectation for perf test 'Setup struct
           perf_event_attr' caused by the patch adding
           perf_event_attr::config3.
      
         - Fix some spelling mistakes"
      
      * tag 'perf-tools-for-v6.4-3-2023-05-06' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (365 commits)
        Revert "perf build: Make BUILD_BPF_SKEL default, rename to NO_BPF_SKEL"
        Revert "perf build: Warn for BPF skeletons if endian mismatches"
        perf metrics: Fix SEGV with --for-each-cgroup
        perf bpf skels: Stop using vmlinux.h generated from BTF, use subset of used structs + CO-RE
        perf stat: Separate bperf from bpf_profiler
        perf test record+probe_libc_inet_pton: Fix call chain match on x86_64
        perf test record+probe_libc_inet_pton: Fix call chain match on s390
        perf tracepoint: Fix memory leak in is_valid_tracepoint()
        perf cs-etm: Add fix for coresight trace for any range of CPUs
        perf build: Fix unescaped # in perf build-test
        perf unwind: Suppress massive unsupported target platform errors
        perf script: Add new parameter in kfree_skb tracepoint to the python scripts using it
        perf script: Print raw ip instead of binary offset for callchain
        perf symbols: Fix return incorrect build_id size in elf_read_build_id()
        perf list: Modify the warning message about scandirat(3)
        perf list: Fix memory leaks in print_tracepoint_events()
        perf lock contention: Rework offset calculation with BPF CO-RE
        perf lock contention: Fix struct rq lock access
        perf stat: Disable TopdownL1 on hybrid
        perf stat: Avoid SEGV on counter->name
        ...
      f085df1b
    • Linus Torvalds's avatar
      Merge tag 'core-debugobjects-2023-05-06' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 17784de6
      Linus Torvalds authored
      Pull debugobjects fix from Thomas Gleixner:
       "A single fix for debugobjects:
      
        The recent fix to ensure atomicity of lookup and allocation
        inadvertently broke the pool refill mechanism, so that debugobject
        OOMs now in certain situations. The reason is that the functions which
        got updated no longer invoke debug_objecs_init(), which is now the
        only place to care about refilling the tracking object pool.
      
        Restore the original behaviour by adding explicit refill opportunities
        to those places"
      
      * tag 'core-debugobjects-2023-05-06' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        debugobject: Ensure pool refill (again)
      17784de6
    • Linus Torvalds's avatar
      Merge tag 'v6.4-p2' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 6f69c981
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
      
       - A long-standing bug in crypto_engine
      
       - A buggy but harmless check in the sun8i-ss driver
      
       - A regression in the CRYPTO_USER interface
      
      * tag 'v6.4-p2' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: api - Fix CRYPTO_USER checks for report function
        crypto: engine - fix crypto_queue backlog handling
        crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs()
      6f69c981
    • Linus Torvalds's avatar
      Merge tag '6.4-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6 · 63342b1d
      Linus Torvalds authored
      Pull cifs fixes from Steve French:
       "smb3 client fixes, mostly DFS or reconnect related:
      
         - Two DFS connection sharing fixes
      
         - DFS refresh fix
      
         - Reconnect fix
      
         - Two potential use after free fixes
      
         - Also print prefix patch in mount debug msg
      
         - Two small cleanup fixes"
      
      * tag '6.4-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Remove unneeded semicolon
        cifs: fix sharing of DFS connections
        cifs: avoid potential races when handling multiple dfs tcons
        cifs: protect access of TCP_Server_Info::{origin,leaf}_fullpath
        cifs: fix potential race when tree connecting ipc
        cifs: fix potential use-after-free bugs in TCP_Server_Info::hostname
        cifs: print smb3_fs_context::source when mounting
        cifs: protect session status check in smb2_reconnect()
        SMB3.1.1: correct definition for app_instance_id create contexts
      63342b1d
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · d6b8a8c4
      Linus Torvalds authored
      Pull clk fixes from Stephen Boyd:
       "A couple more patches that would be good to get into -rc1:
      
         - Revert an i.MX patch that's causing video failures because division
           math goes sideways
      
         - Fix a clang + W=1 build isue where FIELD_PREP() is taking a 32-bit
           variable instead of the usual u64 type
      
         - Fix a Kconfig bug in the StarFive JH7110 clk config that selects a
           reset controller when it can't be selected"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
        clk: starfive: Fix RESET_STARFIVE_JH7110 can't be selected in a specified case
        clk: sp7021: Adjust width of _m in HWM_FIELD_PREP()
        Revert "clk: imx: composite-8m: Add support to determine_rate"
      d6b8a8c4
    • Linus Torvalds's avatar
      Merge tag 'mailbox-v6.4' of git://git.linaro.org/landing-teams/working/fujitsu/integration · 1c1094e4
      Linus Torvalds authored
      Pull mailbox updates from Jassi Brar:
      
       - mailbox api: allow direct registration to a channel and convert omap
         and pcc to use mbox_bind_client
      
       - omap and hi6220 : use of_property_read_bool
      
       - test: fix double-free and use spinlock header
      
       - rockchip and bcm-pdc: drop of_match_ptr
      
       - mpfs: change config symbol
      
       - mediatek gce: support MT6795
      
       - qcom apcs: consolidate of_device_id and support IPQ9574
      
      * tag 'mailbox-v6.4' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
        dt-bindings: mailbox: qcom: add compatible for IPQ9574 SoC
        mailbox: qcom-apcs-ipc: do not grow the of_device_id
        dt-bindings: mailbox: qcom,apcs-kpss-global: use fallbacks for few variants
        dt-bindings: mailbox: mediatek,gce-mailbox: Add support for MT6795
        mailbox: mpfs: convert SOC_MICROCHIP_POLARFIRE to ARCH_MICROCHIP_POLARFIRE
        mailbox: bcm-pdc: drop of_match_ptr for ID table
        mailbox: rockchip: drop of_match_ptr for ID table
        mailbox: mailbox-test: Fix potential double-free in mbox_test_message_write()
        mailbox: mailbox-test: Explicitly include header for spinlock support
        mailbox: Use of_property_read_bool() for boolean properties
        mailbox: pcc: Use mbox_bind_client
        mailbox: omap: Use mbox_bind_client
        mailbox: Allow direct registration to a channel
      1c1094e4
    • Linus Torvalds's avatar
      Merge tag 'for-6.4/io_uring-2023-05-07' of git://git.kernel.dk/linux · 03e5cb7b
      Linus Torvalds authored
      Pull more io_uring updates from Jens Axboe:
       "Nothing major in here, just two different parts:
      
         - A small series from Breno that enables passing the full SQE down
           for ->uring_cmd().
      
           This is a prerequisite for enabling full network socket operations.
           Queued up a bit late because of some stylistic concerns that got
           resolved, would be nice to have this in 6.4-rc1 so the dependent
           work will be easier to handle for 6.5.
      
         - Fix for the huge page coalescing, which was a regression introduced
           in the 6.3 kernel release (Tobias)"
      
      * tag 'for-6.4/io_uring-2023-05-07' of git://git.kernel.dk/linux:
        io_uring: Remove unnecessary BUILD_BUG_ON
        io_uring: Pass whole sqe to commands
        io_uring: Create a helper to return the SQE size
        io_uring/rsrc: check for nonconsecutive pages
      03e5cb7b
  2. May 07, 2023
  3. May 06, 2023
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · dd9e11d6
      Linus Torvalds authored
      Pull more SCSI updates from James Bottomley:
       "Six late arriving patches for the merge window. Five are minor
        assorted fixes and updates.
      
        The IPR driver change removes SATA support, which will now allow a
        major cleanup in the ATA subsystem because it was the only driver
        still using the old attachment mechanism. The driver is only used on
        power systems and SATA was used to support a DVD device, which has
        long been moved to a different hba. IBM chose this route instead of
        porting ipr to the newer SATA interfaces"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: qedi: Fix use after free bug in qedi_remove()
        scsi: ufs: core: mcq: Fix &hwq->cq_lock deadlock issue
        scsi: ipr: Remove several unused variables
        scsi: pm80xx: Log device registration
        scsi: ipr: Remove SATA support
        scsi: scsi_debug: Abort commands from scsi_debug_device_reset()
      dd9e11d6
    • Linus Torvalds's avatar
      Merge tag 'for-6.4/block-2023-05-06' of git://git.kernel.dk/linux · a3b111b0
      Linus Torvalds authored
      Pull more block updates from Jens Axboe:
      
       - MD pull request via Song:
            - Improve raid5 sequential IO performance on spinning disks, which
              fixes a regression since v6.0 (Jan Kara)
            - Fix bitmap offset types, which fixes an issue introduced in this
              merge window (Jonathan Derrick)
      
       - Cleanup of hweight type used for cgroup writeback (Maxim)
      
       - Fix a regression with the "has_submit_bio" changes across partitions
         (Ming)
      
       - Cleanup of QUEUE_FLAG_ADD_RANDOM clearing.
      
         We used to set this flag on queues non blk-mq queues, and hence some
         drivers clear it unconditionally. Since all of these have since been
         converted to true blk-mq drivers, drop the useless clear as the bit
         is not set (Chaitanya)
      
       - Fix the flags being set in a bio for a flush for drbd (Christoph)
      
       - Cleanup and deduplication of the code handling setting block device
         capacity (Damien)
      
       - Fix for ublk handling IO timeouts (Ming)
      
       - Fix for a regression in blk-cgroup teardown (Tao)
      
       - NBD documentation and code fixes (Eric)
      
       - Convert blk-integrity to using device_attributes rather than a second
         kobject to manage lifetimes (Thomas)
      
      * tag 'for-6.4/block-2023-05-06' of git://git.kernel.dk/linux:
        ublk: add timeout handler
        drbd: correctly submit flush bio on barrier
        mailmap: add mailmap entries for Jens Axboe
        block: Skip destroyed blkg when restart in blkg_destroy_all()
        writeback: fix call of incorrect macro
        md: Fix bitmap offset type in sb writer
        md/raid5: Improve performance for sequential IO
        docs nbd: userspace NBD now favors github over sourceforge
        block nbd: use req.cookie instead of req.handle
        uapi nbd: add cookie alias to handle
        uapi nbd: improve doc links to userspace spec
        blk-integrity: register sysfs attributes on struct device
        blk-integrity: convert to struct device_attribute
        blk-integrity: use sysfs_emit
        block/drivers: remove dead clear of random flag
        block: sync part's ->bd_has_submit_bio with disk's
        block: Cleanup set_capacity()/bdev_set_nr_sectors()
      a3b111b0
    • Linus Torvalds's avatar
      Merge tag 'pipe-nonblock-2023-05-06' of git://git.kernel.dk/linux · 7644c823
      Linus Torvalds authored
      Pull nonblocking pipe io_uring support from Jens Axboe:
       "Here's the revised edition of the FMODE_NOWAIT support for pipes, in
        which we just flag it as such supporting FMODE_NOWAIT unconditionally,
        but clear it if we ever end up using splice/vmsplice on the pipe.
      
        The pipe read/write side is perfectly fine for nonblocking IO, however
        splice and vmsplice can potentially wait for IO with the pipe lock
        held"
      
      * tag 'pipe-nonblock-2023-05-06' of git://git.kernel.dk/linux:
        pipe: set FMODE_NOWAIT on pipes
        splice: clear FMODE_NOWAIT on file if splice/vmsplice is used
      7644c823
    • Linus Torvalds's avatar
      Merge tag 'sound-fix-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 0021b532
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "A collection of small fixes for rc1.
      
        The only (LOC-wise) dominant change was ASoC Qualcomm fix, but most of
        it was merely a code shuffling.
      
        Another significant change here is for ALSA PCM core; it received a
        revert and a series of fixes for PCM auto-silencing where it caused a
        regression in the previous PR for rc1.
      
        Others are all small: ASoC Intel fixes, various quirks for ASoC AMD,
        HD-audio and USB-audio, the continued legacy emu10k1 code cleanup, and
        some documentation updates"
      
      * tag 'sound-fix-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (23 commits)
        ALSA: pcm: use exit controlled loop in snd_pcm_playback_silence()
        ALSA: pcm: simplify top-up mode init in snd_pcm_playback_silence()
        ALSA: pcm: playback silence - move silence variable updates to separate function
        ALSA: pcm: playback silence - remove extra code
        ALSA: pcm: fix playback silence - correct incremental silencing
        ALSA: pcm: fix playback silence - use the actual new_hw_ptr for the threshold mode
        ALSA: pcm: Revert "ALSA: pcm: rewrite snd_pcm_playback_silence()"
        ALSA: hda/realtek: Fix mute and micmute LEDs for an HP laptop
        ALSA: caiaq: input: Add error handling for unsupported input methods in `snd_usb_caiaq_input_init`
        ALSA: usb-audio: Add quirk for Pioneer DDJ-800
        ALSA: hda/realtek: support HP Pavilion Aero 13-be0xxx Mute LED
        ASoC: Intel: soc-acpi-cht: Add quirk for Nextbook Ares 8A tablet
        ASoC: amd: yc: Add Asus VivoBook Pro 14 OLED M6400RC to the quirks list for acp6x
        ASoC: codecs: wcd938x: fix accessing regmap on unattached devices
        ALSA: docs: Fix code block indentation in ALSA driver example
        ALSA: docs: Extend module parameters description
        ALSA: hda/realtek: Add quirk for ASUS UM3402YAR using CS35L41
        ALSA: emu10k1: use more existing defines instead of open-coded numbers
        ASoC: amd: yc: Add ASUS M3402RA into DMI table
        ALSA: hda/realtek: Add quirk for ThinkPad P1 Gen 6
        ...
      0021b532
    • Linus Torvalds's avatar
      Merge tag 'regulator-fix-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 27e0c846
      Linus Torvalds authored
      Pull regulator fix from Mark Brown:
       "A trivial typo fix that came in during the merge window"
      
      * tag 'regulator-fix-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: consumer.rst: fix 'regulator_enable' typo.
      27e0c846
    • Linus Torvalds's avatar
      Merge tag '6.4-rc-ksmbd-server-fixes-part2' of git://git.samba.org/ksmbd · 2e1e1337
      Linus Torvalds authored
      Pull ksmbd server fixes from Steve French:
       "Ten ksmbd server fixes, including some important security fixes:
      
         - Two use after free fixes
      
         - Fix RCU callback race
      
         - Deadlock fix
      
         - Three patches to prevent session setup attacks
      
         - Prevent guest users from establishing multichannel sessions
      
         - Fix null pointer dereference in query FS info
      
         - Memleak fix"
      
      * tag '6.4-rc-ksmbd-server-fixes-part2' of git://git.samba.org/ksmbd:
        ksmbd: call rcu_barrier() in ksmbd_server_exit()
        ksmbd: fix racy issue under cocurrent smb2 tree disconnect
        ksmbd: fix racy issue from smb2 close and logoff with multichannel
        ksmbd: not allow guest user on multichannel
        ksmbd: fix deadlock in ksmbd_find_crypto_ctx()
        ksmbd: block asynchronous requests when making a delay on session setup
        ksmbd: destroy expired sessions
        ksmbd: fix racy issue from session setup and logoff
        ksmbd: fix NULL pointer dereference in smb2_get_info_filesystem()
        ksmbd: fix memleak in session setup
      2e1e1337
    • Linus Torvalds's avatar
      Merge tag 'net-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · ed23734c
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from netfilter.
      
        Current release - regressions:
      
         - sched: act_pedit: free pedit keys on bail from offset check
      
        Current release - new code bugs:
      
         - pds_core:
            - Kconfig fixes (DEBUGFS and AUXILIARY_BUS)
            - fix mutex double unlock in error path
      
        Previous releases - regressions:
      
         - sched: cls_api: remove block_cb from driver_list before freeing
      
         - nf_tables: fix ct untracked match breakage
      
         - eth: mtk_eth_soc: drop generic vlan rx offload
      
         - sched: flower: fix error handler on replace
      
        Previous releases - always broken:
      
         - tcp: fix skb_copy_ubufs() vs BIG TCP
      
         - ipv6: fix skb hash for some RST packets
      
         - af_packet: don't send zero-byte data in packet_sendmsg_spkt()
      
         - rxrpc: timeout handling fixes after moving client call connection
           to the I/O thread
      
         - ixgbe: fix panic during XDP_TX with > 64 CPUs
      
         - igc: RMW the SRRCTL register to prevent losing timestamp config
      
         - dsa: mt7530: fix corrupt frames using TRGMII on 40 MHz XTAL MT7621
      
         - r8152:
            - fix flow control issue of RTL8156A
            - fix the poor throughput for 2.5G devices
            - move setting r8153b_rx_agg_chg_indicate() to fix coalescing
            - enable autosuspend
      
         - ncsi: clear Tx enable mode when handling a Config required AEN
      
         - octeontx2-pf: macsec: fixes for CN10KB ASIC rev
      
        Misc:
      
         - 9p: remove INET dependency"
      
      * tag 'net-6.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (69 commits)
        net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop()
        pds_core: fix mutex double unlock in error path
        net/sched: flower: fix error handler on replace
        Revert "net/sched: flower: Fix wrong handle assignment during filter change"
        net/sched: flower: fix filter idr initialization
        net: fec: correct the counting of XDP sent frames
        bonding: add xdp_features support
        net: enetc: check the index of the SFI rather than the handle
        sfc: Add back mailing list
        virtio_net: suppress cpu stall when free_unused_bufs
        ice: block LAN in case of VF to VF offload
        net: dsa: mt7530: fix network connectivity with multiple CPU ports
        net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621
        9p: Remove INET dependency
        netfilter: nf_tables: fix ct untracked match breakage
        af_packet: Don't send zero-byte data in packet_sendmsg_spkt().
        igc: read before write to SRRCTL register
        pds_core: add AUXILIARY_BUS and NET_DEVLINK to Kconfig
        pds_core: remove CONFIG_DEBUG_FS from makefile
        ionic: catch failure from devlink_alloc
        ...
      ed23734c
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.4-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · a5e21900
      Linus Torvalds authored
      Pull more i2c updates from Wolfram Sang:
       "Some more driver bugfixes and a DT binding conversion"
      
      * tag 'i2c-for-6.4-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        dt-bindings: i2c: brcm,kona-i2c: convert to YAML
        i2c: gxp: fix build failure without CONFIG_I2C_SLAVE
        i2c: imx-lpi2c: avoid taking clk_prepare mutex in PM callbacks
        i2c: omap: Fix standard mode false ACK readings
        i2c: tegra: Fix PEC support for SMBUS block read
      a5e21900
    • Lukas Bulwahn's avatar
      s390: remove the unneeded select GCC12_NO_ARRAY_BOUNDS · c12753d5
      Lukas Bulwahn authored
      Commit 0da6e5fd
      
       ("gcc: disable '-Warray-bounds' for gcc-13 too") makes
      config GCC11_NO_ARRAY_BOUNDS to be for disabling -Warray-bounds in any gcc
      version 11 and upwards, and with that, removes the GCC12_NO_ARRAY_BOUNDS
      config as it is now covered by the semantics of GCC11_NO_ARRAY_BOUNDS.
      
      As GCC11_NO_ARRAY_BOUNDS is yes by default, there is no need for the s390
      architecture to explicitly select GCC11_NO_ARRAY_BOUNDS. Hence, the select
      GCC12_NO_ARRAY_BOUNDS in arch/s390/Kconfig can simply be dropped.
      
      Remove the unneeded "select GCC12_NO_ARRAY_BOUNDS".
      
      Signed-off-by: default avatarLukas Bulwahn <lukas.bulwahn@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c12753d5
    • Ian Rogers's avatar
      perf metrics: Fix SEGV with --for-each-cgroup · 6c73f819
      Ian Rogers authored
      Ensure the metric threshold is copied correctly or else a use of
      uninitialized memory happens.
      
      Fixes: d0a3052f
      
       ("perf metric: Compute and print threshold values")
      Reported-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Tested-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20230505204119.3443491-1-irogers@google.com
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6c73f819
    • Arnaldo Carvalho de Melo's avatar
      perf bpf skels: Stop using vmlinux.h generated from BTF, use subset of used structs + CO-RE · a8874665
      Arnaldo Carvalho de Melo authored
      
      
      Linus reported a build break due to using a vmlinux without a BTF elf
      section to generate the vmlinux.h header with bpftool for use in the BPF
      tools in tools/perf/util/bpf_skel/*.bpf.c.
      
      Instead add a vmlinux.h file with the structs needed with the fields the
      tools need, marking the structs with __attribute__((preserve_access_index)),
      so that libbpf's CO-RE code can fixup the struct field offsets.
      
      In some cases the vmlinux.h file that was being generated by bpftool
      from the kernel BTF information was not needed at all, just including
      linux/bpf.h, sometimes linux/perf_event.h was enough as non-UAPI
      types were not being used.
      
      To keep te patch small, include those UAPI headers from the trimmed down
      vmlinux.h file, that then provides the tools with just the structs and
      the subset of its fields needed for them.
      
      Testing it:
      
        # perf lock contention -b find / > /dev/null
        ^C contended   total wait     max wait     avg wait         type   caller
      
                 7     53.59 us     10.86 us      7.66 us     rwlock:R   start_this_handle+0xa0
                 2     30.35 us     21.99 us     15.17 us	 rwsem:R   iterate_dir+0x52
                 1	  9.04 us      9.04 us      9.04 us     rwlock:W   start_this_handle+0x291
                 1	  8.73 us      8.73 us      8.73 us     spinlock   raw_spin_rq_lock_nested+0x1e
        #
        # perf lock contention -abl find / > /dev/null
        ^C contended   total wait     max wait     avg wait            address   symbol
      
                 1    262.96 ms    262.96 ms    262.96 ms   ffff8e67502d0170    (mutex)
                12    244.24 us     39.91 us     20.35 us   ffff8e6af56f8070   mmap_lock (rwsem)
                 7     30.28 us      6.85 us      4.33 us   ffff8e6c865f1d40   rq_lock (spinlock)
                 3	  7.42 us      4.03 us      2.47 us   ffff8e6c864b1d40   rq_lock (spinlock)
                 2	  3.72 us      2.19 us      1.86 us   ffff8e6c86571d40   rq_lock (spinlock)
                 1	  2.42 us      2.42 us      2.42 us   ffff8e6c86471d40   rq_lock (spinlock)
                 4	  2.11 us	559 ns       527 ns   ffffffff9a146c80   rcu_state (spinlock)
                 3	  1.45 us	818 ns       482 ns   ffff8e674ae8384c    (rwlock)
                 1	   870 ns	870 ns       870 ns   ffff8e68456ee060    (rwlock)
                 1	   663 ns	663 ns       663 ns   ffff8e6c864f1d40   rq_lock (spinlock)
                 1	   573 ns	573 ns       573 ns   ffff8e6c86531d40   rq_lock (spinlock)
                 1	   472 ns	472 ns       472 ns   ffff8e6c86431740    (spinlock)
                 1	   397 ns	397 ns       397 ns   ffff8e67413a4f04    (spinlock)
        #
        # perf test offcpu
        95: perf record offcpu profiling tests                              : Ok
        #
        # perf kwork latency --use-bpf
        Starting trace, Hit <Ctrl+C> to stop and report
        ^C
          Kwork Name                     | Cpu  | Avg delay     | Count     | Max delay     | Max delay start     | Max delay end	  |
         --------------------------------------------------------------------------------------------------------------------------------
          (w)flush_memcg_stats_dwork     | 0000 |   1056.212 ms |         2 |   2112.345 ms |     550113.229573 s |     550115.341919 s |
          (w)toggle_allocation_gate	   | 0000 |     10.144 ms |        62 |    416.389 ms |     550113.453518 s |     550113.869907 s |
          (w)0xffff8e6748e28080          | 0002 |	 0.623 ms |         1 |      0.623 ms |     550110.989841 s |     550110.990464 s |
          (w)vmstat_shepherd             | 0000 |	 0.586 ms |        10 |      2.828 ms |     550111.971536 s |     550111.974364 s |
          (w)vmstat_update               | 0007 |	 0.363 ms |         5 |      1.634 ms |     550113.222520 s |     550113.224154 s |
          (w)vmstat_update               | 0000 |	 0.324 ms |        10 |      2.827 ms |     550111.971526 s |     550111.974354 s |
          (w)0xffff8e674c5f4a58          | 0002 |	 0.102 ms |         5 |      0.134 ms |     550110.989839 s |     550110.989972 s |
          (w)psi_avgs_work               | 0001 |	 0.086 ms |         3 |      0.107 ms |     550114.957852 s |     550114.957959 s |
          (w)psi_avgs_work               | 0000 |	 0.079 ms |         5 |      0.100 ms |     550118.605668 s |     550118.605768 s |
          (w)kfree_rcu_monitor           | 0006 |	 0.079 ms |         1 |      0.079 ms |     550110.925821 s |     550110.925900 s |
          (w)psi_avgs_work               | 0004 |	 0.079 ms |         1 |      0.079 ms |     550109.581835 s |     550109.581914 s |
          (w)psi_avgs_work               | 0001 |	 0.078 ms |         1 |      0.078 ms |     550109.197809 s |     550109.197887 s |
          (w)psi_avgs_work               | 0002 |	 0.077 ms |         5 |      0.086 ms |     550110.669819 s |     550110.669905 s |
        <SNIP>
        # strace -e bpf -o perf-stat-bpf-counters.output perf stat -e cycles --bpf-counters sleep 1
      
         Performance counter stats for 'sleep 1':
      
                 6,197,983	  cycles
      
               1.003922848 seconds time elapsed
      
               0.000000000 seconds user
               0.002032000 seconds sys
      
        # head -7 perf-stat-bpf-counters.output
        bpf(BPF_OBJ_GET, {pathname="/sys/fs/bpf/perf_attr_map", bpf_fd=0, file_flags=0}, 16) = 3
        bpf(BPF_OBJ_GET_INFO_BY_FD, {info={bpf_fd=3, info_len=88, info=0x7ffcead64990}}, 16) = 0
        bpf(BPF_MAP_LOOKUP_ELEM, {map_fd=3, key=0x24129e0, value=0x7ffcead65a48, flags=BPF_ANY}, 32) = 0
        bpf(BPF_LINK_GET_FD_BY_ID, {link_id=1252}, 12) = -1 ENOENT (No such file or directory)
        bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_SOCKET_FILTER, insn_cnt=2, insns=0x7ffcead65780, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS, prog_btf_fd=0, func_info_rec_size=0,
      +func_info=NULL, func_info_cnt=0, line_info_rec_size=0, line_info=NULL, line_info_cnt=0, attach_btf_id=0, attach_prog_fd=0}, 116) = 4
        bpf(BPF_PROG_LOAD, {prog_type=BPF_PROG_TYPE_SOCKET_FILTER, insn_cnt=2, insns=0x7ffcead65920, license="GPL", log_level=0, log_size=0, log_buf=NULL, kern_version=KERNEL_VERSION(0, 0, 0), prog_flags=0, prog_name="", prog_ifindex=0, expected_attach_type=BPF_CGROUP_INET_INGRESS, prog_btf_fd=0, func_info_rec_size=0,
      +func_info=NULL, func_info_cnt=0, line_info_rec_size=0, line_info=NULL, line_info_cnt=0, attach_btf_id=0, attach_prog_fd=0, fd_array=NULL}, 128) = 4
        bpf(BPF_BTF_LOAD, {btf="\237\353\1\0\30\0\0\0\0\0\0\0\20\0\0\0\20\0\0\0\5\0\0\0\1\0\0\0\0\0\0\1"..., btf_log_buf=NULL, btf_size=45, btf_log_size=0, btf_log_level=0}, 28) = 4
        #
      
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Suggested-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      Tested-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Tested-by: default avatarSong Liu <song@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Co-developed-by: default avatarJiri Olsa <jolsa@kernel.org>
      Link: https://lore.kernel.org/lkml/ZFU1PJrn8YtHIqno@kernel.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a8874665
    • Jakub Kicinski's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next · 644bca1d
      Jakub Kicinski authored
      
      
      There's a fix which landed in net-next, pull it in along
      with the couple of minor cleanups.
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      644bca1d