Merge branches 'doc.2022.06.21a', 'fixes.2022.07.19a', 'nocb.2022.07.19a', 'poll...
authorPaul E. McKenney <paulmck@kernel.org>
Fri, 22 Jul 2022 00:43:16 +0000 (17:43 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 22 Jul 2022 00:43:16 +0000 (17:43 -0700)
doc.2022.06.21a: Documentation updates.
fixes.2022.07.19a: Miscellaneous fixes.
nocb.2022.07.19a: Callback-offload updates.
poll.2022.07.21a: Polled grace-period updates.
rcu-tasks.2022.06.21a: Tasks RCU updates.
torture.2022.06.21a: Torture-test updates.

1  2  3  4  5  6 
Documentation/admin-guide/kernel-parameters.txt
include/linux/rcupdate.h
include/linux/rcutiny.h
kernel/rcu/rcutorture.c
kernel/rcu/tiny.c
kernel/rcu/tree.c
kernel/rcu/tree.h
kernel/rcu/tree_plugin.h

Simple merge
Simple merge
@@@@@@@ -75,17 -75,21 -75,21 -75,23 -75,21 -75,21 +75,19 @@@@@@@ MODULE_AUTHOR("Paul E. McKenney <paulmc
      
      torture_param(int, extendables, RCUTORTURE_MAX_EXTEND,
              "Extend readers by disabling bh (1), irqs (2), or preempt (4)");
 -----torture_param(int, fqs_duration, 0,
 -----        "Duration of fqs bursts (us), 0 to disable");
 +++++torture_param(int, fqs_duration, 0, "Duration of fqs bursts (us), 0 to disable");
      torture_param(int, fqs_holdoff, 0, "Holdoff time within fqs bursts (us)");
      torture_param(int, fqs_stutter, 3, "Wait time between fqs bursts (s)");
 -----torture_param(int, fwd_progress, 1, "Test grace-period forward progress");
 +++++torture_param(int, fwd_progress, 1, "Number of grace-period forward progress tasks (0 to disable)");
      torture_param(int, fwd_progress_div, 4, "Fraction of CPU stall to wait");
 -----torture_param(int, fwd_progress_holdoff, 60,
 -----        "Time between forward-progress tests (s)");
 -----torture_param(bool, fwd_progress_need_resched, 1,
 -----        "Hide cond_resched() behind need_resched()");
 +++++torture_param(int, fwd_progress_holdoff, 60, "Time between forward-progress tests (s)");
 +++++torture_param(bool, fwd_progress_need_resched, 1, "Hide cond_resched() behind need_resched()");
      torture_param(bool, gp_cond, false, "Use conditional/async GP wait primitives");
+++ ++torture_param(bool, gp_cond_exp, false, "Use conditional/async expedited GP wait primitives");
      torture_param(bool, gp_exp, false, "Use expedited GP wait primitives");
 -----torture_param(bool, gp_normal, false,
 -----       "Use normal (non-expedited) GP wait primitives");
 +++++torture_param(bool, gp_normal, false, "Use normal (non-expedited) GP wait primitives");
      torture_param(bool, gp_poll, false, "Use polling GP wait primitives");
+++ ++torture_param(bool, gp_poll_exp, false, "Use polling expedited GP wait primitives");
      torture_param(bool, gp_sync, false, "Use synchronous GP wait primitives");
      torture_param(int, irqreader, 1, "Allow RCU readers from irq handlers");
      torture_param(int, leakpointer, 0, "Leak pointer dereferences from readers");
@@@@@@@ -1266,9 -1283,9 -1283,9 -1334,23 -1283,9 -1283,9 +1317,23 @@@@@@@ rcu_torture_writer(void *arg
                                                                  &rand);
                                rcu_torture_pipe_update(old_rp);
                                break;
+++ ++                  case RTWS_POLL_GET_EXP:
+++ ++                          rcu_torture_writer_state = RTWS_POLL_GET_EXP;
+++ ++                          gp_snap = cur_ops->start_gp_poll_exp();
+++ ++                          rcu_torture_writer_state = RTWS_POLL_WAIT_EXP;
+++ ++                          while (!cur_ops->poll_gp_state_exp(gp_snap))
+++ ++                                  torture_hrtimeout_jiffies(torture_random(&rand) % 16,
+++ ++                                                            &rand);
+++ ++                          rcu_torture_pipe_update(old_rp);
+++ ++                          break;
                        case RTWS_SYNC:
                                rcu_torture_writer_state = RTWS_SYNC;
+++ ++                          if (cur_ops->get_gp_state && cur_ops->poll_gp_state)
+++ ++                                  cookie = cur_ops->get_gp_state();
     +                          cur_ops->sync();
+++ +                           cur_ops->sync();
+++ ++                          if (cur_ops->get_gp_state && cur_ops->poll_gp_state)
+++ ++                                  WARN_ON_ONCE(!cur_ops->poll_gp_state(cookie));
                                rcu_torture_pipe_update(old_rp);
                                break;
                        default:
Simple merge
Simple merge
Simple merge
Simple merge