1. 15 Sep, 2021 12 commits
    • Paul E. McKenney's avatar
      rcu-tasks: Update comments to cond_resched_tasks_rcu_qs() · 8af9e2c7
      Paul E. McKenney authored
      The cond_resched_rcu_qs() function no longer exists, despite being mentioned
      several times in kernel/rcu/tasks.h.  This commit therefore updates it to
      the current cond_resched_tasks_rcu_qs().
      Reported-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      8af9e2c7
    • Neeraj Upadhyay's avatar
      rcu-tasks: Fix IPI failure handling in trc_wait_for_one_reader · 46aa886c
      Neeraj Upadhyay authored
      The trc_wait_for_one_reader() function is called at multiple stages
      of trace rcu-tasks GP function, rcu_tasks_wait_gp():
      
      - First, it is called as part of per task function -
        rcu_tasks_trace_pertask(), for all non-idle tasks. As part of per task
        processing, this function add the task in the holdout list and if the
        task is currently running on a CPU, it sends IPI to the task's CPU.
        The IPI handler takes action depending on whether task is in trace
        rcu-tasks read side critical section or not:
      
        - a. If the task is in trace rcu-tasks read side critical section
             (t->trc_reader_nesting != 0), the IPI handler sets the task's
             ->trc_reader_special.b.need_qs, so that this task notifies exit
             from its outermost read side critical section (by decrementing
             trc_n_readers_need_end) to the GP handling function.
             trc_wait_for_one_reader() also increments trc_n_readers_need_end,
             so that the trace rcu-tasks GP handler function waits for this
             task's read side exit notification. The IPI handler also sets
             t->trc_reader_checked to true, and no further IPIs are sent for
             this task, for this trace rcu-tasks grace period and this
             task can be removed from holdout list.
      
        - b. If the task is in the process of exiting its trace rcu-tasks
             read side critical section, (t->trc_reader_nesting < 0), defer
             this task's processing to future calls to trc_wait_for_one_reader().
      
        - c. If task is not in rcu-task read side critical section,
             t->trc_reader_nesting == 0, ->trc_reader_checked is set for this
             task, so that this task is removed from holdout list.
      
      - Second, trc_wait_for_one_reader() is called as part of post scan, in
        function rcu_tasks_trace_postscan(), for all idle tasks.
      
      - Third, in function check_all_holdout_tasks_trace(), this function is
        called for each task in the holdout list, but only if there isn't
        a pending IPI for the task (->trc_ipi_to_cpu == -1). This function
        removed the task from holdout list, if IPI handler has completed the
        required work, to ensure that the current trace rcu-tasks grace period
        either waits for this task, or this task is not in a trace rcu-tasks
        read side critical section.
      
      Now, considering the scenario where smp_call_function_single() fails in
      first case, inside rcu_tasks_trace_pertask(). In this case,
      ->trc_ipi_to_cpu is set to the current CPU for that task. This will
      result in trc_wait_for_one_reader() getting skipped in third case,
      inside check_all_holdout_tasks_trace(), for this task. This further
      results in ->trc_reader_checked never getting set for this task,
      and the task not getting removed from holdout list. This can cause
      the current trace rcu-tasks grace period to stall.
      
      Fix the above problem, by resetting ->trc_ipi_to_cpu to -1, on
      smp_call_function_single() failure, so that future IPI calls can
      be send for this task.
      
      Note that all three of the trc_wait_for_one_reader() function's
      callers (rcu_tasks_trace_pertask(), rcu_tasks_trace_postscan(),
      check_all_holdout_tasks_trace()) hold cpu_read_lock().  This means
      that smp_call_function_single() cannot race with CPU hotplug, and thus
      should never fail.  Therefore, also add a warning in order to report
      any such failure in case smp_call_function_single() grows some other
      reason for failure.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      46aa886c
    • Neeraj Upadhyay's avatar
      rcu-tasks: Fix read-side primitives comment for call_rcu_tasks_trace · ed42c380
      Neeraj Upadhyay authored
      call_rcu_tasks_trace() does have read-side primitives - rcu_read_lock_trace()
      and rcu_read_unlock_trace(). Fix this information in the comments.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      ed42c380
    • Neeraj Upadhyay's avatar
      rcu-tasks: Clarify read side section info for rcu_tasks_rude GP primitives · a6517e9c
      Neeraj Upadhyay authored
      RCU tasks rude variant does not check whether the current
      running context on a CPU is usermode. Read side critical section ends
      on transition to usermode execution, by the virtue of usermode
      execution being schedulable. Clarify this in comments for
      call_rcu_tasks_rude() and synchronize_rcu_tasks_rude().
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      a6517e9c
    • Neeraj Upadhyay's avatar
      rcu-tasks: Correct comparisons for CPU numbers in show_stalled_task_trace · d39ec8f3
      Neeraj Upadhyay authored
      Valid CPU numbers can be zero or greater, but the checks for
      ->trc_ipi_to_cpu and tick_nohz_full_cpu()'s argument are for strictly
      greater than.  This commit therefore corrects the check for no_hz_full
      cpu in show_stalled_task_trace() so as to include cpu 0.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      d39ec8f3
    • Neeraj Upadhyay's avatar
      rcu-tasks: Correct firstreport usage in check_all_holdout_tasks_trace · 89401176
      Neeraj Upadhyay authored
      In check_all_holdout_tasks_trace(), firstreport is a pointer argument;
      so, check the dereferenced value, instead of checking the pointer.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      89401176
    • Neeraj Upadhyay's avatar
    • Paul E. McKenney's avatar
      rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop · 0db7c32a
      Paul E. McKenney authored
      Early in debugging, it made some sense to differentiate the first
      iteration from subsequent iterations, but now this just causes confusion.
      This commit therefore moves the "set_tasks_gp_state(rtp, RTGS_WAIT_CBS)"
      statement to the beginning of the "for" loop in rcu_tasks_kthread().
      Reported-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      0db7c32a
    • Paul E. McKenney's avatar
    • Paul E. McKenney's avatar
      rcu-tasks: Remove second argument of rcu_read_unlock_trace_special() · a5c071cc
      Paul E. McKenney authored
      The second argument of rcu_read_unlock_trace_special() is always zero.
      When called from exit_tasks_rcu_finish_trace(), it is the constant
      zero, and rcu_read_unlock_trace_special() doesn't get called from
      rcu_read_unlock_trace() unless the value of local variable "nesting"
      is zero because in that case the early return is taken instead.
      
      This commit therefore removes the "nesting" argument from the
      rcu_read_unlock_trace_special() function, substituting the constant
      zero within that function.  This commit also adds a WARN_ON_ONCE()
      to rcu_read_lock_trace_held() in case non-zeroness some day appears.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      a5c071cc
    • Paul E. McKenney's avatar
      rcu-tasks: Add trc_inspect_reader() checks for exiting critical section · 18f08e75
      Paul E. McKenney authored
      Currently, trc_inspect_reader() treats a task exiting its RCU Tasks
      Trace read-side critical section the same as being within that critical
      section.  However, this can fail because that task might have already
      checked its .need_qs field, which means that it might never decrement
      the all-important trc_n_readers_need_end counter.  Of course, for that
      to happen, the task would need to never again execute an RCU Tasks Trace
      read-side critical section, but this really could happen if the system's
      last trampoline was removed.  Note that exit from such a critical section
      cannot be treated as a quiescent state due to the possibility of nested
      critical sections.  This means that if trc_inspect_reader() sees a
      negative nesting value, it must set up to try again later.
      
      This commit therefore ignores tasks that are exiting their RCU Tasks
      Trace read-side critical sections so that they will be rechecked later.
      
      [ paulmck: Apply feedback from Neeraj Upadhyay and Boqun Feng. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      18f08e75
    • Paul E. McKenney's avatar
      rcu-tasks: Simplify trc_read_check_handler() atomic operations · 96017bf9
      Paul E. McKenney authored
      Currently, trc_wait_for_one_reader() atomically increments
      the trc_n_readers_need_end counter before sending the IPI
      invoking trc_read_check_handler().  All failure paths out of
      trc_read_check_handler() and also from the smp_call_function_single()
      within trc_wait_for_one_reader() must carefully atomically decrement
      this counter.  This is more complex than it needs to be.
      
      This commit therefore simplifies things and saves a few lines of
      code by dispensing with the atomic decrements in favor of having
      trc_read_check_handler() do the atomic increment only in the success case.
      In theory, this represents no change in functionality.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      96017bf9
  2. 13 Sep, 2021 1 commit
    • Paul E. McKenney's avatar
      rcu-tasks: Wait for trc_read_check_handler() IPIs · cbe0d8d9
      Paul E. McKenney authored
      Currently, RCU Tasks Trace initializes the trc_n_readers_need_end counter
      to the value one, increments it before each trc_read_check_handler()
      IPI, then decrements it within trc_read_check_handler() if the target
      task was in a quiescent state (or if the target task moved to some other
      CPU while the IPI was in flight), complaining if the new value was zero.
      The rationale for complaining is that the initial value of one must be
      decremented away before zero can be reached, and this decrement has not
      yet happened.
      
      Except that trc_read_check_handler() is initiated with an asynchronous
      smp_call_function_single(), which might be significantly delayed.  This
      can result in false-positive complaints about the counter reaching zero.
      
      This commit therefore waits for in-flight IPI handlers to complete before
      decrementing away the initial value of one from the trc_n_readers_need_end
      counter.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      cbe0d8d9
  3. 12 Sep, 2021 12 commits
    • Linus Torvalds's avatar
      Linux 5.15-rc1 · 6880fa6c
      Linus Torvalds authored
      6880fa6c
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-for-v5.15-2021-09-11' of... · b5b65f13
      Linus Torvalds authored
      Merge tag 'perf-tools-for-v5.15-2021-09-11' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull more perf tools updates from Arnaldo Carvalho de Melo:
      
       - Add missing fields and remove some duplicate fields when printing a
         perf_event_attr.
      
       - Fix hybrid config terms list corruption.
      
       - Update kernel header copies, some resulted in new kernel features
         being automagically added to 'perf trace' syscall/tracepoint argument
         id->string translators.
      
       - Add a file generated during the documentation build to .gitignore.
      
       - Add an option to build without libbfd, as some distros, like Debian
         consider its ABI unstable.
      
       - Add support to print a textual representation of IBS raw sample data
         in 'perf report'.
      
       - Fix bpf 'perf test' sample mismatch reporting
      
       - Fix passing arguments to stackcollapse report in a 'perf script'
         python script.
      
       - Allow build-id with trailing zeros.
      
       - Look for ImageBase in PE file to compute .text offset.
      
      * tag 'perf-tools-for-v5.15-2021-09-11' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (25 commits)
        tools headers UAPI: Update tools's copy of drm.h headers
        tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
        tools headers UAPI: Sync linux/fs.h with the kernel sources
        tools headers UAPI: Sync linux/in.h copy with the kernel sources
        perf tools: Add an option to build without libbfd
        perf tools: Allow build-id with trailing zeros
        perf tools: Fix hybrid config terms list corruption
        perf tools: Factor out copy_config_terms() and free_config_terms()
        perf tools: Fix perf_event_attr__fprintf() missing/dupl. fields
        perf tools: Ignore Documentation dependency file
        perf bpf: Provide a weak btf__load_from_kernel_by_id() for older libbpf versions
        tools include UAPI: Update linux/mount.h copy
        perf beauty: Cover more flags in the  move_mount syscall argument beautifier
        tools headers UAPI: Sync linux/prctl.h with the kernel sources
        tools include UAPI: Sync sound/asound.h copy with the kernel sources
        tools headers UAPI: Sync linux/kvm.h with the kernel sources
        tools headers UAPI: Sync x86's asm/kvm.h with the kernel sources
        perf report: Add support to print a textual representation of IBS raw sample data
        perf report: Add tools/arch/x86/include/asm/amd-ibs.h
        perf env: Add perf_env__cpuid, perf_env__{nr_}pmu_mappings
        ...
      b5b65f13
    • Linus Torvalds's avatar
      Merge tag 'compiler-attributes-for-linus-v5.15-rc1-v2' of git://github.com/ojeda/linux · c3e46874
      Linus Torvalds authored
      Pull compiler attributes updates from Miguel Ojeda:
      
       - Fix __has_attribute(__no_sanitize_coverage__) for GCC 4 (Marco Elver)
      
       - Add Nick as Reviewer for compiler_attributes.h (Nick Desaulniers)
      
       - Move __compiletime_{error|warning} (Nick Desaulniers)
      
      * tag 'compiler-attributes-for-linus-v5.15-rc1-v2' of git://github.com/ojeda/linux:
        compiler_attributes.h: move __compiletime_{error|warning}
        MAINTAINERS: add Nick as Reviewer for compiler_attributes.h
        Compiler Attributes: fix __has_attribute(__no_sanitize_coverage__) for GCC 4
      c3e46874
    • Linus Torvalds's avatar
      Merge tag 'auxdisplay-for-linus-v5.15-rc1' of git://github.com/ojeda/linux · d41adc4e
      Linus Torvalds authored
      Pull auxdisplay updates from Miguel Ojeda:
       "An assortment of improvements for auxdisplay:
      
         - Replace symbolic permissions with octal permissions (Jinchao Wang)
      
         - ks0108: Switch to use module_parport_driver() (Andy Shevchenko)
      
         - charlcd: Drop unneeded initializers and switch to C99 style (Andy
           Shevchenko)
      
         - hd44780: Fix oops on module unloading (Lars Poeschel)
      
         - Add I2C gpio expander example (Ralf Schlatterbeck)"
      
      * tag 'auxdisplay-for-linus-v5.15-rc1' of git://github.com/ojeda/linux:
        auxdisplay: Replace symbolic permissions with octal permissions
        auxdisplay: ks0108: Switch to use module_parport_driver()
        auxdisplay: charlcd: Drop unneeded initializers and switch to C99 style
        auxdisplay: hd44780: Fix oops on module unloading
        auxdisplay: Add I2C gpio expander example
      d41adc4e
    • Linus Torvalds's avatar
      Merge tag 'smp-urgent-2021-09-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f306b90c
      Linus Torvalds authored
      Pull CPU hotplug updates from Thomas Gleixner:
       "Updates for the SMP and CPU hotplug:
      
         - Remove DEFINE_SMP_CALL_CACHE_FUNCTION() which is a left over of the
           original hotplug code and now causing trouble with the ARM64 cache
           topology setup due to the pointless SMP function call.
      
           It's not longer required as the hotplug callbacks are guaranteed to
           be invoked on the upcoming CPU.
      
         - Remove the deprecated and now unused CPU hotplug functions
      
         - Rewrite the CPU hotplug API documentation"
      
      * tag 'smp-urgent-2021-09-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Documentation: core-api/cpuhotplug: Rewrite the API section
        cpu/hotplug: Remove deprecated CPU-hotplug functions.
        thermal: Replace deprecated CPU-hotplug functions.
        drivers: base: cacheinfo: Get rid of DEFINE_SMP_CALL_CACHE_FUNCTION()
      f306b90c
    • Linus Torvalds's avatar
      Merge tag 'char-misc-5.15-rc1-lkdtm' of... · d8e988b6
      Linus Torvalds authored
      Merge tag 'char-misc-5.15-rc1-lkdtm' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
      
      Pull misc driver fix from Greg KH:
       "Here is a single patch for 5.15-rc1, for the lkdtm misc driver.
      
        It resolves a build issue that many people were hitting with your
        current tree, and Kees and others felt would be good to get merged
        before -rc1 comes out, to prevent them from having to constantly hit
        it as many development trees restart on -rc1, not older -rc releases.
      
        It has NOT been in linux-next, but has passed 0-day testing and looks
        'obviously correct' when reviewing it locally :)"
      
      * tag 'char-misc-5.15-rc1-lkdtm' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        lkdtm: Use init_uts_ns.name instead of macros
      d8e988b6
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.15-1' of git://github.com/cminyard/linux-ipmi · 1791596b
      Linus Torvalds authored
      Pull IPMI updates from Corey Minyard:
       "A couple of very minor fixes for style and rate limiting.
      
        Nothing big, but probably needs to go in"
      
      * tag 'for-linus-5.15-1' of git://github.com/cminyard/linux-ipmi:
        char: ipmi: use DEVICE_ATTR helper macro
        ipmi: rate limit ipmi smi_event failure message
      1791596b
    • Linus Torvalds's avatar
      Merge tag 'sched_urgent_for_v5.15_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 56c24438
      Linus Torvalds authored
      Pull scheduler fixes from Borislav Petkov:
      
       - Make sure the idle timer expires in hardirq context, on PREEMPT_RT
      
       - Make sure the run-queue balance callback is invoked only on the
         outgoing CPU
      
      * tag 'sched_urgent_for_v5.15_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched: Prevent balance_push() on remote runqueues
        sched/idle: Make the idle timer expire in hard interrupt context
      56c24438
    • Linus Torvalds's avatar
      Merge tag 'locking_urgent_for_v5.15_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 165d05d8
      Linus Torvalds authored
      Pull locking fixes from Borislav Petkov:
      
       - Fix the futex PI requeue machinery to not return to userspace in
         inconsistent state
      
       - Avoid a potential null pointer dereference in the ww_mutex deadlock
         check
      
       - Other smaller cleanups and optimizations
      
      * tag 'locking_urgent_for_v5.15_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        locking/rtmutex: Fix ww_mutex deadlock check
        futex: Remove unused variable 'vpid' in futex_proxy_trylock_atomic()
        futex: Avoid redundant task lookup
        futex: Clarify comment for requeue_pi_wake_futex()
        futex: Prevent inconsistent state and exit race
        futex: Return error code instead of assigning it without effect
        locking/rwsem: Add missing __init_rwsem() for PREEMPT_RT
      165d05d8
    • Linus Torvalds's avatar
      Merge tag 'timers_urgent_for_v5.15_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7bf31426
      Linus Torvalds authored
      Pull timer fix from Borislav Petkov:
      
       - Handle negative second values properly when converting a timespec64
         to nanoseconds.
      
      * tag 'timers_urgent_for_v5.15_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        time: Handle negative seconds correctly in timespec64_to_ns()
      7bf31426
    • Linus Torvalds's avatar
      Merge branch 'misc.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · fdfc3463
      Linus Torvalds authored
      Pull namei updates from Al Viro:
       "Clearing fallout from mkdirat in io_uring series. The fix in the
        kern_path_locked() patch plus associated cleanups"
      
      * 'misc.namei' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        putname(): IS_ERR_OR_NULL() is wrong here
        namei: Standardize callers of filename_create()
        namei: Standardize callers of filename_lookup()
        rename __filename_parentat() to filename_parentat()
        namei: Fix use after free in kern_path_locked
      fdfc3463
    • Linus Torvalds's avatar
      Merge tag '5.15-rc-cifs-part2' of git://git.samba.org/sfrench/cifs-2.6 · 8d4a0b5d
      Linus Torvalds authored
      Pull smbfs updates from Steve French:
       "cifs/smb3 updates:
      
         - DFS reconnect fix
      
         - begin creating common headers for server and client
      
         - rename the cifs_common directory to smbfs_common to be more
           consistent ie change use of the name cifs to smb (smb3 or smbfs is
           more accurate, as the very old cifs dialect has long been
           superseded by smb3 dialects).
      
        In the future we can rename the fs/cifs directory to fs/smbfs.
      
        This does not include the set of multichannel fixes nor the two
        deferred close fixes (they are still being reviewed and tested)"
      
      * tag '5.15-rc-cifs-part2' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: properly invalidate cached root handle when closing it
        cifs: move SMB FSCTL definitions to common code
        cifs: rename cifs_common to smbfs_common
        cifs: update FSCTL definitions
      8d4a0b5d
  4. 11 Sep, 2021 15 commits
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · 78e70952
      Linus Torvalds authored
      Pull virtio updates from Michael Tsirkin:
      
       - vduse driver ("vDPA Device in Userspace") supporting emulated virtio
         block devices
      
       - virtio-vsock support for end of record with SEQPACKET
      
       - vdpa: mac and mq support for ifcvf and mlx5
      
       - vdpa: management netlink for ifcvf
      
       - virtio-i2c, gpio dt bindings
      
       - misc fixes and cleanups
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (39 commits)
        Documentation: Add documentation for VDUSE
        vduse: Introduce VDUSE - vDPA Device in Userspace
        vduse: Implement an MMU-based software IOTLB
        vdpa: Support transferring virtual addressing during DMA mapping
        vdpa: factor out vhost_vdpa_pa_map() and vhost_vdpa_pa_unmap()
        vdpa: Add an opaque pointer for vdpa_config_ops.dma_map()
        vhost-iotlb: Add an opaque pointer for vhost IOTLB
        vhost-vdpa: Handle the failure of vdpa_reset()
        vdpa: Add reset callback in vdpa_config_ops
        vdpa: Fix some coding style issues
        file: Export receive_fd() to modules
        eventfd: Export eventfd_wake_count to modules
        iova: Export alloc_iova_fast() and free_iova_fast()
        virtio-blk: remove unneeded "likely" statements
        virtio-balloon: Use virtio_find_vqs() helper
        vdpa: Make use of PFN_PHYS/PFN_UP/PFN_DOWN helper macro
        vsock_test: update message bounds test for MSG_EOR
        af_vsock: rename variables in receive loop
        virtio/vsock: support MSG_EOR bit processing
        vhost/vsock: support MSG_EOR bit processing
        ...
      78e70952
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-5.15-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · b79bd0d5
      Linus Torvalds authored
      Pull more RISC-V updates from Palmer Dabbelt:
      
       - A pair of defconfig additions, for NVMe and the EFI filesystem
         localization options.
      
       - A larger address space for stack randomization.
      
       - A cleanup to our install rules.
      
       - A DTS update for the Microchip Icicle board, to fix the serial
         console.
      
       - Support for build-time table sorting, which allows us to have
         __ex_table read-only.
      
      * tag 'riscv-for-linus-5.15-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        riscv: Move EXCEPTION_TABLE to RO_DATA segment
        riscv: Enable BUILDTIME_TABLE_SORT
        riscv: dts: microchip: mpfs-icicle: Fix serial console
        riscv: move the (z)install rules to arch/riscv/Makefile
        riscv: Improve stack randomisation on RV64
        riscv: defconfig: enable NLS_CODEPAGE_437, NLS_ISO8859_1
        riscv: defconfig: enable BLK_DEV_NVME
      b79bd0d5
    • Linus Torvalds's avatar
      Merge branch 'for-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/jlawall/linux · 4e1c7544
      Linus Torvalds authored
      Pull coccinelle updates from Julia Lawall:
       "These changes update some existing semantic patches with
        respect to some recent changes in the kernel.
      
        Specifically, the change to kvmalloc.cocci searches for
        kfree_sensitive rather than kzfree, and the change to
        use_after_iter.cocci adds list_entry_is_head as a valid
        use of a list iterator index variable after the end of
        the loop"
      
      * 'for-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/jlawall/linux:
        scripts: coccinelle: allow list_entry_is_head() to use pos
        coccinelle: api: rename kzfree to kfree_sensitive
      4e1c7544
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Update tools's copy of drm.h headers · 17a99e52
      Arnaldo Carvalho de Melo authored
      Picking the changes from:
      
        17ce9c61 ("drm: document DRM_IOCTL_MODE_RMFB")
      
      Doesn't result in any tooling changes:
      
        $ tools/perf/trace/beauty/drm_ioctl.sh  > before
        $ cp include/uapi/drm/drm.h tools/include/uapi/drm/drm.h
        $ tools/perf/trace/beauty/drm_ioctl.sh  > after
        $ diff -u before after
      
      Silencing these perf build warnings:
      
        Warning: Kernel ABI header at 'tools/include/uapi/drm/drm.h' differs from latest version at 'include/uapi/drm/drm.h'
        diff -u tools/include/uapi/drm/drm.h include/uapi/drm/drm.h
      
      Cc: Simon Ser <contact@emersion.fr>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      17a99e52
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync drm/i915_drm.h with the kernel sources · 4dc24d7c
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        b65a9489 ("drm/i915/userptr: Probe existence of backing struct pages upon creation")
        ee242ca7 ("drm/i915/guc: Implement GuC priority management")
        81340cf3 ("drm/i915/uapi: reject set_domain for discrete")
        7961c5b6 ("drm/i915: Add TTM offset argument to mmap.")
        aef7b67a ("drm/i915/uapi: convert drm_i915_gem_userptr to kernel doc")
        e7737b67 ("drm/i915/uapi: reject caching ioctls for discrete")
        3aa8c57f ("drm/i915/uapi: convert drm_i915_gem_set_domain to kernel doc")
        289f5a72 ("drm/i915/uapi: convert drm_i915_gem_caching to kernel doc")
        4a766ae4 ("drm/i915: Drop the CONTEXT_CLONE API (v2)")
        6ff6d61d ("drm/i915: Drop I915_CONTEXT_PARAM_NO_ZEROMAP")
        fe4751c3 ("drm/i915: Drop I915_CONTEXT_PARAM_RINGSIZE")
        57772953 ("drm/i915: Document the Virtual Engine uAPI")
        c649432e ("drm/i915: Fix busy ioctl commentary")
      
      That doesn't result in any changes to tooling as no new ioctl were
      added (at least not perceived by tools/perf/trace/beauty/drm_ioctl.sh).
      
      Addressing this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/drm/i915_drm.h' differs from latest version at 'include/uapi/drm/i915_drm.h'
        diff -u tools/include/uapi/drm/i915_drm.h include/uapi/drm/i915_drm.h
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Jason Ekstrand <jason@jlekstrand.net>
      Cc: John Harrison <John.C.Harrison@Intel.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: Matthew Brost <matthew.brost@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4dc24d7c
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync linux/fs.h with the kernel sources · 2bae3e64
      Arnaldo Carvalho de Melo authored
      To pick the change in:
      
        7957d93b ("block: add ioctl to read the disk sequence number")
      
      It adds a new ioctl, but we are still not using that to generate tables
      for 'perf trace', so no changes in tooling.
      
      This silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/fs.h' differs from latest version at 'include/uapi/linux/fs.h'
        diff -u tools/include/uapi/linux/fs.h include/uapi/linux/fs.h
      
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Matteo Croce <mcroce@microsoft.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2bae3e64
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync linux/in.h copy with the kernel sources · ee286c60
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        db243b79 ("net/ipv4/ipv6: Replace one-element arraya with flexible-array members")
        2d3e5caf ("net/ipv4: Replace one-element array with flexible-array member")
      
      That don't result in any change in tooling, the structs changed remains
      with the same layout.
      
      This addresses this build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/in.h' differs from latest version at 'include/uapi/linux/in.h'
        diff -u tools/include/uapi/linux/in.h include/uapi/linux/in.h
      
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Gustavo A. R. Silva <gustavoars@kernel.org>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ee286c60
    • Ian Rogers's avatar
      perf tools: Add an option to build without libbfd · 0d1c50ac
      Ian Rogers authored
      Some distributions, like debian, don't link perf with libbfd. Add a
      build flag to make this configuration buildable and testable.
      
      This was inspired by:
      
        https://lore.kernel.org/linux-perf-users/20210910102307.2055484-1-tonyg@leastfixedpoint.com/T/#uSigned-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: tony garnock-jones <tonyg@leastfixedpoint.com>
      Link: http://lore.kernel.org/lkml/20210910225756.729087-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0d1c50ac
    • Namhyung Kim's avatar
      perf tools: Allow build-id with trailing zeros · 4a86d414
      Namhyung Kim authored
      Currently perf saves a build-id with size but old versions assumes the
      size of 20.  In case the build-id is less than 20 (like for MD5), it'd
      fill the rest with 0s.
      
      I saw a problem when old version of perf record saved a binary in the
      build-id cache and new version of perf reads the data.  The symbols
      should be read from the build-id cache (as the path no longer has the
      same binary) but it failed due to mismatch in the build-id.
      
        symsrc__init: build id mismatch for /home/namhyung/.debug/.build-id/53/e4c2f42a4c61a2d632d92a72afa08f00000000/elf.
      
      The build-id event in the data has 20 byte build-ids, but it saw a
      different size (16) when it reads the build-id of the elf file in the
      build-id cache.
      
        $ readelf -n ~/.debug/.build-id/53/e4c2f42a4c61a2d632d92a72afa08f00000000/elf
      
        Displaying notes found in: .note.gnu.build-id
          Owner                Data size 	Description
          GNU                  0x00000010	NT_GNU_BUILD_ID (unique build ID bitstring)
            Build ID: 53e4c2f42a4c61a2d632d92a72afa08f
      
      Let's fix this by allowing trailing zeros if the size is different.
      
      Fixes: 39be8d01 ("perf tools: Pass build_id object to dso__build_id_equal()")
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20210910224630.1084877-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4a86d414
    • Adrian Hunter's avatar
      perf tools: Fix hybrid config terms list corruption · 99fc5941
      Adrian Hunter authored
      A config terms list was spliced twice, resulting in a never-ending loop
      when the list was traversed. Fix by using list_splice_init() and copying
      and freeing the lists as necessary.
      
      This patch also depends on patch "perf tools: Factor out
      copy_config_terms() and free_config_terms()"
      
      Example on ADL:
      
       Before:
      
        # perf record -e '{intel_pt//,cycles/aux-sample-size=4096/pp}' uname &
        # jobs
        [1]+  Running                    perf record -e "{intel_pt//,cycles/aux-sample-size=4096/pp}" uname
        # perf top -E 10
          PerfTop:    4071 irqs/sec  kernel: 6.9%  exact: 100.0% lost: 0/0 drop: 0/0 [4000Hz cycles],  (all, 24 CPUs)
        ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      
          97.60%  perf           [.] __evsel__get_config_term
           0.25%  [kernel]       [k] kallsyms_expand_symbol.constprop.13
           0.24%  perf           [.] kallsyms__parse
           0.15%  [kernel]       [k] _raw_spin_lock
           0.14%  [kernel]       [k] number
           0.13%  [kernel]       [k] advance_transaction
           0.08%  [kernel]       [k] format_decode
           0.08%  perf           [.] map__process_kallsym_symbol
           0.08%  perf           [.] rb_insert_color
           0.08%  [kernel]       [k] vsnprintf
        exiting.
        # kill %1
      
      After:
      
        # perf record -e '{intel_pt//,cycles/aux-sample-size=4096/pp}' uname &
        Linux
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.060 MB perf.data ]
        # perf script | head
             perf-exec   604 [001]  1827.312293:                            psb:  psb offs: 0                       ffffffffb8415e87 pt_config_start+0x37 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb856a3bd event_sched_in.isra.133+0xfd ([kernel.kallsyms]) => ffffffffb856a9a0 perf_pmu_nop_void+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb856b10e merge_sched_in+0x26e ([kernel.kallsyms]) => ffffffffb856a2c0 event_sched_in.isra.133+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb856a45d event_sched_in.isra.133+0x19d ([kernel.kallsyms]) => ffffffffb8568b80 perf_event_set_state.part.61+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb8568b86 perf_event_set_state.part.61+0x6 ([kernel.kallsyms]) => ffffffffb85662a0 perf_event_update_time+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb856a35c event_sched_in.isra.133+0x9c ([kernel.kallsyms]) => ffffffffb8567610 perf_log_itrace_start+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb856a377 event_sched_in.isra.133+0xb7 ([kernel.kallsyms]) => ffffffffb8403b40 x86_pmu_add+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb8403b86 x86_pmu_add+0x46 ([kernel.kallsyms]) => ffffffffb8403940 collect_events+0x0 ([kernel.kallsyms])
             perf-exec   604  1827.312293:          1                       branches:  ffffffffb8403a7b collect_events+0x13b ([kernel.kallsyms]) => ffffffffb8402cd0 collect_event+0x0 ([kernel.kallsyms])
      
      Fixes: 30def61f ("perf parse-events Create two hybrid cache events")
      Fixes: 94da591b ("perf parse-events Create two hybrid raw events")
      Fixes: 9cbfa2f6 ("perf parse-events Create two hybrid hardware events")
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Link: https //lore.kernel.org/r/20210909125508.28693-3-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      99fc5941
    • Adrian Hunter's avatar
      perf tools: Factor out copy_config_terms() and free_config_terms() · a7d212fc
      Adrian Hunter authored
      Factor out copy_config_terms() and free_config_terms() so that they can
      be reused.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Link: https //lore.kernel.org/r/20210909125508.28693-2-adrian.hunter@intel.com
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a7d212fc
    • Adrian Hunter's avatar
      perf tools: Fix perf_event_attr__fprintf() missing/dupl. fields · eb34363a
      Adrian Hunter authored
      Some fields are missing and text_poke is duplicated. Fix that up.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lore.kernel.org/lkml/20210911120550.12203-1-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      eb34363a
    • Ian Rogers's avatar
      perf tools: Ignore Documentation dependency file · da4572d6
      Ian Rogers authored
      When building directly on the checked out repository the build process
      produces a file that should be ignored, so add it to .gitignore.
      
      Fixes: a81df63a ("perf doc: Fix doc.dep")
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20210910232249.739661-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      da4572d6
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.15-2021-09-11' of git://git.kernel.dk/linux-block · c605c396
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
      
       - Fix an off-by-one in a BUILD_BUG_ON() check. Not a real issue right
         now as we have plenty of flags left, but could become one. (Hao)
      
       - Fix lockdep issue introduced in this merge window (me)
      
       - Fix a few issues with the worker creation (me, Pavel, Qiang)
      
       - Fix regression with wq_has_sleeper() for IOPOLL (Pavel)
      
       - Timeout link error propagation fix (Pavel)
      
      * tag 'io_uring-5.15-2021-09-11' of git://git.kernel.dk/linux-block:
        io_uring: fix off-by-one in BUILD_BUG_ON check of __REQ_F_LAST_BIT
        io_uring: fail links of cancelled timeouts
        io-wq: fix memory leak in create_io_worker()
        io-wq: fix silly logic error in io_task_work_match()
        io_uring: drop ctx->uring_lock before acquiring sqd->lock
        io_uring: fix missing mb() before waitqueue_active
        io-wq: fix cancellation on create-worker failure
      c605c396
    • Linus Torvalds's avatar
      Merge tag 'block-5.15-2021-09-11' of git://git.kernel.dk/linux-block · c0f7e49f
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request from Christoph:
           - fix nvmet command set reporting for passthrough controllers (Adam Manzanares)
           - update a MAINTAINERS email address (Chaitanya Kulkarni)
           - set QUEUE_FLAG_NOWAIT for nvme-multipth (me)
           - handle errors from add_disk() (Luis Chamberlain)
           - update the keep alive interval when kato is modified (Tatsuya Sasaki)
           - fix a buffer overrun in nvmet_subsys_attr_serial (Hannes Reinecke)
           - do not reset transport on data digest errors in nvme-tcp (Daniel Wagner)
           - only call synchronize_srcu when clearing current path (Daniel Wagner)
           - revalidate paths during rescan (Hannes Reinecke)
      
       - Split out the fs/block_dev into block/fops.c and block/bdev.c, which
         has been long overdue. Do this now before -rc1, to avoid annoying
         conflicts due to this (Christoph)
      
       - blk-throtl use-after-free fix (Li)
      
       - Improve plug depth for multi-device plugs, greatly increasing md
         resync performance (Song)
      
       - blkdev_show() locking fix (Tetsuo)
      
       - n64cart error check fix (Yang)
      
      * tag 'block-5.15-2021-09-11' of git://git.kernel.dk/linux-block:
        n64cart: fix return value check in n64cart_probe()
        blk-mq: allow 4x BLK_MAX_REQUEST_COUNT at blk_plug for multiple_queues
        block: move fs/block_dev.c to block/bdev.c
        block: split out operations on block special files
        blk-throttle: fix UAF by deleteing timer in blk_throtl_exit()
        block: genhd: don't call blkdev_show() with major_names_lock held
        nvme: update MAINTAINERS email address
        nvme: add error handling support for add_disk()
        nvme: only call synchronize_srcu when clearing current path
        nvme: update keep alive interval when kato is modified
        nvme-tcp: Do not reset transport on data digest errors
        nvmet: fixup buffer overrun in nvmet_subsys_attr_serial()
        nvmet: return bool from nvmet_passthru_ctrl and nvmet_is_passthru_req
        nvmet: looks at the passthrough controller when initializing CAP
        nvme: move nvme_multi_css into nvme.h
        nvme-multipath: revalidate paths during rescan
        nvme-multipath: set QUEUE_FLAG_NOWAIT
      c0f7e49f