All of lore.kernel.org
 help / color / mirror / Atom feed
* RCU changes for v5.20 (or whatever)
@ 2022-07-31 16:53 Paul E. McKenney
  0 siblings, 0 replies; only message in thread
From: Paul E. McKenney @ 2022-07-31 16:53 UTC (permalink / raw)
  To: torvalds; +Cc: mingo, linux-kernel, tglx, rcu, kernel-team

Hello, Linus,

Once the merge window opens, please pull the latest RCU git tree from:

  git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git tags/rcu.2022.07.26a
  # HEAD: 34bc7b454dc31f75a0be7ee8ab378135523d7c51: Merge branch 'ctxt.2022.07.05a' into HEAD (2022-07-21 17:46:18 -0700)

There are really six more branches for a total of seven, but the other
six had to be merged separately as the parent of the above commit here:

d38c8fe48354 ("Merge branches 'doc.2022.06.21a', 'fixes.2022.07.19a', 'nocb.2022.07.19a', 'poll.2022.07.21a', 'rcu-tasks.2022.06.21a' and 'torture.2022.06.21a' into HEAD

Stephen Rothwell located a conflict with these two commits, the latter
already in mainline:

24a9c54182b3 ("context_tracking: Split user tracking Kconfig")
7fd6ef61a5d6 ("LoongArch: Drop these obsolete selects in Kconfig")

The branch resolution.2022.07.26a in -rcu provides a sample merge using
Stephen's suggested merge-conflict fix:

https://lore.kernel.org/all/20220708141246.43111241@canb.auug.org.au/

----------------------------------------------------------------
RCU pull request for v5.20 (or whatever)

This pull request contains the following branches:

doc.2022.06.21a: Documentation updates.

fixes.2022.07.19a: Miscellaneous fixes.

nocb.2022.07.19a: Callback-offload updates, perhaps most notably a new
	RCU_NOCB_CPU_DEFAULT_ALL Kconfig option that causes all CPUs to
	be offloaded at boot time, regardless of kernel boot parameters.
	This is useful to battery-powered systems such as ChromeOS
	and Android.  In addition, a new RCU_NOCB_CPU_CB_BOOST kernel
	boot parameter prevents offloaded callbacks from interfering
	with real-time workloads and with energy-efficiency mechanisms.

poll.2022.07.21a: Polled grace-period updates, perhaps most notably
	making these APIs account for both normal and expedited grace
	periods.

rcu-tasks.2022.06.21a: Tasks RCU updates, perhaps most notably reducing
	the CPU overhead of RCU tasks trace grace periods by more than
	a factor of two on a system with 15,000 tasks.	The reduction
	is expected to increase with the number of tasks, so it seems
	reasonable to hypothesize that a system with 150,000 tasks might
	see a 20-fold reduction in CPU overhead.

torture.2022.06.21a: Torture-test updates.

ctxt.2022.07.05a: Updates that merge RCU's dyntick-idle tracking into
	context tracking, thus reducing the overhead of transitioning to
	kernel mode from either idle or nohz_full userspace execution
	for kernels that track context independently of RCU.  This is
	expected to be helpful primarily for kernels built with
	CONFIG_NO_HZ_FULL=y.

----------------------------------------------------------------
Anna-Maria Behnsen (1):
      rcu/torture: Change order of warning and trace dump

Chen Zhongjin (1):
      locking/csd_lock: Change csdlock_debug from early_param to __setup

Frederic Weisbecker (21):
      context_tracking: Remove unused context_tracking_in_user()
      context_tracking: Add a note about noinstr VS unsafe context tracking functions
      rcutorture: Fix ksoftirqd boosting timing and iteration
      context_tracking: Rename __context_tracking_enter/exit() to __ct_user_enter/exit()
      context_tracking: Rename context_tracking_user_enter/exit() to user_enter/exit_callable()
      context_tracking: Rename context_tracking_enter/exit() to ct_user_enter/exit()
      context_tracking: Rename context_tracking_cpu_set() to ct_cpu_track_user()
      context_tracking: Split user tracking Kconfig
      context_tracking: Take idle eqs entrypoints over RCU
      context_tracking: Take IRQ eqs entrypoints over RCU
      context_tracking: Take NMI eqs entrypoints over RCU
      rcu/context-tracking: Remove rcu_irq_enter/exit()
      rcu/context_tracking: Move dynticks counter to context tracking
      rcu/context_tracking: Move dynticks_nesting to context tracking
      rcu/context_tracking: Move dynticks_nmi_nesting to context tracking
      rcu/context-tracking: Move deferred nocb resched to context tracking
      rcu/context-tracking: Move RCU-dynticks internal functions to context_tracking
      rcu/context-tracking: Remove unused and/or unecessary middle functions
      context_tracking: Convert state to atomic_t
      MAINTAINERS: Add Paul as context tracking maintainer
      rcu/nocb: Add/del rdp to iterate from rcuog itself

Joel Fernandes (1):
      rcu/nocb: Add an option to offload all CPUs on boot

Joel Fernandes (Google) (1):
      rcu/kvfree: Remove useless monitor_todo flag

Johannes Berg (1):
      rcu: tiny: Record kvfree_call_rcu() call stack for KASAN

Li Qiong (1):
      rcutorture: Handle failure of memory allocation functions

Neeraj Upadhyay (2):
      srcu: Make expedited RCU grace periods block even less frequently
      rcu/tree: Add comment to describe GP-done condition in fqs loop

Patrick Wang (1):
      rcu: Avoid tracing a few functions executed in stop machine

Paul E. McKenney (57):
      rcu: Make normal polling GP be more precise about sequence numbers
      rcu: Provide a get_completed_synchronize_rcu() function
      rcutorture: Validate get_completed_synchronize_rcu()
      rcu-tasks: Check for abandoned callbacks
      rcu-tasks: Split rcu_tasks_one_gp() from rcu_tasks_kthread()
      rcu-tasks: Move synchronize_rcu_tasks_generic() down
      rcu-tasks: Drive synchronous grace periods from calling task
      rcu-tasks: Merge state into .b.need_qs and atomically update
      rcu-tasks: Remove rcu_tasks_trace_postgp() wait for counter
      rcu-tasks: Make trc_read_check_handler() fetch ->trc_reader_nesting only once
      rcu-tasks: Idle tasks on offline CPUs are in quiescent states
      rcu-tasks: Handle idle tasks for recently offlined CPUs
      rcu-tasks: RCU Tasks Trace grace-period kthread has implicit QS
      rcu-tasks: Make rcu_note_context_switch() unconditionally call rcu_tasks_qs()
      rcu-tasks: Simplify trc_inspect_reader() QS logic
      rcu-tasks: Add slow-IPI indicator to RCU Tasks Trace stall warnings
      rcu-tasks: Flag offline CPUs in RCU Tasks Trace stall warnings
      rcu-tasks: Make RCU Tasks Trace stall warnings print full .b.need_qs field
      rcu-tasks: Make RCU Tasks Trace stall warning handle idle offline tasks
      rcu-tasks: Add data structures for lightweight grace periods
      rcu-tasks: Track blocked RCU Tasks Trace readers
      rcu-tasks: Untrack blocked RCU Tasks Trace at reader end
      rcu-tasks: Add blocked-task indicator to RCU Tasks Trace stall warnings
      rcu-tasks: Move rcu_tasks_trace_pertask() before rcu_tasks_trace_pregp_step()
      rcu-tasks: Avoid rcu_tasks_trace_pertask() duplicate list additions
      rcu-tasks: Scan running tasks for RCU Tasks Trace readers
      rcu-tasks: Pull in tasks blocked within RCU Tasks Trace readers
      rcu-tasks: Stop RCU Tasks Trace from scanning idle tasks
      torture: Make kvm-remote.sh announce which system is being waited on
      rcu: Apply noinstr to rcu_idle_enter() and rcu_idle_exit()
      rcutorture: Update rcutorture.fwd_progress help text
      doc: Document the rcutree.rcu_divisor kernel boot parameter
      doc: Document rcutree.nocb_nobypass_lim_per_jiffy kernel parameter
      rcu-tasks: Stop RCU Tasks Trace from scanning full tasks list
      rcu-tasks: Maintain a count of tasks blocking RCU Tasks Trace grace period
      rcu-tasks: Eliminate RCU Tasks Trace IPIs to online CPUs
      rcu-tasks: Disable and enable CPU hotplug in same function
      rcu-tasks: Update comments
      rcu-tasks: Be more patient for RCU Tasks boot-time testing
      rcutorture: Simplify rcu_torture_read_exit_child() loop
      torture: Adjust to again produce debugging information
      rcutorture: Make failure indication note reader-batch overflow
      torture: Create kvm-check-branches.sh output in proper location
      context_tracking: Use arch_atomic_read() in __ct_state for KASAN
      srcu: Block less aggressively for expedited grace periods
      rcu: Decrease FQS scan wait time in case of callback overloading
      rcu: Forbid RCU_STRICT_GRACE_PERIOD in TINY_RCU kernels
      rcu: Initialize first_gp_fqs at declaration in rcu_gp_fqs()
      rcu: Switch polled grace-period APIs to ->gp_seq_polled
      rcu: Make polled grace-period API account for expedited grace periods
      rcu: Make Tiny RCU grace periods visible to polled APIs
      rcutorture: Verify that polled GP API sees synchronous grace periods
      rcu: Add polled expedited grace-period primitives
      rcutorture: Test polled expedited grace-period primitives
      rcu: Diagnose extended sync_rcu_do_polled_gp() loops
      Merge branches 'doc.2022.06.21a', 'fixes.2022.07.19a', 'nocb.2022.07.19a', 'poll.2022.07.21a', 'rcu-tasks.2022.06.21a' and 'torture.2022.06.21a' into HEAD
      Merge branch 'ctxt.2022.07.05a' into HEAD

Uladzislau Rezki (Sony) (1):
      rcu/nocb: Add option to opt rcuo kthreads out of RT priority

Waiman Long (1):
      rcu-tasks: Use delayed_work to delay rcu_tasks_verify_self_tests()

Zqiang (13):
      rcu: Dump rcuc kthread status for CPUs not reporting quiescent state
      rcutorture: Fix memory leak in rcu_test_debug_objects()
      rcuscale: Fix smp_processor_id()-in-preemptible warnings
      refscale: Convert test_lock spinlock to raw_spinlock
      rcu: Add rnp->cbovldmask check in rcutree_migrate_callbacks()
      rcu: Immediately boost preempted readers for strict grace periods
      rcu: Cleanup RCU urgency state for offline CPU
      rcu/nocb: Invert rcu_state.barrier_mutex VS hotplug lock locking order
      rcu/nocb: Fix NOCB kthreads spawn failure with rcu_nocb_rdp_deoffload() direct call
      rcu: Add nocb_cb_kthread check to rcu_is_callbacks_kthread()
      rcu/nocb: Avoid polling when my_rdp->nocb_head_rdp list is empty
      rcu: Put panic_on_rcu_stall() after expedited RCU CPU stall warnings
      rcu: Add irqs-disabled indicator to expedited RCU CPU stall warnings

 .../RCU/Design/Requirements/Requirements.rst       |  10 +-
 Documentation/RCU/stallwarn.rst                    |   6 +-
 Documentation/admin-guide/kernel-parameters.txt    |  52 ++
 .../time/context-tracking/arch-support.txt         |   6 +-
 MAINTAINERS                                        |   1 +
 arch/Kconfig                                       |   8 +-
 arch/arm/Kconfig                                   |   2 +-
 arch/arm/kernel/entry-common.S                     |   4 +-
 arch/arm/kernel/entry-header.S                     |  12 +-
 arch/arm/mach-imx/cpuidle-imx6q.c                  |   5 +-
 arch/arm64/Kconfig                                 |   2 +-
 arch/arm64/kernel/entry-common.c                   |  14 +-
 arch/csky/Kconfig                                  |   2 +-
 arch/csky/kernel/entry.S                           |   8 +-
 arch/loongarch/Kconfig                             |   2 +-
 arch/mips/Kconfig                                  |   2 +-
 arch/powerpc/Kconfig                               |   2 +-
 arch/powerpc/include/asm/context_tracking.h        |   2 +-
 arch/riscv/Kconfig                                 |   2 +-
 arch/riscv/kernel/entry.S                          |  12 +-
 arch/sparc/Kconfig                                 |   2 +-
 arch/sparc/kernel/rtrap_64.S                       |   2 +-
 arch/x86/Kconfig                                   |   4 +-
 arch/x86/mm/fault.c                                |   2 +-
 arch/xtensa/Kconfig                                |   2 +-
 arch/xtensa/kernel/entry.S                         |   8 +-
 drivers/acpi/processor_idle.c                      |   5 +-
 drivers/cpuidle/cpuidle-psci.c                     |   8 +-
 drivers/cpuidle/cpuidle-riscv-sbi.c                |   8 +-
 drivers/cpuidle/cpuidle.c                          |   9 +-
 include/linux/context_tracking.h                   |  95 +--
 include/linux/context_tracking_irq.h               |  21 +
 include/linux/context_tracking_state.h             | 113 +++-
 include/linux/entry-common.h                       |  10 +-
 include/linux/hardirq.h                            |  12 +-
 include/linux/rcupdate.h                           |  45 +-
 include/linux/rcupdate_trace.h                     |   2 +-
 include/linux/rcutiny.h                            |  27 +-
 include/linux/rcutree.h                            |  11 +-
 include/linux/sched.h                              |   4 +-
 include/linux/tracepoint.h                         |   4 +-
 init/Kconfig                                       |   4 +-
 init/init_task.c                                   |   1 +
 kernel/cfi.c                                       |   4 +-
 kernel/context_tracking.c                          | 617 +++++++++++++++++--
 kernel/cpu_pm.c                                    |   8 +-
 kernel/entry/common.c                              |  16 +-
 kernel/extable.c                                   |   4 +-
 kernel/fork.c                                      |   1 +
 kernel/locking/lockdep.c                           |   2 +-
 kernel/rcu/Kconfig                                 |  31 +
 kernel/rcu/Kconfig.debug                           |   2 +-
 kernel/rcu/rcu.h                                   |  19 +-
 kernel/rcu/rcuscale.c                              |   1 +
 kernel/rcu/rcutorture.c                            | 247 +++++---
 kernel/rcu/refscale.c                              |  18 +-
 kernel/rcu/srcutree.c                              |  98 ++-
 kernel/rcu/tasks.h                                 | 541 ++++++++++-------
 kernel/rcu/tiny.c                                  |  25 +-
 kernel/rcu/tree.c                                  | 660 ++++++---------------
 kernel/rcu/tree.h                                  |  21 +-
 kernel/rcu/tree_exp.h                              | 115 +++-
 kernel/rcu/tree_nocb.h                             | 266 ++++++---
 kernel/rcu/tree_plugin.h                           |  82 +--
 kernel/rcu/tree_stall.h                            |  55 +-
 kernel/rcu/update.c                                |  15 +-
 kernel/sched/core.c                                |  34 +-
 kernel/sched/idle.c                                |  10 +-
 kernel/sched/sched.h                               |   1 +
 kernel/smp.c                                       |   4 +-
 kernel/softirq.c                                   |   4 +-
 kernel/time/Kconfig                                |  37 +-
 kernel/time/tick-sched.c                           |   2 +-
 kernel/trace/trace.c                               |   8 +-
 .../selftests/rcutorture/bin/kvm-check-branches.sh |  11 +-
 .../testing/selftests/rcutorture/bin/kvm-remote.sh |   1 +
 tools/testing/selftests/rcutorture/bin/kvm.sh      |   6 +-
 77 files changed, 2216 insertions(+), 1303 deletions(-)
 create mode 100644 include/linux/context_tracking_irq.h

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-07-31 16:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-31 16:53 RCU changes for v5.20 (or whatever) Paul E. McKenney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.