Skip to content

Backport v5.15 rcu/locking/cgroup dependencies for kernel-rt

Waiman Long requested to merge llong1/centos-stream-9:bz2022806_rt into main

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2022806
MR: !130 (merged)
Omitted-fix: fb5d69a5cd78 ("csky: bitops: Remove duplicate __clear_bit define") csky is not a supported arch.

This patch series backports a number of v5.15 locking, rcu, cgroup and some other misceallaneous patches that are dependencies required for kernel-rt to move up to v5.15-rt release for RHEL9.0. The last 2 patches are v5.16 fixes.

All the patches applied cleanly without conflicts.

Signed-off-by: Waiman Long longman@redhat.com

Waiman Long (99):
  refscale: Add measurement of clock readout
  torture: Add clocksource-watchdog testing to torture.sh
  torture: Make torture.sh accept --do-all and --donone
  rcu: Fix to include first blocked task in stall warning
  rcu: Fix stall-warning deadlock due to non-release of rcu_node ->lock
  rcutorture: Preempt rather than block when testing task stalls
  rcu/nocb: Start moving nocb code to its own plugin file
  rcu/nocb: Remove NOCB deferred wakeup from rcutree_dead_cpu()
  rcu: Remove special bit at the bottom of the ->dynticks counter
  rcu: Weaken ->dynticks accesses and updates
  Documentation/RCU: Fix emphasis markers
  rcu: Mark accesses to ->rcu_read_lock_nesting
  Documentation/RCU: Fix nested inline markup
  rcu: Mark accesses in tree_stall.h
  rculist: Unify documentation about missing list_empty_rcu()
  rcu/tree: Handle VM stoppage in stall detection
  rcu: Do not disable GP stall detection in rcu_cpu_stall_reset()
  rcu: Start timing stall repetitions after warning complete
  rcu-tasks: Add comments explaining task_struct strategy
  rcu-tasks: Mark ->trc_reader_nesting data races
  rcu-tasks: Mark ->trc_reader_special.b.need_qs data races
  docs: Fix a typo in Documentation/RCU/stallwarn.rst
  locktorture: Mark statistics data races
  locktorture: Count lock readers
  srcutiny: Mark read-side data races
  rcu: Mark lockless ->qsmask read in rcu_check_boost_fail()
  torture: Enable KCSAN summaries over groups of torture-test runs
  torture: Create KCSAN summaries for torture.sh runs
  rcu: Make rcu_gp_init() and rcu_gp_fqs_loop noinline to conserve stack
  rcu/doc: Add a quick quiz to explain further why we need
    smp_mb__after_unlock_lock()
  torture: Make kvm-recheck-scf.sh tolerate qemu-cmd comments
  torture: Make kvm-recheck-lock.sh tolerate qemu-cmd comments
  torture: Log more kvm-remote.sh information
  torture: Protect kvm-remote.sh directory trees from /tmp reaping
  rcuscale: Console output claims too few grace periods
  rcu-tasks: Fix synchronize_rcu_rude() typo in comment
  torture: Make kvm-recheck.sh skip kcsan.sum for build-only runs
  torture: Move parse-console.sh call to PATH-aware scripts
  tools: include: nolibc: Fix a typo occured to occurred in the file
    nolibc.h
  tools/nolibc: Implement msleep()
  scftorture: Add RPC-like IPI tests
  rcu: Remove useless "ret" update in rcu_gp_fqs_loop()
  rcu: Use per_cpu_ptr to get the pointer of per_cpu variable
  Documentation/atomic_t: Document cmpxchg() vs try_cmpxchg()
  rcu: Explain why rcu_all_qs() is a stub in preemptible TREE RCU
  locking/rwsem: Remove an unused parameter of rwsem_wake()
  torture: Put kvm.sh batch-creation awk script into a temp file
  torture: Make kvm.sh select per-scenario affinity masks
  torture: Don't redirect qemu-cmd comment lines
  torture: Make kvm-test-1-run-qemu.sh apply affinity
  rcutorture: Upgrade two-CPU scenarios to four CPUs
  torture: Use numeric taskset argument in jitter.sh
  torture: Consistently name "qemu*" test output files
  torture: Make kvm-test-1-run-batch.sh select per-scenario affinity
    masks
  torture: Don't use "test" command's "-a" argument
  torture: Add timestamps to kvm-test-1-run-qemu.sh output
  torture: Make kvm-test-1-run-qemu.sh check for reboot loops
  scftorture: Avoid NULL pointer exception on early exit
  rcu: Fix macro name CONFIG_TASKS_RCU_TRACE
  locking/atomic: simplify ifdef generation
  locking/atomic: remove ARCH_ATOMIC remanants
  locking/atomic: centralize generated headers
  locking/atomic: add arch_atomic_long*()
  locking/atomic: add generic arch_*() bitops
  doc: Update stallwarn.rst with recent changes
  cgroup: remove cgroup_mount from comments
  rcu: Print human-readable message for schedule() in RCU reader
  rcu: Mark accesses to rcu_state.n_force_qs
  cgroup/cpuset: Miscellaneous code cleanup
  cgroup/cpuset: Fix a partition bug with hotplug
  cgroup/cpuset: Fix violation of cpuset locking rule
  locking/atomic: simplify non-atomic wrappers
  eventfd: Make signal recursion protection a task bit
  Documentation/atomic_t: Document forward progress expectations
  Documentation: Replace deprecated CPU-hotplug functions.
  perf/x86/intel: Replace deprecated CPU-hotplug functions
  perf/hw_breakpoint: Replace deprecated CPU-hotplug functions
  md/raid5: Replace deprecated CPU-hotplug functions.
  thermal: Replace deprecated CPU-hotplug functions.
  mm: Replace deprecated CPU-hotplug functions.
  cgroup: Replace deprecated CPU-hotplug functions.
  genirq/affinity: Replace deprecated CPU-hotplug functions.
  rcu: Replace deprecated CPU-hotplug functions
  smpboot: Replace deprecated CPU-hotplug functions.
  clocksource: Replace deprecated CPU-hotplug functions.
  torture: Replace deprecated CPU-hotplug functions.
  static_call: Update API documentation
  locking/semaphore: Add might_sleep() to down_*() family
  cgroup: cgroup-v1: clean up kernel-doc notation
  cgroup/cpuset: Enable event notification when partition state changes
  debugobjects: Make them PREEMPT_RT aware
  media/atomisp: Use lockdep instead of *mutex_is_locked()
  cgroup: Avoid compiler warnings with no subsystems
  futex: Clarify comment for requeue_pi_wake_futex()
  futex: Avoid redundant task lookup
  docs/core-api: Modify document layout
  Documentation: core-api/cpuhotplug: Rewrite the API section
  efi: Change down_interruptible() in virt_efi_reset_system() to
    down_trylock()
  rcu: Fix rcu_dynticks_curr_cpu_in_eqs() vs noinstr

 .../Tree-RCU-Memory-Ordering.rst              |   29 +
 .../RCU/Design/Requirements/Requirements.rst  |    8 +-
 Documentation/RCU/checklist.rst               |   24 +-
 Documentation/RCU/rcu_dereference.rst         |    6 +-
 Documentation/RCU/stallwarn.rst               |   31 +-
 Documentation/atomic_t.txt                    |   94 +
 Documentation/core-api/cpu_hotplug.rst        |  599 +++++--
 Documentation/trace/ftrace.rst                |    2 +-
 arch/x86/events/intel/core.c                  |    8 +-
 arch/x86/events/intel/pt.c                    |    4 +-
 drivers/firmware/efi/runtime-wrappers.c       |    2 +-
 drivers/md/raid5.c                            |    4 +-
 .../staging/media/atomisp/pci/atomisp_ioctl.c |    4 +-
 drivers/thermal/intel/intel_powerclamp.c      |    4 +-
 fs/aio.c                                      |    2 +-
 fs/eventfd.c                                  |   12 +-
 include/asm-generic/atomic-long.h             | 1014 -----------
 include/asm-generic/bitops/atomic.h           |   32 +-
 include/asm-generic/bitops/lock.h             |   39 +-
 include/asm-generic/bitops/non-atomic.h       |   39 +-
 include/linux/atomic.h                        |    7 +-
 .../linux/{ => atomic}/atomic-arch-fallback.h |    0
 .../atomic}/atomic-instrumented.h             |  586 ++++++-
 include/linux/atomic/atomic-long.h            | 1014 +++++++++++
 include/linux/cpuhotplug.h                    |  132 +-
 include/linux/eventfd.h                       |   11 +-
 include/linux/rculist.h                       |   35 +-
 include/linux/rcupdate.h                      |    4 +-
 include/linux/rcutiny.h                       |    3 -
 include/linux/sched.h                         |    4 +
 include/linux/srcutiny.h                      |    8 +-
 include/linux/static_call.h                   |   33 +
 kernel/cgroup/cgroup-v1.c                     |    8 +-
 kernel/cgroup/cgroup.c                        |   27 +-
 kernel/cgroup/cpuset.c                        |  151 +-
 kernel/events/hw_breakpoint.c                 |    4 +-
 kernel/futex.c                                |   93 +-
 kernel/irq/affinity.c                         |    8 +-
 kernel/locking/locktorture.c                  |   25 +-
 kernel/locking/rwsem.c                        |    6 +-
 kernel/locking/semaphore.c                    |    4 +
 kernel/rcu/rcuscale.c                         |    4 +-
 kernel/rcu/rcutorture.c                       |    7 +-
 kernel/rcu/refscale.c                         |   36 +-
 kernel/rcu/srcutiny.c                         |    2 +-
 kernel/rcu/tasks.h                            |   36 +-
 kernel/rcu/tree.c                             |  117 +-
 kernel/rcu/tree_nocb.h                        | 1496 ++++++++++++++++
 kernel/rcu/tree_plugin.h                      | 1506 +----------------
 kernel/rcu/tree_stall.h                       |  111 +-
 kernel/scftorture.c                           |   78 +-
 kernel/sched/core.c                           |   11 +
 kernel/smpboot.c                              |    8 +-
 kernel/time/clocksource.c                     |    6 +-
 kernel/torture.c                              |    6 +-
 lib/debugobjects.c                            |    7 +-
 mm/swap_slots.c                               |    4 +-
 mm/vmstat.c                                   |   12 +-
 scripts/atomic/check-atomics.sh               |    6 +-
 scripts/atomic/fallbacks/acquire              |    4 +-
 scripts/atomic/fallbacks/add_negative         |    6 +-
 scripts/atomic/fallbacks/add_unless           |    6 +-
 scripts/atomic/fallbacks/andnot               |    4 +-
 scripts/atomic/fallbacks/dec                  |    4 +-
 scripts/atomic/fallbacks/dec_and_test         |    6 +-
 scripts/atomic/fallbacks/dec_if_positive      |    6 +-
 scripts/atomic/fallbacks/dec_unless_positive  |    6 +-
 scripts/atomic/fallbacks/fence                |    4 +-
 scripts/atomic/fallbacks/fetch_add_unless     |    8 +-
 scripts/atomic/fallbacks/inc                  |    4 +-
 scripts/atomic/fallbacks/inc_and_test         |    6 +-
 scripts/atomic/fallbacks/inc_not_zero         |    6 +-
 scripts/atomic/fallbacks/inc_unless_negative  |    6 +-
 scripts/atomic/fallbacks/read_acquire         |    2 +-
 scripts/atomic/fallbacks/release              |    4 +-
 scripts/atomic/fallbacks/set_release          |    2 +-
 scripts/atomic/fallbacks/sub_and_test         |    6 +-
 scripts/atomic/fallbacks/try_cmpxchg          |    4 +-
 scripts/atomic/gen-atomic-fallback.sh         |   68 +-
 scripts/atomic/gen-atomic-instrumented.sh     |   11 +-
 scripts/atomic/gen-atomic-long.sh             |   10 +-
 scripts/atomic/gen-atomics.sh                 |    6 +-
 tools/include/nolibc/nolibc.h                 |   15 +-
 .../selftests/rcutorture/bin/jitter.sh        |   10 +-
 .../rcutorture/bin/kcsan-collapse.sh          |    2 +-
 .../selftests/rcutorture/bin/kvm-again.sh     |    4 +-
 .../rcutorture/bin/kvm-assign-cpus.sh         |  106 ++
 .../rcutorture/bin/kvm-get-cpus-script.sh     |   88 +
 .../rcutorture/bin/kvm-recheck-lock.sh        |    2 +-
 .../rcutorture/bin/kvm-recheck-scf.sh         |    2 +-
 .../selftests/rcutorture/bin/kvm-recheck.sh   |    5 +-
 .../rcutorture/bin/kvm-remote-noreap.sh       |   30 +
 .../selftests/rcutorture/bin/kvm-remote.sh    |   20 +-
 .../rcutorture/bin/kvm-test-1-run-batch.sh    |   24 +
 .../rcutorture/bin/kvm-test-1-run-qemu.sh     |   49 +-
 .../rcutorture/bin/kvm-test-1-run.sh          |    2 +
 tools/testing/selftests/rcutorture/bin/kvm.sh |   39 +-
 .../selftests/rcutorture/bin/torture.sh       |   37 +-
 .../selftests/rcutorture/configs/rcu/RUDE01   |    2 +-
 .../selftests/rcutorture/configs/rcu/TASKS01  |    2 +-
 .../selftests/rcutorture/configs/rcu/TASKS03  |    2 +-
 101 files changed, 4977 insertions(+), 3226 deletions(-)
 delete mode 100644 include/asm-generic/atomic-long.h
 rename include/linux/{ => atomic}/atomic-arch-fallback.h (100%)
 rename include/{asm-generic => linux/atomic}/atomic-instrumented.h (68%)
 create mode 100644 include/linux/atomic/atomic-long.h
 create mode 100644 kernel/rcu/tree_nocb.h
 create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-assign-cpus.sh
 create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-get-cpus-script.sh
 create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-remote-noreap.sh
Edited by Waiman Long

Merge request reports