[PATCH tip/core/rcu 03/17] rcutorture: Remove cbflood facility

2018-11-11 Thread Paul E. McKenney
From: "Paul E. McKenney" 

Now that the forward-progress code does a full-bore continuous callback
flood lasting multiple seconds, there is little point in also posting a
mere 60,000 callbacks every second or so.  This commit therefore removes
the old cbflood testing.  Over time, it may be desirable to concurrently
do full-bore continuous callback floods on all CPUs simultaneously, but
one dragon at a time.

Signed-off-by: Paul E. McKenney 
---
 .../admin-guide/kernel-parameters.txt | 18 
 kernel/rcu/rcutorture.c   | 86 +--
 2 files changed, 1 insertion(+), 103 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt 
b/Documentation/admin-guide/kernel-parameters.txt
index 81d1d5a74728..6c53d6eb4594 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3743,24 +3743,6 @@
in microseconds.  The default of zero says
no holdoff.
 
-   rcutorture.cbflood_inter_holdoff= [KNL]
-   Set holdoff time (jiffies) between successive
-   callback-flood tests.
-
-   rcutorture.cbflood_intra_holdoff= [KNL]
-   Set holdoff time (jiffies) between successive
-   bursts of callbacks within a given callback-flood
-   test.
-
-   rcutorture.cbflood_n_burst= [KNL]
-   Set the number of bursts making up a given
-   callback-flood test.  Set this to zero to
-   disable callback-flood testing.
-
-   rcutorture.cbflood_n_per_burst= [KNL]
-   Set the number of callbacks to be registered
-   in a given burst of a callback-flood test.
-
rcutorture.fqs_duration= [KNL]
Set duration of force_quiescent_state bursts
in microseconds.
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 8cf700ca7845..17f480129a78 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -80,13 +80,6 @@ MODULE_AUTHOR("Paul E. McKenney  and 
Josh Triplett  0 &&
-   cbflood_inter_holdoff > 0 &&
-   cbflood_intra_holdoff > 0 &&
-   cur_ops->call &&
-   cur_ops->cb_barrier) {
-   rhp = vmalloc(array3_size(cbflood_n_burst,
- cbflood_n_per_burst,
- sizeof(*rhp)));
-   err = !rhp;
-   }
-   if (err) {
-   VERBOSE_TOROUT_STRING("rcu_torture_cbflood disabled: Bad args 
or OOM");
-   goto wait_for_stop;
-   }
-   VERBOSE_TOROUT_STRING("rcu_torture_cbflood task started");
-   do {
-   schedule_timeout_interruptible(cbflood_inter_holdoff);
-   atomic_long_inc(_cbfloods);
-   WARN_ON(signal_pending(current));
-   for (i = 0; i < cbflood_n_burst; i++) {
-   for (j = 0; j < cbflood_n_per_burst; j++) {
-   cur_ops->call([i * cbflood_n_per_burst + j],
- rcu_torture_cbflood_cb);
-   }
-   schedule_timeout_interruptible(cbflood_intra_holdoff);
-   WARN_ON(signal_pending(current));
-   }
-   cur_ops->cb_barrier();
-   stutter_wait("rcu_torture_cbflood");
-   } while (!torture_must_stop());
-   vfree(rhp);
-wait_for_stop:
-   torture_kthread_stopping("rcu_torture_cbflood");
-   return 0;
-}
-
 /*
  * RCU torture force-quiescent-state kthread.  Repeatedly induces
  * bursts of calls to force_quiescent_state(), increasing the probability
@@ -1460,11 +1397,10 @@ rcu_torture_stats_print(void)
n_rcu_torture_boosts,
atomic_long_read(_rcu_torture_timers));
torture_onoff_stats();
-   pr_cont("barrier: %ld/%ld:%ld ",
+   pr_cont("barrier: %ld/%ld:%ld\n",
n_barrier_successes,
n_barrier_attempts,
n_rcu_torture_barrier_error);
-   pr_cont("cbflood: %ld\n", atomic_long_read(_cbfloods));
 
pr_alert("%s%s ", torture_type, TORTURE_FLAG);
if (atomic_read(_rcu_torture_mberror) != 0 ||
@@ -2093,8 +2029,6 @@ rcu_torture_cleanup(void)
 cur_ops->name, gp_seq, flags);
torture_stop_kthread(rcu_torture_stats, stats_task);
torture_stop_kthread(rcu_torture_fqs, fqs_task);
-   for (i = 0; i < ncbflooders; i++)
-   torture_stop_kthread(rcu_torture_cbflood, cbflood_task[i]);
if (rcu_torture_can_boost())
cpuhp_remove_state(rcutor_hp);
 
@@ -2377,24 +2311,6 @@ rcu_torture_init(void)
goto unwind;
if (object_debug)
rcu_test_debug_objects();
-   if (cbflood_n_burst > 0) {
-   /* 

[PATCH tip/core/rcu 03/17] rcutorture: Remove cbflood facility

2018-11-11 Thread Paul E. McKenney
From: "Paul E. McKenney" 

Now that the forward-progress code does a full-bore continuous callback
flood lasting multiple seconds, there is little point in also posting a
mere 60,000 callbacks every second or so.  This commit therefore removes
the old cbflood testing.  Over time, it may be desirable to concurrently
do full-bore continuous callback floods on all CPUs simultaneously, but
one dragon at a time.

Signed-off-by: Paul E. McKenney 
---
 .../admin-guide/kernel-parameters.txt | 18 
 kernel/rcu/rcutorture.c   | 86 +--
 2 files changed, 1 insertion(+), 103 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt 
b/Documentation/admin-guide/kernel-parameters.txt
index 81d1d5a74728..6c53d6eb4594 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -3743,24 +3743,6 @@
in microseconds.  The default of zero says
no holdoff.
 
-   rcutorture.cbflood_inter_holdoff= [KNL]
-   Set holdoff time (jiffies) between successive
-   callback-flood tests.
-
-   rcutorture.cbflood_intra_holdoff= [KNL]
-   Set holdoff time (jiffies) between successive
-   bursts of callbacks within a given callback-flood
-   test.
-
-   rcutorture.cbflood_n_burst= [KNL]
-   Set the number of bursts making up a given
-   callback-flood test.  Set this to zero to
-   disable callback-flood testing.
-
-   rcutorture.cbflood_n_per_burst= [KNL]
-   Set the number of callbacks to be registered
-   in a given burst of a callback-flood test.
-
rcutorture.fqs_duration= [KNL]
Set duration of force_quiescent_state bursts
in microseconds.
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 8cf700ca7845..17f480129a78 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -80,13 +80,6 @@ MODULE_AUTHOR("Paul E. McKenney  and 
Josh Triplett  0 &&
-   cbflood_inter_holdoff > 0 &&
-   cbflood_intra_holdoff > 0 &&
-   cur_ops->call &&
-   cur_ops->cb_barrier) {
-   rhp = vmalloc(array3_size(cbflood_n_burst,
- cbflood_n_per_burst,
- sizeof(*rhp)));
-   err = !rhp;
-   }
-   if (err) {
-   VERBOSE_TOROUT_STRING("rcu_torture_cbflood disabled: Bad args 
or OOM");
-   goto wait_for_stop;
-   }
-   VERBOSE_TOROUT_STRING("rcu_torture_cbflood task started");
-   do {
-   schedule_timeout_interruptible(cbflood_inter_holdoff);
-   atomic_long_inc(_cbfloods);
-   WARN_ON(signal_pending(current));
-   for (i = 0; i < cbflood_n_burst; i++) {
-   for (j = 0; j < cbflood_n_per_burst; j++) {
-   cur_ops->call([i * cbflood_n_per_burst + j],
- rcu_torture_cbflood_cb);
-   }
-   schedule_timeout_interruptible(cbflood_intra_holdoff);
-   WARN_ON(signal_pending(current));
-   }
-   cur_ops->cb_barrier();
-   stutter_wait("rcu_torture_cbflood");
-   } while (!torture_must_stop());
-   vfree(rhp);
-wait_for_stop:
-   torture_kthread_stopping("rcu_torture_cbflood");
-   return 0;
-}
-
 /*
  * RCU torture force-quiescent-state kthread.  Repeatedly induces
  * bursts of calls to force_quiescent_state(), increasing the probability
@@ -1460,11 +1397,10 @@ rcu_torture_stats_print(void)
n_rcu_torture_boosts,
atomic_long_read(_rcu_torture_timers));
torture_onoff_stats();
-   pr_cont("barrier: %ld/%ld:%ld ",
+   pr_cont("barrier: %ld/%ld:%ld\n",
n_barrier_successes,
n_barrier_attempts,
n_rcu_torture_barrier_error);
-   pr_cont("cbflood: %ld\n", atomic_long_read(_cbfloods));
 
pr_alert("%s%s ", torture_type, TORTURE_FLAG);
if (atomic_read(_rcu_torture_mberror) != 0 ||
@@ -2093,8 +2029,6 @@ rcu_torture_cleanup(void)
 cur_ops->name, gp_seq, flags);
torture_stop_kthread(rcu_torture_stats, stats_task);
torture_stop_kthread(rcu_torture_fqs, fqs_task);
-   for (i = 0; i < ncbflooders; i++)
-   torture_stop_kthread(rcu_torture_cbflood, cbflood_task[i]);
if (rcu_torture_can_boost())
cpuhp_remove_state(rcutor_hp);
 
@@ -2377,24 +2311,6 @@ rcu_torture_init(void)
goto unwind;
if (object_debug)
rcu_test_debug_objects();
-   if (cbflood_n_burst > 0) {
-   /*