From 54bb03ca7635d54dee1466ef885084333e40064a Mon Sep 17 00:00:00 2001 From: Olivier Dion Date: Thu, 21 Dec 2023 10:27:18 -0500 Subject: [PATCH] rcutorture: Check histogram of ages Ensure that the histogram of ages for all threads are valid after a stress test. Change-Id: Iadc46f47fe8835ac0e2d8967b6a16a83335a9541 Signed-off-by: Olivier Dion Signed-off-by: Mathieu Desnoyers --- tests/regression/rcutorture.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/regression/rcutorture.h b/tests/regression/rcutorture.h index 01f6456..441ff79 100644 --- a/tests/regression/rcutorture.h +++ b/tests/regression/rcutorture.h @@ -527,6 +527,7 @@ int stresstest(int nreaders) int t; long long *p; long long sum; + int ret; init_per_thread(n_reads_pt, 0LL); for_each_thread(t) { @@ -552,11 +553,19 @@ int stresstest(int nreaders) n_reads, n_updates, n_mberror); rdiag_start(); rdiag("rcu_stress_count:"); + ret = 0; for (i = 0; i <= RCU_STRESS_PIPE_LEN; i++) { sum = 0LL; for_each_thread(t) { sum += per_thread(rcu_stress_count, t)[i]; } + /* + * If any entries past the first two are non-zero, RCU is + * broken. See details above about rcu_stress_count. + */ + if (i > 1 && sum != 0) { + ret = -1; + } rdiag(" %lld", sum); } rdiag_end(); @@ -564,10 +573,9 @@ int stresstest(int nreaders) diag("Deallocating per-CPU call_rcu threads."); free_all_cpu_call_rcu_data(); } - if (!n_mberror) - return 0; - else - return -1; + if (n_mberror) + ret = -1; + return ret; } /* -- 2.34.1