linux/kernel/rcutorture.c
<<
>>
Prefs
   1/*
   2 * Read-Copy Update module-based torture test facility
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License as published by
   6 * the Free Software Foundation; either version 2 of the License, or
   7 * (at your option) any later version.
   8 *
   9 * This program is distributed in the hope that it will be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12 * GNU General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU General Public License
  15 * along with this program; if not, write to the Free Software
  16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17 *
  18 * Copyright (C) IBM Corporation, 2005, 2006
  19 *
  20 * Authors: Paul E. McKenney <paulmck@us.ibm.com>
  21 *        Josh Triplett <josh@freedesktop.org>
  22 *
  23 * See also:  Documentation/RCU/torture.txt
  24 */
  25#include <linux/types.h>
  26#include <linux/kernel.h>
  27#include <linux/init.h>
  28#include <linux/module.h>
  29#include <linux/kthread.h>
  30#include <linux/err.h>
  31#include <linux/spinlock.h>
  32#include <linux/smp.h>
  33#include <linux/rcupdate.h>
  34#include <linux/interrupt.h>
  35#include <linux/sched.h>
  36#include <linux/atomic.h>
  37#include <linux/bitops.h>
  38#include <linux/completion.h>
  39#include <linux/moduleparam.h>
  40#include <linux/percpu.h>
  41#include <linux/notifier.h>
  42#include <linux/reboot.h>
  43#include <linux/freezer.h>
  44#include <linux/cpu.h>
  45#include <linux/delay.h>
  46#include <linux/stat.h>
  47#include <linux/srcu.h>
  48#include <linux/slab.h>
  49#include <asm/byteorder.h>
  50
  51MODULE_LICENSE("GPL");
  52MODULE_AUTHOR("Paul E. McKenney <paulmck@us.ibm.com> and Josh Triplett <josh@freedesktop.org>");
  53
  54static int nreaders = -1;       /* # reader threads, defaults to 2*ncpus */
  55static int nfakewriters = 4;    /* # fake writer threads */
  56static int stat_interval;       /* Interval between stats, in seconds. */
  57                                /*  Defaults to "only at end of test". */
  58static bool verbose;            /* Print more debug info. */
  59static bool test_no_idle_hz;    /* Test RCU's support for tickless idle CPUs. */
  60static int shuffle_interval = 3; /* Interval between shuffles (in sec)*/
  61static int stutter = 5;         /* Start/stop testing interval (in sec) */
  62static int irqreader = 1;       /* RCU readers from irq (timers). */
  63static int fqs_duration;        /* Duration of bursts (us), 0 to disable. */
  64static int fqs_holdoff;         /* Hold time within burst (us). */
  65static int fqs_stutter = 3;     /* Wait time between bursts (s). */
  66static int n_barrier_cbs;       /* Number of callbacks to test RCU barriers. */
  67static int onoff_interval;      /* Wait time between CPU hotplugs, 0=disable. */
  68static int onoff_holdoff;       /* Seconds after boot before CPU hotplugs. */
  69static int shutdown_secs;       /* Shutdown time (s).  <=0 for no shutdown. */
  70static int stall_cpu;           /* CPU-stall duration (s).  0 for no stall. */
  71static int stall_cpu_holdoff = 10; /* Time to wait until stall (s).  */
  72static int test_boost = 1;      /* Test RCU prio boost: 0=no, 1=maybe, 2=yes. */
  73static int test_boost_interval = 7; /* Interval between boost tests, seconds. */
  74static int test_boost_duration = 4; /* Duration of each boost test, seconds. */
  75static char *torture_type = "rcu"; /* What RCU implementation to torture. */
  76
  77module_param(nreaders, int, 0444);
  78MODULE_PARM_DESC(nreaders, "Number of RCU reader threads");
  79module_param(nfakewriters, int, 0444);
  80MODULE_PARM_DESC(nfakewriters, "Number of RCU fake writer threads");
  81module_param(stat_interval, int, 0644);
  82MODULE_PARM_DESC(stat_interval, "Number of seconds between stats printk()s");
  83module_param(verbose, bool, 0444);
  84MODULE_PARM_DESC(verbose, "Enable verbose debugging printk()s");
  85module_param(test_no_idle_hz, bool, 0444);
  86MODULE_PARM_DESC(test_no_idle_hz, "Test support for tickless idle CPUs");
  87module_param(shuffle_interval, int, 0444);
  88MODULE_PARM_DESC(shuffle_interval, "Number of seconds between shuffles");
  89module_param(stutter, int, 0444);
  90MODULE_PARM_DESC(stutter, "Number of seconds to run/halt test");
  91module_param(irqreader, int, 0444);
  92MODULE_PARM_DESC(irqreader, "Allow RCU readers from irq handlers");
  93module_param(fqs_duration, int, 0444);
  94MODULE_PARM_DESC(fqs_duration, "Duration of fqs bursts (us)");
  95module_param(fqs_holdoff, int, 0444);
  96MODULE_PARM_DESC(fqs_holdoff, "Holdoff time within fqs bursts (us)");
  97module_param(fqs_stutter, int, 0444);
  98MODULE_PARM_DESC(fqs_stutter, "Wait time between fqs bursts (s)");
  99module_param(n_barrier_cbs, int, 0444);
 100MODULE_PARM_DESC(n_barrier_cbs, "# of callbacks/kthreads for barrier testing");
 101module_param(onoff_interval, int, 0444);
 102MODULE_PARM_DESC(onoff_interval, "Time between CPU hotplugs (s), 0=disable");
 103module_param(onoff_holdoff, int, 0444);
 104MODULE_PARM_DESC(onoff_holdoff, "Time after boot before CPU hotplugs (s)");
 105module_param(shutdown_secs, int, 0444);
 106MODULE_PARM_DESC(shutdown_secs, "Shutdown time (s), zero to disable.");
 107module_param(stall_cpu, int, 0444);
 108MODULE_PARM_DESC(stall_cpu, "Stall duration (s), zero to disable.");
 109module_param(stall_cpu_holdoff, int, 0444);
 110MODULE_PARM_DESC(stall_cpu_holdoff, "Time to wait before starting stall (s).");
 111module_param(test_boost, int, 0444);
 112MODULE_PARM_DESC(test_boost, "Test RCU prio boost: 0=no, 1=maybe, 2=yes.");
 113module_param(test_boost_interval, int, 0444);
 114MODULE_PARM_DESC(test_boost_interval, "Interval between boost tests, seconds.");
 115module_param(test_boost_duration, int, 0444);
 116MODULE_PARM_DESC(test_boost_duration, "Duration of each boost test, seconds.");
 117module_param(torture_type, charp, 0444);
 118MODULE_PARM_DESC(torture_type, "Type of RCU to torture (rcu, rcu_bh, srcu)");
 119
 120#define TORTURE_FLAG "-torture:"
 121#define PRINTK_STRING(s) \
 122        do { printk(KERN_ALERT "%s" TORTURE_FLAG s "\n", torture_type); } while (0)
 123#define VERBOSE_PRINTK_STRING(s) \
 124        do { if (verbose) printk(KERN_ALERT "%s" TORTURE_FLAG s "\n", torture_type); } while (0)
 125#define VERBOSE_PRINTK_ERRSTRING(s) \
 126        do { if (verbose) printk(KERN_ALERT "%s" TORTURE_FLAG "!!! " s "\n", torture_type); } while (0)
 127
 128static char printk_buf[4096];
 129
 130static int nrealreaders;
 131static struct task_struct *writer_task;
 132static struct task_struct **fakewriter_tasks;
 133static struct task_struct **reader_tasks;
 134static struct task_struct *stats_task;
 135static struct task_struct *shuffler_task;
 136static struct task_struct *stutter_task;
 137static struct task_struct *fqs_task;
 138static struct task_struct *boost_tasks[NR_CPUS];
 139static struct task_struct *shutdown_task;
 140#ifdef CONFIG_HOTPLUG_CPU
 141static struct task_struct *onoff_task;
 142#endif /* #ifdef CONFIG_HOTPLUG_CPU */
 143static struct task_struct *stall_task;
 144static struct task_struct **barrier_cbs_tasks;
 145static struct task_struct *barrier_task;
 146
 147#define RCU_TORTURE_PIPE_LEN 10
 148
 149struct rcu_torture {
 150        struct rcu_head rtort_rcu;
 151        int rtort_pipe_count;
 152        struct list_head rtort_free;
 153        int rtort_mbtest;
 154};
 155
 156static LIST_HEAD(rcu_torture_freelist);
 157static struct rcu_torture __rcu *rcu_torture_current;
 158static unsigned long rcu_torture_current_version;
 159static struct rcu_torture rcu_tortures[10 * RCU_TORTURE_PIPE_LEN];
 160static DEFINE_SPINLOCK(rcu_torture_lock);
 161static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_count) =
 162        { 0 };
 163static DEFINE_PER_CPU(long [RCU_TORTURE_PIPE_LEN + 1], rcu_torture_batch) =
 164        { 0 };
 165static atomic_t rcu_torture_wcount[RCU_TORTURE_PIPE_LEN + 1];
 166static atomic_t n_rcu_torture_alloc;
 167static atomic_t n_rcu_torture_alloc_fail;
 168static atomic_t n_rcu_torture_free;
 169static atomic_t n_rcu_torture_mberror;
 170static atomic_t n_rcu_torture_error;
 171static long n_rcu_torture_barrier_error;
 172static long n_rcu_torture_boost_ktrerror;
 173static long n_rcu_torture_boost_rterror;
 174static long n_rcu_torture_boost_failure;
 175static long n_rcu_torture_boosts;
 176static long n_rcu_torture_timers;
 177static long n_offline_attempts;
 178static long n_offline_successes;
 179static long n_online_attempts;
 180static long n_online_successes;
 181static long n_barrier_attempts;
 182static long n_barrier_successes;
 183static struct list_head rcu_torture_removed;
 184static cpumask_var_t shuffle_tmp_mask;
 185
 186static int stutter_pause_test;
 187
 188#if defined(MODULE) || defined(CONFIG_RCU_TORTURE_TEST_RUNNABLE)
 189#define RCUTORTURE_RUNNABLE_INIT 1
 190#else
 191#define RCUTORTURE_RUNNABLE_INIT 0
 192#endif
 193int rcutorture_runnable = RCUTORTURE_RUNNABLE_INIT;
 194module_param(rcutorture_runnable, int, 0444);
 195MODULE_PARM_DESC(rcutorture_runnable, "Start rcutorture at boot");
 196
 197#if defined(CONFIG_RCU_BOOST) && !defined(CONFIG_HOTPLUG_CPU)
 198#define rcu_can_boost() 1
 199#else /* #if defined(CONFIG_RCU_BOOST) && !defined(CONFIG_HOTPLUG_CPU) */
 200#define rcu_can_boost() 0
 201#endif /* #else #if defined(CONFIG_RCU_BOOST) && !defined(CONFIG_HOTPLUG_CPU) */
 202
 203static unsigned long shutdown_time;     /* jiffies to system shutdown. */
 204static unsigned long boost_starttime;   /* jiffies of next boost test start. */
 205DEFINE_MUTEX(boost_mutex);              /* protect setting boost_starttime */
 206                                        /*  and boost task create/destroy. */
 207static atomic_t barrier_cbs_count;      /* Barrier callbacks registered. */
 208static bool barrier_phase;              /* Test phase. */
 209static atomic_t barrier_cbs_invoked;    /* Barrier callbacks invoked. */
 210static wait_queue_head_t *barrier_cbs_wq; /* Coordinate barrier testing. */
 211static DECLARE_WAIT_QUEUE_HEAD(barrier_wq);
 212
 213/* Mediate rmmod and system shutdown.  Concurrent rmmod & shutdown illegal! */
 214
 215#define FULLSTOP_DONTSTOP 0     /* Normal operation. */
 216#define FULLSTOP_SHUTDOWN 1     /* System shutdown with rcutorture running. */
 217#define FULLSTOP_RMMOD    2     /* Normal rmmod of rcutorture. */
 218static int fullstop = FULLSTOP_RMMOD;
 219/*
 220 * Protect fullstop transitions and spawning of kthreads.
 221 */
 222static DEFINE_MUTEX(fullstop_mutex);
 223
 224/* Forward reference. */
 225static void rcu_torture_cleanup(void);
 226
 227/*
 228 * Detect and respond to a system shutdown.
 229 */
 230static int
 231rcutorture_shutdown_notify(struct notifier_block *unused1,
 232                           unsigned long unused2, void *unused3)
 233{
 234        mutex_lock(&fullstop_mutex);
 235        if (fullstop == FULLSTOP_DONTSTOP)
 236                fullstop = FULLSTOP_SHUTDOWN;
 237        else
 238                printk(KERN_WARNING /* but going down anyway, so... */
 239                       "Concurrent 'rmmod rcutorture' and shutdown illegal!\n");
 240        mutex_unlock(&fullstop_mutex);
 241        return NOTIFY_DONE;
 242}
 243
 244/*
 245 * Absorb kthreads into a kernel function that won't return, so that
 246 * they won't ever access module text or data again.
 247 */
 248static void rcutorture_shutdown_absorb(char *title)
 249{
 250        if (ACCESS_ONCE(fullstop) == FULLSTOP_SHUTDOWN) {
 251                printk(KERN_NOTICE
 252                       "rcutorture thread %s parking due to system shutdown\n",
 253                       title);
 254                schedule_timeout_uninterruptible(MAX_SCHEDULE_TIMEOUT);
 255        }
 256}
 257
 258/*
 259 * Allocate an element from the rcu_tortures pool.
 260 */
 261static struct rcu_torture *
 262rcu_torture_alloc(void)
 263{
 264        struct list_head *p;
 265
 266        spin_lock_bh(&rcu_torture_lock);
 267        if (list_empty(&rcu_torture_freelist)) {
 268                atomic_inc(&n_rcu_torture_alloc_fail);
 269                spin_unlock_bh(&rcu_torture_lock);
 270                return NULL;
 271        }
 272        atomic_inc(&n_rcu_torture_alloc);
 273        p = rcu_torture_freelist.next;
 274        list_del_init(p);
 275        spin_unlock_bh(&rcu_torture_lock);
 276        return container_of(p, struct rcu_torture, rtort_free);
 277}
 278
 279/*
 280 * Free an element to the rcu_tortures pool.
 281 */
 282static void
 283rcu_torture_free(struct rcu_torture *p)
 284{
 285        atomic_inc(&n_rcu_torture_free);
 286        spin_lock_bh(&rcu_torture_lock);
 287        list_add_tail(&p->rtort_free, &rcu_torture_freelist);
 288        spin_unlock_bh(&rcu_torture_lock);
 289}
 290
 291struct rcu_random_state {
 292        unsigned long rrs_state;
 293        long rrs_count;
 294};
 295
 296#define RCU_RANDOM_MULT 39916801  /* prime */
 297#define RCU_RANDOM_ADD  479001701 /* prime */
 298#define RCU_RANDOM_REFRESH 10000
 299
 300#define DEFINE_RCU_RANDOM(name) struct rcu_random_state name = { 0, 0 }
 301
 302/*
 303 * Crude but fast random-number generator.  Uses a linear congruential
 304 * generator, with occasional help from cpu_clock().
 305 */
 306static unsigned long
 307rcu_random(struct rcu_random_state *rrsp)
 308{
 309        if (--rrsp->rrs_count < 0) {
 310                rrsp->rrs_state += (unsigned long)local_clock();
 311                rrsp->rrs_count = RCU_RANDOM_REFRESH;
 312        }
 313        rrsp->rrs_state = rrsp->rrs_state * RCU_RANDOM_MULT + RCU_RANDOM_ADD;
 314        return swahw32(rrsp->rrs_state);
 315}
 316
 317static void
 318rcu_stutter_wait(char *title)
 319{
 320        while (stutter_pause_test || !rcutorture_runnable) {
 321                if (rcutorture_runnable)
 322                        schedule_timeout_interruptible(1);
 323                else
 324                        schedule_timeout_interruptible(round_jiffies_relative(HZ));
 325                rcutorture_shutdown_absorb(title);
 326        }
 327}
 328
 329/*
 330 * Operations vector for selecting different types of tests.
 331 */
 332
 333struct rcu_torture_ops {
 334        void (*init)(void);
 335        void (*cleanup)(void);
 336        int (*readlock)(void);
 337        void (*read_delay)(struct rcu_random_state *rrsp);
 338        void (*readunlock)(int idx);
 339        int (*completed)(void);
 340        void (*deferred_free)(struct rcu_torture *p);
 341        void (*sync)(void);
 342        void (*call)(struct rcu_head *head, void (*func)(struct rcu_head *rcu));
 343        void (*cb_barrier)(void);
 344        void (*fqs)(void);
 345        int (*stats)(char *page);
 346        int irq_capable;
 347        int can_boost;
 348        char *name;
 349};
 350
 351static struct rcu_torture_ops *cur_ops;
 352
 353/*
 354 * Definitions for rcu torture testing.
 355 */
 356
 357static int rcu_torture_read_lock(void) __acquires(RCU)
 358{
 359        rcu_read_lock();
 360        return 0;
 361}
 362
 363static void rcu_read_delay(struct rcu_random_state *rrsp)
 364{
 365        const unsigned long shortdelay_us = 200;
 366        const unsigned long longdelay_ms = 50;
 367
 368        /* We want a short delay sometimes to make a reader delay the grace
 369         * period, and we want a long delay occasionally to trigger
 370         * force_quiescent_state. */
 371
 372        if (!(rcu_random(rrsp) % (nrealreaders * 2000 * longdelay_ms)))
 373                mdelay(longdelay_ms);
 374        if (!(rcu_random(rrsp) % (nrealreaders * 2 * shortdelay_us)))
 375                udelay(shortdelay_us);
 376#ifdef CONFIG_PREEMPT
 377        if (!preempt_count() && !(rcu_random(rrsp) % (nrealreaders * 20000)))
 378                preempt_schedule();  /* No QS if preempt_disable() in effect */
 379#endif
 380}
 381
 382static void rcu_torture_read_unlock(int idx) __releases(RCU)
 383{
 384        rcu_read_unlock();
 385}
 386
 387static int rcu_torture_completed(void)
 388{
 389        return rcu_batches_completed();
 390}
 391
 392static void
 393rcu_torture_cb(struct rcu_head *p)
 394{
 395        int i;
 396        struct rcu_torture *rp = container_of(p, struct rcu_torture, rtort_rcu);
 397
 398        if (fullstop != FULLSTOP_DONTSTOP) {
 399                /* Test is ending, just drop callbacks on the floor. */
 400                /* The next initialization will pick up the pieces. */
 401                return;
 402        }
 403        i = rp->rtort_pipe_count;
 404        if (i > RCU_TORTURE_PIPE_LEN)
 405                i = RCU_TORTURE_PIPE_LEN;
 406        atomic_inc(&rcu_torture_wcount[i]);
 407        if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
 408                rp->rtort_mbtest = 0;
 409                rcu_torture_free(rp);
 410        } else {
 411                cur_ops->deferred_free(rp);
 412        }
 413}
 414
 415static int rcu_no_completed(void)
 416{
 417        return 0;
 418}
 419
 420static void rcu_torture_deferred_free(struct rcu_torture *p)
 421{
 422        call_rcu(&p->rtort_rcu, rcu_torture_cb);
 423}
 424
 425static struct rcu_torture_ops rcu_ops = {
 426        .init           = NULL,
 427        .cleanup        = NULL,
 428        .readlock       = rcu_torture_read_lock,
 429        .read_delay     = rcu_read_delay,
 430        .readunlock     = rcu_torture_read_unlock,
 431        .completed      = rcu_torture_completed,
 432        .deferred_free  = rcu_torture_deferred_free,
 433        .sync           = synchronize_rcu,
 434        .call           = call_rcu,
 435        .cb_barrier     = rcu_barrier,
 436        .fqs            = rcu_force_quiescent_state,
 437        .stats          = NULL,
 438        .irq_capable    = 1,
 439        .can_boost      = rcu_can_boost(),
 440        .name           = "rcu"
 441};
 442
 443static void rcu_sync_torture_deferred_free(struct rcu_torture *p)
 444{
 445        int i;
 446        struct rcu_torture *rp;
 447        struct rcu_torture *rp1;
 448
 449        cur_ops->sync();
 450        list_add(&p->rtort_free, &rcu_torture_removed);
 451        list_for_each_entry_safe(rp, rp1, &rcu_torture_removed, rtort_free) {
 452                i = rp->rtort_pipe_count;
 453                if (i > RCU_TORTURE_PIPE_LEN)
 454                        i = RCU_TORTURE_PIPE_LEN;
 455                atomic_inc(&rcu_torture_wcount[i]);
 456                if (++rp->rtort_pipe_count >= RCU_TORTURE_PIPE_LEN) {
 457                        rp->rtort_mbtest = 0;
 458                        list_del(&rp->rtort_free);
 459                        rcu_torture_free(rp);
 460                }
 461        }
 462}
 463
 464static void rcu_sync_torture_init(void)
 465{
 466        INIT_LIST_HEAD(&rcu_torture_removed);
 467}
 468
 469static struct rcu_torture_ops rcu_sync_ops = {
 470        .init           = rcu_sync_torture_init,
 471        .cleanup        = NULL,
 472        .readlock       = rcu_torture_read_lock,
 473        .read_delay     = rcu_read_delay,
 474        .readunlock     = rcu_torture_read_unlock,
 475        .completed      = rcu_torture_completed,
 476        .deferred_free  = rcu_sync_torture_deferred_free,
 477        .sync           = synchronize_rcu,
 478        .call           = NULL,
 479        .cb_barrier     = NULL,
 480        .fqs            = rcu_force_quiescent_state,
 481        .stats          = NULL,
 482        .irq_capable    = 1,
 483        .can_boost      = rcu_can_boost(),
 484        .name           = "rcu_sync"
 485};
 486
 487static struct rcu_torture_ops rcu_expedited_ops = {
 488        .init           = rcu_sync_torture_init,
 489        .cleanup        = NULL,
 490        .readlock       = rcu_torture_read_lock,
 491        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 492        .readunlock     = rcu_torture_read_unlock,
 493        .completed      = rcu_no_completed,
 494        .deferred_free  = rcu_sync_torture_deferred_free,
 495        .sync           = synchronize_rcu_expedited,
 496        .call           = NULL,
 497        .cb_barrier     = NULL,
 498        .fqs            = rcu_force_quiescent_state,
 499        .stats          = NULL,
 500        .irq_capable    = 1,
 501        .can_boost      = rcu_can_boost(),
 502        .name           = "rcu_expedited"
 503};
 504
 505/*
 506 * Definitions for rcu_bh torture testing.
 507 */
 508
 509static int rcu_bh_torture_read_lock(void) __acquires(RCU_BH)
 510{
 511        rcu_read_lock_bh();
 512        return 0;
 513}
 514
 515static void rcu_bh_torture_read_unlock(int idx) __releases(RCU_BH)
 516{
 517        rcu_read_unlock_bh();
 518}
 519
 520static int rcu_bh_torture_completed(void)
 521{
 522        return rcu_batches_completed_bh();
 523}
 524
 525static void rcu_bh_torture_deferred_free(struct rcu_torture *p)
 526{
 527        call_rcu_bh(&p->rtort_rcu, rcu_torture_cb);
 528}
 529
 530static struct rcu_torture_ops rcu_bh_ops = {
 531        .init           = NULL,
 532        .cleanup        = NULL,
 533        .readlock       = rcu_bh_torture_read_lock,
 534        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 535        .readunlock     = rcu_bh_torture_read_unlock,
 536        .completed      = rcu_bh_torture_completed,
 537        .deferred_free  = rcu_bh_torture_deferred_free,
 538        .sync           = synchronize_rcu_bh,
 539        .call           = call_rcu_bh,
 540        .cb_barrier     = rcu_barrier_bh,
 541        .fqs            = rcu_bh_force_quiescent_state,
 542        .stats          = NULL,
 543        .irq_capable    = 1,
 544        .name           = "rcu_bh"
 545};
 546
 547static struct rcu_torture_ops rcu_bh_sync_ops = {
 548        .init           = rcu_sync_torture_init,
 549        .cleanup        = NULL,
 550        .readlock       = rcu_bh_torture_read_lock,
 551        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 552        .readunlock     = rcu_bh_torture_read_unlock,
 553        .completed      = rcu_bh_torture_completed,
 554        .deferred_free  = rcu_sync_torture_deferred_free,
 555        .sync           = synchronize_rcu_bh,
 556        .call           = NULL,
 557        .cb_barrier     = NULL,
 558        .fqs            = rcu_bh_force_quiescent_state,
 559        .stats          = NULL,
 560        .irq_capable    = 1,
 561        .name           = "rcu_bh_sync"
 562};
 563
 564static struct rcu_torture_ops rcu_bh_expedited_ops = {
 565        .init           = rcu_sync_torture_init,
 566        .cleanup        = NULL,
 567        .readlock       = rcu_bh_torture_read_lock,
 568        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 569        .readunlock     = rcu_bh_torture_read_unlock,
 570        .completed      = rcu_bh_torture_completed,
 571        .deferred_free  = rcu_sync_torture_deferred_free,
 572        .sync           = synchronize_rcu_bh_expedited,
 573        .call           = NULL,
 574        .cb_barrier     = NULL,
 575        .fqs            = rcu_bh_force_quiescent_state,
 576        .stats          = NULL,
 577        .irq_capable    = 1,
 578        .name           = "rcu_bh_expedited"
 579};
 580
 581/*
 582 * Definitions for srcu torture testing.
 583 */
 584
 585static struct srcu_struct srcu_ctl;
 586
 587static void srcu_torture_init(void)
 588{
 589        init_srcu_struct(&srcu_ctl);
 590        rcu_sync_torture_init();
 591}
 592
 593static void srcu_torture_cleanup(void)
 594{
 595        synchronize_srcu(&srcu_ctl);
 596        cleanup_srcu_struct(&srcu_ctl);
 597}
 598
 599static int srcu_torture_read_lock(void) __acquires(&srcu_ctl)
 600{
 601        return srcu_read_lock(&srcu_ctl);
 602}
 603
 604static void srcu_read_delay(struct rcu_random_state *rrsp)
 605{
 606        long delay;
 607        const long uspertick = 1000000 / HZ;
 608        const long longdelay = 10;
 609
 610        /* We want there to be long-running readers, but not all the time. */
 611
 612        delay = rcu_random(rrsp) % (nrealreaders * 2 * longdelay * uspertick);
 613        if (!delay)
 614                schedule_timeout_interruptible(longdelay);
 615        else
 616                rcu_read_delay(rrsp);
 617}
 618
 619static void srcu_torture_read_unlock(int idx) __releases(&srcu_ctl)
 620{
 621        srcu_read_unlock(&srcu_ctl, idx);
 622}
 623
 624static int srcu_torture_completed(void)
 625{
 626        return srcu_batches_completed(&srcu_ctl);
 627}
 628
 629static void srcu_torture_deferred_free(struct rcu_torture *rp)
 630{
 631        call_srcu(&srcu_ctl, &rp->rtort_rcu, rcu_torture_cb);
 632}
 633
 634static void srcu_torture_synchronize(void)
 635{
 636        synchronize_srcu(&srcu_ctl);
 637}
 638
 639static void srcu_torture_call(struct rcu_head *head,
 640                              void (*func)(struct rcu_head *head))
 641{
 642        call_srcu(&srcu_ctl, head, func);
 643}
 644
 645static void srcu_torture_barrier(void)
 646{
 647        srcu_barrier(&srcu_ctl);
 648}
 649
 650static int srcu_torture_stats(char *page)
 651{
 652        int cnt = 0;
 653        int cpu;
 654        int idx = srcu_ctl.completed & 0x1;
 655
 656        cnt += sprintf(&page[cnt], "%s%s per-CPU(idx=%d):",
 657                       torture_type, TORTURE_FLAG, idx);
 658        for_each_possible_cpu(cpu) {
 659                cnt += sprintf(&page[cnt], " %d(%lu,%lu)", cpu,
 660                               per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[!idx],
 661                               per_cpu_ptr(srcu_ctl.per_cpu_ref, cpu)->c[idx]);
 662        }
 663        cnt += sprintf(&page[cnt], "\n");
 664        return cnt;
 665}
 666
 667static struct rcu_torture_ops srcu_ops = {
 668        .init           = srcu_torture_init,
 669        .cleanup        = srcu_torture_cleanup,
 670        .readlock       = srcu_torture_read_lock,
 671        .read_delay     = srcu_read_delay,
 672        .readunlock     = srcu_torture_read_unlock,
 673        .completed      = srcu_torture_completed,
 674        .deferred_free  = srcu_torture_deferred_free,
 675        .sync           = srcu_torture_synchronize,
 676        .call           = srcu_torture_call,
 677        .cb_barrier     = srcu_torture_barrier,
 678        .stats          = srcu_torture_stats,
 679        .name           = "srcu"
 680};
 681
 682static struct rcu_torture_ops srcu_sync_ops = {
 683        .init           = srcu_torture_init,
 684        .cleanup        = srcu_torture_cleanup,
 685        .readlock       = srcu_torture_read_lock,
 686        .read_delay     = srcu_read_delay,
 687        .readunlock     = srcu_torture_read_unlock,
 688        .completed      = srcu_torture_completed,
 689        .deferred_free  = rcu_sync_torture_deferred_free,
 690        .sync           = srcu_torture_synchronize,
 691        .call           = NULL,
 692        .cb_barrier     = NULL,
 693        .stats          = srcu_torture_stats,
 694        .name           = "srcu_sync"
 695};
 696
 697static int srcu_torture_read_lock_raw(void) __acquires(&srcu_ctl)
 698{
 699        return srcu_read_lock_raw(&srcu_ctl);
 700}
 701
 702static void srcu_torture_read_unlock_raw(int idx) __releases(&srcu_ctl)
 703{
 704        srcu_read_unlock_raw(&srcu_ctl, idx);
 705}
 706
 707static struct rcu_torture_ops srcu_raw_ops = {
 708        .init           = srcu_torture_init,
 709        .cleanup        = srcu_torture_cleanup,
 710        .readlock       = srcu_torture_read_lock_raw,
 711        .read_delay     = srcu_read_delay,
 712        .readunlock     = srcu_torture_read_unlock_raw,
 713        .completed      = srcu_torture_completed,
 714        .deferred_free  = srcu_torture_deferred_free,
 715        .sync           = srcu_torture_synchronize,
 716        .call           = NULL,
 717        .cb_barrier     = NULL,
 718        .stats          = srcu_torture_stats,
 719        .name           = "srcu_raw"
 720};
 721
 722static struct rcu_torture_ops srcu_raw_sync_ops = {
 723        .init           = srcu_torture_init,
 724        .cleanup        = srcu_torture_cleanup,
 725        .readlock       = srcu_torture_read_lock_raw,
 726        .read_delay     = srcu_read_delay,
 727        .readunlock     = srcu_torture_read_unlock_raw,
 728        .completed      = srcu_torture_completed,
 729        .deferred_free  = rcu_sync_torture_deferred_free,
 730        .sync           = srcu_torture_synchronize,
 731        .call           = NULL,
 732        .cb_barrier     = NULL,
 733        .stats          = srcu_torture_stats,
 734        .name           = "srcu_raw_sync"
 735};
 736
 737static void srcu_torture_synchronize_expedited(void)
 738{
 739        synchronize_srcu_expedited(&srcu_ctl);
 740}
 741
 742static struct rcu_torture_ops srcu_expedited_ops = {
 743        .init           = srcu_torture_init,
 744        .cleanup        = srcu_torture_cleanup,
 745        .readlock       = srcu_torture_read_lock,
 746        .read_delay     = srcu_read_delay,
 747        .readunlock     = srcu_torture_read_unlock,
 748        .completed      = srcu_torture_completed,
 749        .deferred_free  = rcu_sync_torture_deferred_free,
 750        .sync           = srcu_torture_synchronize_expedited,
 751        .call           = NULL,
 752        .cb_barrier     = NULL,
 753        .stats          = srcu_torture_stats,
 754        .name           = "srcu_expedited"
 755};
 756
 757/*
 758 * Definitions for sched torture testing.
 759 */
 760
 761static int sched_torture_read_lock(void)
 762{
 763        preempt_disable();
 764        return 0;
 765}
 766
 767static void sched_torture_read_unlock(int idx)
 768{
 769        preempt_enable();
 770}
 771
 772static void rcu_sched_torture_deferred_free(struct rcu_torture *p)
 773{
 774        call_rcu_sched(&p->rtort_rcu, rcu_torture_cb);
 775}
 776
 777static struct rcu_torture_ops sched_ops = {
 778        .init           = rcu_sync_torture_init,
 779        .cleanup        = NULL,
 780        .readlock       = sched_torture_read_lock,
 781        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 782        .readunlock     = sched_torture_read_unlock,
 783        .completed      = rcu_no_completed,
 784        .deferred_free  = rcu_sched_torture_deferred_free,
 785        .sync           = synchronize_sched,
 786        .cb_barrier     = rcu_barrier_sched,
 787        .fqs            = rcu_sched_force_quiescent_state,
 788        .stats          = NULL,
 789        .irq_capable    = 1,
 790        .name           = "sched"
 791};
 792
 793static struct rcu_torture_ops sched_sync_ops = {
 794        .init           = rcu_sync_torture_init,
 795        .cleanup        = NULL,
 796        .readlock       = sched_torture_read_lock,
 797        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 798        .readunlock     = sched_torture_read_unlock,
 799        .completed      = rcu_no_completed,
 800        .deferred_free  = rcu_sync_torture_deferred_free,
 801        .sync           = synchronize_sched,
 802        .cb_barrier     = NULL,
 803        .fqs            = rcu_sched_force_quiescent_state,
 804        .stats          = NULL,
 805        .name           = "sched_sync"
 806};
 807
 808static struct rcu_torture_ops sched_expedited_ops = {
 809        .init           = rcu_sync_torture_init,
 810        .cleanup        = NULL,
 811        .readlock       = sched_torture_read_lock,
 812        .read_delay     = rcu_read_delay,  /* just reuse rcu's version. */
 813        .readunlock     = sched_torture_read_unlock,
 814        .completed      = rcu_no_completed,
 815        .deferred_free  = rcu_sync_torture_deferred_free,
 816        .sync           = synchronize_sched_expedited,
 817        .cb_barrier     = NULL,
 818        .fqs            = rcu_sched_force_quiescent_state,
 819        .stats          = NULL,
 820        .irq_capable    = 1,
 821        .name           = "sched_expedited"
 822};
 823
 824/*
 825 * RCU torture priority-boost testing.  Runs one real-time thread per
 826 * CPU for moderate bursts, repeatedly registering RCU callbacks and
 827 * spinning waiting for them to be invoked.  If a given callback takes
 828 * too long to be invoked, we assume that priority inversion has occurred.
 829 */
 830
 831struct rcu_boost_inflight {
 832        struct rcu_head rcu;
 833        int inflight;
 834};
 835
 836static void rcu_torture_boost_cb(struct rcu_head *head)
 837{
 838        struct rcu_boost_inflight *rbip =
 839                container_of(head, struct rcu_boost_inflight, rcu);
 840
 841        smp_mb(); /* Ensure RCU-core accesses precede clearing ->inflight */
 842        rbip->inflight = 0;
 843}
 844
 845static int rcu_torture_boost(void *arg)
 846{
 847        unsigned long call_rcu_time;
 848        unsigned long endtime;
 849        unsigned long oldstarttime;
 850        struct rcu_boost_inflight rbi = { .inflight = 0 };
 851        struct sched_param sp;
 852
 853        VERBOSE_PRINTK_STRING("rcu_torture_boost started");
 854
 855        /* Set real-time priority. */
 856        sp.sched_priority = 1;
 857        if (sched_setscheduler(current, SCHED_FIFO, &sp) < 0) {
 858                VERBOSE_PRINTK_STRING("rcu_torture_boost RT prio failed!");
 859                n_rcu_torture_boost_rterror++;
 860        }
 861
 862        init_rcu_head_on_stack(&rbi.rcu);
 863        /* Each pass through the following loop does one boost-test cycle. */
 864        do {
 865                /* Wait for the next test interval. */
 866                oldstarttime = boost_starttime;
 867                while (ULONG_CMP_LT(jiffies, oldstarttime)) {
 868                        schedule_timeout_uninterruptible(1);
 869                        rcu_stutter_wait("rcu_torture_boost");
 870                        if (kthread_should_stop() ||
 871                            fullstop != FULLSTOP_DONTSTOP)
 872                                goto checkwait;
 873                }
 874
 875                /* Do one boost-test interval. */
 876                endtime = oldstarttime + test_boost_duration * HZ;
 877                call_rcu_time = jiffies;
 878                while (ULONG_CMP_LT(jiffies, endtime)) {
 879                        /* If we don't have a callback in flight, post one. */
 8f">stats          = rcu);
 = { .endtime)) {
 871="L877"> 877   1        smp_mb(sts, ss="befss="e accesses pre= 1callback in flight, post one. */
 872    s          = rcu);
 = { .sched_priority = 1;
 872    s          call_rcuinit_rcu_head_on_stack(&rbi.rtort_rcu,  8f">staass="sref">ULONG_CMP_LT( 877                );
 872    s          rttime + test_boost_duration *  877   ration * endtime)) {
 872    s                       VERBOSE_PRINTK_STRING("rcu_torture_boost");
 872    s          boost_rterror" classo;rcuuct n_rcu_torture_boost_rterror++;
 8688888888873"> 873                }
 879    s                       call_rcu_time = jiffies;
 8f"73"> 873                }
 87139"> 839      d_re     873                }
 872                        rcu_stutter_wait("rcu_torture_boost");
 872                        if (kthread_should_stop() ||
                            fullstop != FULLSTOP_DONTSTOP)
 87                            goto checkwait;
 873                }
 807
 824/*
 822222222222222222     /* Wait/*
 822222222222222222  Yes, clis is vulnerapab cla9"> 8elay"s, but such/*
 822222222222222222  elay"s simply can claco;lsass=g clvespan class="c/*
 822222222222222222  mment">/*  Besides, > * s="ru&quity",/*
 822222222222222222  so elay"s sstop"ass=rlayclveor m s=t/*
 822222222222222222 lback in flight, post one. */
 878                       oldstarttime = 
                   if (endtime)) {
               mutex_try"+code=sched_torturmutex_try"+cosref">init_rcu_head_on_stost_stmutex href="+code=boost_stmutexndtime" class="sref">endtime)) {
 86888888888s="sref">oldstarttime = call_rcu_time = endtime)) {
 879    L868"> 86888888888s="sref">oldstaoost_duratimment">/f="+code=test_boost_duratimment">/s="sref">test_boost_duration * HZ;
 8f"88888888s="sref">oldstaboost_rterror" clas = n_rcu_torture_boost_rterror++;
 871="L877"> 877   mutex_f="+code=sched_torturmutex_f="+cosref">init_rcu_head_on_stost_stmutex href="+code=boost_stmutexndtim_torture_boost_rterror++;
 872    bhouk_torture_boost_rterror++;
 87273"> 873                }
schedule_timeout_uninterruptible(1);
 873                }
 776
smp_mb(Go namclasdser_wacallback in flight, post one. */
                        rcu_stutter_wait("rcu_torture_boost");
 87ts                   if (oldstalstop !=  840
smp_mb(Ccode uply r exitcallback in flight, post one. */
 86             VERBOSE_PRINTK_STRING("rcu_torture_boost");
 85t;)d_sutdown_absorf="+code=rcu_tortur/span>)d_sutdown_absorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 87ts                   if (rcu);
 = { .FULLSTOP_DONTSTOP)
schedule_timeout_uninterruptible(1);
 856        smp_mb(sts,ordee" name="L829"> 8222222222222222utorture.c#L826" id9"L82692class="line" na7ure.c#L795" id8"L79589c id9"L8189 class     24"> 824 847        unsigned long call_rcu_time;
 848        unsigned long ( 877                rcu_boost_infli9ht 832        struct rcu_head <9 href="+c9de=rcu" class="sref">rcu9/a>;
93/span>
 8elay"s, 9ss="sref"9inflight;
 820-/a>   ref">sc namss="line" inducan class="comment"> */
 878      *"L828" "L82  820  (), inc">ss2222uot;probabilOlass="comment"> */

 83nc="L82sooldstarttime = h9ad
9837{
 9ref">rcu<9a>);
rbi = { . 877   mutex_f="+code=sche>
        unsig   #L828"#L7mai2222a>      d_re      #L828"#L7mai2222"L877"> 877   mutex_f="+code=sche>href="+c9a href="+code=rbip" clas9="sre94el/rcutorture.c#L863" id="L863" clas9id="L844"9class="line" name="L844"9 844<9a>
rcu_stutter_wait("rcu_torture_boost");
 856 9re_boost<9a>(void *oldst9torture.c9L846" id="L846" class="l9ne" n94class="line" name="L7href="+code=inf   #L79ume839      d_re      #L79ume839HZ;
 871="L877"> 877   mutex_f="+code=scheutorture.9#L847" id="L847" class="9ine" 94ef="+code=kthread_should_stop" class="sree" If we don't have a callback in flight, post one. */
      d_re      #L79ume839 948        unsigned l9ng endtime)) {
 me;
<9 href="kernel/rcutorture9c#L8494href="+code=boost_starttime" torture.c#L826" id9"L82692class=ine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824;
/f="+c class                       goto_boost_in9light 
      d_re      #L828"#L7mai2222"L87Z" class="sref">HZ   #OSE_PRINTK_STRING" clas   #OSE_PRIN"L877"> 877   mutex_f="+code=sched="L851" 9lass="line" name="L851">9851      d_re      #L828"#L7mai2222"L87Zclas 0            mutex_try"+code=sched_torturmutid="L853"9class="line" name="L853"9 853<95++;
endtime)) {
 an>);
kthrea"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84     =  87294
 84ud_torture_read_unlocu"sref">scop" class="sree"   #holdof
sp95class="line" name="L776"> 776
      d_re      #L828"#L7mai2222"L87Z-" class="sref">HZ   #holdof
 = 1;
9a hre95ure.c#L818" id9"L8189 class                       gotosetschedu9er" class="sref">sched_s9tsche95e.c#L877" id="L877" class="line" nam                     oldstalstop !=  856 9sp) &9t; 0) {
 840
smp_mb(Ccode uply r exitcallback in flight,post one. */
 86             name="L899"> 859             9  rcu_stutter_wait("rcu_torture_boost");
 87ts861" id="9861" class="line" name="9861">9861
rcu);
 = { .FULLSTOP_D   " id="L856" class="line" name="L856"> 856 9>init_rcu9head_on_stack(&<9 href9"+code=rbi" cline" name="L840"> 840
rcu);
 824 863      9 arg)
 866       9     96ndtime" class="sref">endtime = <9rttime 8elay"s, 9         9 while (sc namss="line" substifules a newhref="+f">ca clis is vulnerapab cla9"> 8elay"s, 9 p) &968" class="line" name="L968"> 96urred.
FULLSTOP_DOSE_PRI, 17" 2222uot;oldhref="+f">ca clis is vulnerapab cla9"> 8elay"s, 9 name="L89="+code=rcu_stutter_wait9 clas96ine" name="L830"> 830
oldstarttime = fullstop != 9a hrefhref="k   d long      9                        9 goto9 879
9a href"L80890class="line" name="L868"> st-test i9terval. */
 836 876HZoostbatchese_deferred_free,
 8729 href="+c9de=oldstarttime" class="9ref">9ldstarttime           = 9Z;
           = ) &9f="+code=ULONG_CMP_LT" c9ass="9ref">ULONG_CMPhref="k         = scop" class="sree"rand_free,
 86            79" class9"line" name="L879"> 879<9a>   9      ine" name="L862"> 86            7a>      9);
 = { .9a hre9761
rcu_stutter_wait("rcu_torture_boost");
 856 9        <9 href="+code=smp_mb" cla9s="sr9f">smp_mb(torture.c#L826" elasser_nicc#L795" id8"L7958elasser_nicc">scop" class="sree"ING" class="sref">VERBOSE_PRINTK_ST19lass="line" name="L856"> 856 9 /a>     9/a>          = ini9_rcu_head_on_sde=oldstarttime" class="sref">oldst9_boost&qu9t;);
 824 879    s          r9time<9a> + HZoost);
 8729ure.c#L789" id8"L78688class="line"9name=9L8name="L872"> 872clascss="sref">callrL845" id="L845" cot;rcZ"/a>        . 872    s         rnelinue389class="line" name="L872"> 8729up) &9      }
callrL845" id="L845" cot;rcine" name="L845"> 84r"L87_pipee_duclass="sref">VERBr"L87_pipee_duclt;rcZ" torture_read_unlock" class="sref"9ies" clas9="sref">jiffies;
 84ud_torture_read_unlocu"sref">scop" class="sree"oostrclao" class="sref">Voostrclao"CMP_LT( 8729ua>      9           }
HZoostderure.3nc=_stop" class="sref">Voostderure.3nc=_stop"">scop" class="sree"oostLLSTOP_DOSE_PRI  8729d8"L792899lass="line" name="L872">9872                        VERBOSE_PRINTK_Z"/a>        .VERBwri   _r9elsss="line" name="L862"> 86            ="sref">r9u_stutter_wait("rcu_torcss="sref">callrL845" id="L845" cot;rcine" name="L845"> 84r"L87_mbtortass="sref">VERBr"L87_mbtortt;rcZ" rture_boost_cb" class="sru_tortur9/a>      9                 if (scop" class="sree"oostLLSTOP_DOSE_PRI callrL845" id="L845" cot;rc"line" name="L862"> 86            =boost&qu9 class="sref">fullstop != 9a href="+code=FULLSTOPtorture.c#L826" mp_wass="sref">call_rcu_twime;
 87 9                        9 goto9calllig_rL845" id="L845" lig_rLt;rcd9"L80890class="line" name="L868"> L79789cla9s="line" name="L807"> 809
9a href="ker8el/rcutorture.c#L7e="L836"> 836 84r"L87_pipee_duclass="sref">VERBr"L87_pipee_duclt;rcline" name="L862"> 86            = id8"L789el/rcutorture.c#L799" id9"L79999class="line" name="L8=checkwaclascss="sref">callaass="line" name=ime"callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefL848" id="L848" class="line" nam9dstar cla9sof class="comment">/* W9it 836 86            =es" clas9rcutorture.c#L800" id9"L9009 c9ass="line" name="L829"ine" name="L836"> 836);
VERBran>);
 836 86            =a>      9>/9kthreal_r_rL845" id="L845" lig_rLt;rcine" name="L845"> 84r"L87_pipee_duclass="sref">VERBr"L87_pipee_duclt;rcd9"L81291class="line" name="L872">10an class=10an can class="comment">/10an >10ande=kthread_should_stop" class="sref">kthrea"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84dure.r" narec#L795" id8"L795dure.r" narec">scop" class="sree"lig_rL845" id="L845" lig_rLt;rcd"L8/pre>81291class="line" name="L872">10a1 class=10a_stutter_wait(10astring">"rcu_torref">arg)
sco++p" class="sree"oostLLSTOP_DOSE_PRI_ne" nam  86           10a3 class=10aclass="sref">fullstop10a href="+code=FULLSTOPtorture.c#L826"ligbatchass="line" nameligbatch"L87Z" class="sref">HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_deferred_free,
 87210a4 class=10a                       10a  >10a> + oldstalstop !=  856 10a5 class=10a="line" name="L807"> 8010a=">10a href="ker8el"line" name="L840"> 840
smp_mb(Ccode uply r exitcallback in flight,post one. */
 86           10a6 class=10al/rcutorture.c#L799" id10al/>10arcu_stutter_wait("rcu_torture_boost");
 87ts/* W10aof>10a7a href="+code=call_rcu_time|| s          = rcu);
 = { .FULLSTOP_Dwri   " id="L856" class="line" name="L856"> 856 10a8 class=10acutorture.c#L800" id9"L10acu>10ass="line" namine" name="L840"> 840
/10a10atorture.c#L791" id8"L         =  824init_rcu10tex>10telass="commen=sched_torture_read_unlock" class="sref"10t1 class=10 bhouk_torture_boost_rte10 bh>10t1s="sref">arg)
10td="L854" class="line" name="L854"> 810t3 class=10ef="ker9el/rcutorture.c#10ef=>10t" name="L878"> 878     Yes, clis is vulnerapab cla9"> 8elay"s, 10t4 class=10el/rcutorture.c#L816" id10el/>10tpost one. */
sc namss="line"   8elay"s, 10t5 class=10/
10t/span>
oldstarttime = 10t
rcu_stu10it">10t7hrefhref="k   d long  87ts 10="l>10t          if (FULLSTOP_D ak"wri     = ;
10t9href"L80890class="line" name="L868">102n class=10+code=VERBOSE_PRINTK_STR10+co>10+ca href="+code=call_rcu_timeDEFINE_ure_RANDOM845" id="L845" DEFINE_ure_RANDOM">scop" class="sree"rand_free,
 86           10+1 class=10="stritask =fulp_STing">10="s>10+el/rcutorture.c#L863" id="L863" clas10+2 class=10span>)d_sutdown_absorf="10spa>10+>
rcu_stutter_wait("rcu_torture_boost");
 856 10+3 class=10         if (scop" class="sree"ING" class="sref">VERBOSE_PRINTK_ST19lass="line" name="L856"> 856 10+4 class=10s="line" name="L87/a>   10s=">10+ndtime" class="sref">endtime = <10+5 class=10>smp_mb(sts,ordee" n10>sm>10+ href="ker8elde=oldstarttime" class="sref">oldst10+6 class=10"> 847        unsign10"> >10+e.c#L877" id="L877" class="line" nam id9"L82692class="line" na7ure.c#L795" id8"L79589c id9"L8189 class     24"> 824Voostrclao"CMP_LT( 856 10+7 class=10tcallud_torture_read_unlocu"sref">scop" class="sree"oostrclao" class="sref">Voostrclao"CMP_LT( 87210+8 class=10rture.c#L830" id="L830" 10rtu>10+ss="line" name="L829"clascss="sref">call"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_b_barri    = rcu_boost_infli10s=">10+ode=kthread_should_stop" p" class="sree"oostrclao" class="sref">Voostrclao"CMP_LT(calln ak"wri   ++;
        struct   >10> de=kthread_should_stop" class="sref">kthrea"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_b_barri    =  8721031 class=10de=rcu" class="sref">rcu10de=>10>string">"rcu_torelse89class="line" name="L872"> 8721032 class=10inflight;
kthrea"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84sync#L795" id8"L7958yn==NUL79389class="line" name="L872"> 87210>3 class=10nel/rcutorture.c#L836" i10nel>10> href="+code=FULLSTOPtorture.c#L826"r                    oldstalstop !=  856 1034 class=10ost_cb(struct 10>> +  840
smp_mb(Ccode uply r exitcallback in flight,post one. */
 86           1035 class=10ode=head" class="sref">h10ode>10>5dtime" class="sref">endtime = <1036 class=10lass="line" name="L837">10las>10>rcu_stutter_wait("rcu_torture_boost");
 87ts10>7a href="+code=call_rcu_time|| s          = rcu);
 = { .FULLSTOP_D ak"wri   " id="L856" class="line" name="L856"> 856 1038 class=10code=container_of" class10cod>10>ss="line" namine" name="L840"> 840
);
 82410"klass="commen=sched_torture_read_unlock" class="sref"1041 class=10a href="+code=rbip" clas10a h>10"1s="sref">arg)
10"d="L854" class="line" name="L854"> 81043 class=10a>(void *   trac=_dumL845" id="L845" c| s   trac=_dumLCMP_Lll_rL848" id="L848" class="line" nam1044 class=10L846" id="L846" class="l10L84>10"4href"L80890class="line" name="L868">1045 class=10#L847" id="L847" class="10#L8>10"dstarttimeHZATOMIC_INI#39;t have a calATOMIC_INI#CMP_L0lass="line" name="L856"> 856 1046 class=1048        unsigned l1048<>10"                  callatomic_ id9     10"ss="line" name="L829"=schedass="line" name="L856"> 856 1049 class=10light callatomic_xchf="kernel/rcutorttomic_xchfCMP_LT(10las>10las="line" name="L829"=schedass="line" name="L856"> 856 1051 class=10class="line" name="L853"10cla>10l1a href="+code=call_rcu_timedo trac=_">FULLSTOP_D id9     FULLSTOP_D id9">scop" class="sree"INGf="kernel/rcutortur"> f="kde=kine" name="L845"> 84="L8+;
           =  856 1052 class=10ref="kernel/rcutorture.c10ref>10l>
 86           1053 class=10ref="kernel/rcutorture.c10ref>10lss="sref">arg)
endtime = <1055 class=10sched_priority = 1;
10sch>10l/span>
 8elay"s, 10l6 class=10er" class="sref">sched_s10er">10l
); Derure.3nc=s ">FULLSTOP_DOSE_PRI,s, clis is vulnerapab cla9"> 8elay"s, 10l7 class=10t; 0) {
="ke2222uot;coE_Pspe.c1222el>="ke"L829"> pipe_stu array); Th>ca clis is vulnerapab cla9"> 8elay"s, 10l8 class=109"> 859             109">>10line" name="L830"> 830
 el>="ke"ode=oldnev=r be gr="li22228n 1, o9">rwise cla>ca clis is vulnerapab cla9"> 8elay"s, 10l9 class=10861" class="line" name="10861>10l{
oldstarttime = rcu);
,
 863      10me=>10h href"L80890class="line" name="L868">10h3 class=10"L865" class="line" name10"L8>10h class="line" name="L836"> 836 86           1064 class=10e="L866"> 866       10e=">10h4class="line" name="L836"> 836,
 86           1065 class=10 = scop" class="sree"rand_free,
 86           1066 class=10 while (scop" class="sree"rand_" name="L872"> 8727rand_" nasss="line" name="L862"> 86           1067 class=1068" class="line" name="L1068">10hef">ULONG_CMPhr/a>           = 10h8class="line" name="L836"> 836VERBpipee_duclt;rcline" name="L862"> 86           10h9 class=10                 if (10h9dtime" class="sref">endtime = <107n class=10 class="sref">fullstop10 c
HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9" name="L872"> 8727rid9" na=NUL79389class="line" name="L872"> 8721071 class=10                        10   >10 1a href="+code=call_rcu_time_deferred_free,
HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_deferred_free,
 8721072 class=10s="line" name="L874"> 8710s=">10 >
HZoostderure.3nc=_stop" class="sref">Voostderure.3nc=_stop"">scop" class="sree"oostLLSTOP_DOSE_PRI  87210 3 class=10terval. */
10 9"L81591class="line" name="L88888888888p" class="sree"oostrid9"" na_bh=hil9     10 a href="+code=checkwait" class="s888888p" class="sree"oostrid9"" na_89c i=hil9     ( 8721076 class=10Z;
callL845" id="L845" Lt;rcZ"/a>        .oldst1077 class=10f="+code=ULONG_CMP_LT" c10f=">10 t("rcu_torture_bLeave beine" npan>);
 879<10"li>10 r8el/rcutorture.c#L79name="L845"> 84"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9ne" name="L872"> 8727 id9ne" na">scop" class="sree"adutorture.c#L814"aduclasL389class="line" name="L872"> 8721079 class=10);
 = { .10);
>10 torture.c#L791" id8"L=schedass="line" name="L856"> 856 108n class=10 href="+code=smp_mb" cla10 hr>10 h +  856 1081 class=10/a>          = >10 1a href="+code=call_rcu_timedo trac=_">FULLSTOP_D id9     FULLSTOP_D id9">scop" class="sree"INGf="kernel/rcutortur"> f="kde=kine" name="L845"> 84="L8+;
( 84r"L87_ref="+code=call_rcu"L87_refclasL389class="line" name="L872"> 8721082 class=10 href="+code=call_rcusre10 hr>10 2starttimecallL845" id="L845" Lt;rcine" name="L845"> 84r"L87_mbtortass="sref">VERBr"L87_mbtortt;rcZ"6"0L848" id="L848" class="line" nam1083 class=10t;);
 8721084 class=10    s          r1010 4a href="+code=call_rcu_timespin_" name="L872"> 8727spin_" naCMP_LT( 8727rand_" nasss="line" name="L862"> 86           1085 class=10" id8"L78688class="line"10" i>10 5a href="+code=call_rcu_time"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9_d_torture_read_unloc id9_d_torCMP_LT( 86           1086 class=1088class="line" name="L8n1088c>10 1087 class=10      }
 8727spin_ne" naCMP_LT( 8727rand_" nasss="line" name="L862"> 86           1088 class=10="sref">jiffies;
 8721089 class=10           }
VERBpipee_duclt;rcZ" class="sref">HZL845" id="L845" Lt;rcine" name="L845"> 84r"L87_pipee_duclass="sref">VERBr"L87_pipee_duclt;rcline" name="L862"> 86           109n class=10lass="line" name="L872">10las>10lastarttimecallLipee_duclass="sref">VERBpipee_duclt;rcZclas css="sref">callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefL=oldstarttime" class="sref">oldst1091 class=10u_stutter_wait(10lstring">"rcu_torcing">"rcu_torture_bSde=oldnot happen, but..    unsigned long 10lode=kthread_should_stp" class="sree"pipee_duclass="sref">VERBpipee_duclt;rcZ" class="sref">HZure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefline" name="L862"> 86           10l3 class=10 class="sref">fullstop10l href="+code="ss="line" name="L856"> 856 1094 class=10                        10   >10l4starttimecallLipee_duclass="sref">VERBpipee_duclt;rcZclas 1L848" id="L848" class="line" nam1095 class=10s="line" name="L807"> 8010s=">10l9"> 8222222222222222utorture.c#L826"|| s   trac=_dumL845" id="L845" c| s   trac=_dumLCMP_L9389class="line" name="L872"> 8721096 class=10el/rcutorture.c#L799" id10el/>10lVERBran>);
 836VERBpipee_duclt;rc]"line" name="L862"> 86           10l7 class=10sof class="comment">/* W10sof>10l7a href="+code=call_rcu_time_deferred_free,
HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_deferred_free,
 836,
 86           1098 class=10rcutorture.c#L800" id9"L10rcu>10l8starttimecall_deferred_free,
callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefL=oldstarttime" class="sref">oldst1099 class=10>/10>10ltorture.c#L791" id8"L ing">"rcu_torture_bSde=oldnot happen, but..    unsigned long /11an >11ande=kthread_should_ste=call_rcu_time_deferred_free,
HZure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefline" name="L862"> 86           11a1 class=11a_stutter_wait(11astring">""ss="line" name="L856"> 856 11a2 class=11a                if (110>
 836,
 86           11a3 class=11aclass="sref">fullstop110ead_should_stop" class="srecpreempt_enae.c#L795" id8"L795preempt_enae.cCMP_L9389class="line" name="L872"> 87211a4 class=11a                       11a  >1104a href="+code=call_rcu_time"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9ne" name="L872"> 8727 id9ne" na">scop" class="sree"adutorture.c#L814"aduclasL389class="line" name="L872"> 87211a5 class=11a="line" name="L807"> 8011a=">11a href"ss="line" name="L856"> 856 11a6 class=11al/rcutorture.c#L799" id11al/>110                  /* W11aof>110urred.
 8elay"s, 11a8 class=11acutorture.c#L800" id9"L11acu>110ine" name="L830"> 830
sc namss="line" derure.3nc=s ">FULLSTOP_DOSE_PRI,s, clis is vulnerapab cla9"> 8elay"s, 11a9 class=11a/11a110{
="ke2222uot;coE_Pspe.c1222el>="ke"L829"> pipe_stu array); Th>ca clis is vulnerapab cla9"> 8elay"s, 111n class=11tex_f="+cosref">init_rcu11tex>111e/span>
 el>="ke"ode=oldnev=r be gr="li22228n 1, o9">rwise cla>ca clis is vulnerapab cla9"> 8elay"s, 11t1 class=11 bhouk_torture_boost_rte11 bh>11t1s="shref="kernel/rcutorture.rure.ass=>="ke_PRIN="libroken"sref">oldstarttime = 11td="L8n>
11t" namhref="k   d long 11tpost o" class="sree"oostLLSTOP_D id9  ass="line" nameoostLLSTOP_D id9  ">scoll_rcu_time;

11t/spanoldstarttime" class="sref">oldst11t6 class=11+code=checkwait:me="L81116starttime 836,
 86           11t7 class=11it" class="sref">rcu_stu11it">1117starttime 836 86           11t8 class=11="line" }878"> 87ts 11="l>111ef="+code=n_rrnel/rcutortureDEFINE_ure_RANDOM845" id="L845" DEFINE_ure_RANDOM">scop" class="sree"rand_free,
 86           11t9 class=11f="ker9el/rcutorture.c#L11f=">111torture.c#L79hr/a>           = 11+ca href="+cod name="L836"> 836VERBpipee_duclt;rcline" name="L862"> 86           11+1 class=11="stritask =fulp_STing">11="s>1121orture.c#L79hr/a>           = VERBame=r_lirtortur         = VERBat;rcline" name="L862"> 86           11+2 class=11span>)d_sutdown_absorf="11spa>112d="L854" class="line" name="L854"> 811+3 class=11         if (rcu_stutter_wait("rcu_torture_boost");
 856 11+4 class=11s="line" name="L87/a>   11s=">1124a href="+code=call_rcu_timeselasser_nicc#L795" id8"L7958elasser_nicc">scop" class="sree"ING" class="sref">VERBOSE_PRINTK_ST19lass="line" name="L856"> 856 11+5 class=11>smp_mb(sts,ordee" n11>sm>11+ href="ker8elclascss="sref">callarq id9  ass="line" namearq id9  =NULZc7class="sref">smp_mb("> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84arq_capae.c#L795" id8"L795arq_capae.ce.c#L848" id="L848" class="line" nam11+6 class=11"> 847        unsign11"> >11+e.c#L877" id="L877" class="line" nam etupeame=r_on_rc#name="L872"> 8727setupeame=r_on_rc#naCMP_LT(VERBat;rcSrcss="sref">callr| ULLSTOP_Dame=r  =  856 11+7 class=11t 856 11+8 class=11rture.c#L830" id="L830" 11rtu>11+ss="line" namde=oldstarttime" class="sref">oldst11+9 class=11s="sref">rcu_boost_infli11s=">11+ode=kthread_should_stclascss="sref">callarq id9  ass="line" namearq id9  =NULZc7class="sref">smp_mb("> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84arq_capae.c#L795" id8"L795arq_capae.ce.c#L=oldstarttime" class="sref">oldst113n class=11>        struct   >11> de=kthread_should_stop" clasclasme="L840"> 840VERBame=r_pe.c122CMP_LT(VERBat;rceL848" id="L848" class="line" nam1131 class=11de=rcu" class="sref">rcu11de=>11>string">"rcu_tor877" id="L877" class="line" nammodDame=r  = VERBat;rcSrcss="sref">calljiffiekernel/rcutorturjiffiektring+ span cL847" id="L847" class="line"1132 class=11inflight;
 856 11>3 class=11nel/rcutorture.c#L836" i11nel>11> href="+code=FULLSTOPtorture.c#L826"adutorture.c#L814"aduclasZ" class="sref">HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9" name="L872"> 8727rid9" na=NUL79389class="line" name="L872"> 8721134 class=11ost_cb(struct 11>> + ,
HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_deferred_free,
 8721135 class=11ode=head" class="sref">h11ode>1139"> 8222222222222222utorture.c#L826"L845" id="L845" Lt;rcZ" class="sref">HZoostderure.3nc=_stop" class="sref">Voostderure.3nc=_stop"">scop" class="sree"oostLLSTOP_DOSE_PRI  8721136 class=11lass="line" name="L837">11las>113class="line" name="L8=checkwaor877" id="L877" class="line" namoostrid9"" na_bh=hil9     113re.c#L789" id8"L78988class="line" namd="L877" class="line" namoostrid9"" na_89c i=hil9     113ss="line" name="L829"ine" namine" namd="L877" class="line" nam ref=rid9"" na_hil9     ( 8721139 class=11a>);
callL845" id="L845" Lt;rcZ"/a>        .oldst114n class=11"kernel/rcutorture.c#L8411"ke>114 de=kthread_should_stop" classing">"rcu_torture_bWait/2222pan>);
114string">"rcu_tor877" id=e=call_rcu_time"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9ne" name="L872"> 8727 id9ne" na">scop" class="sree"adutorture.c#L814"aduclasL389class="line" name="L872"> 8721142 class=11class="line" name="L844"11cla>114ode=kthread_should_stop" class="sref">kthrea89c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreaHZ#L795" id8"L795HZclasL389class="line" name="L872"> 8721143 class=11a>(void * 8721144 class=11L846" id="L846" class="l11L84>114> +  856 1145 class=11#L847" id="L847" class="11#L8>1149"> 8222222222222222utorture.c#L826"do trac=_">FULLSTOP_D id9     FULLSTOP_D id9">scop" class="sree"INGf="kernel/rcutortur"> f="kde=kine" name="L845"> 84="L8+;
( 84r"L87_ref="+code=call_rcu"L87_refclasL389class="line" name="L872"> 8721146 class=1148        unsigned l1148<>114class="line" name="L8clascss="sref">callL845" id="L845" Lt;rcine" name="L845"> 84r"L87_mbtortass="sref">VERBr"L87_mbtortt;rcZ"6"0L848" id="L848" class="line" nam11"7 class=11 href="kernel/rcutorture11 hr>114re.c#L789" id8"L78988class="l_time;
 8721148 class=11ref="kernel/rcutorture.c11ref>11"ss="line" name="L829"e=call_rcu_time"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9_d_torture_read_unloc id9_d_torCMP_LT( 86           1149 class=11light  872115n class=11lass="line" name="L851">11las>11las="line" name="L829"e="L836"> 836VERBpipee_duclt;rcZ" class="sref">HZL845" id="L845" Lt;rcine" name="L845"> 84r"L87_pipee_duclass="sref">VERBr"L87_pipee_duclt;rcline" name="L862"> 86           1151 class=11class="line" name="L853"11cla>115string">"rcu_torclascss="sref">callLipee_duclass="sref">VERBpipee_duclt;rcZclas css="sref">callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefL=oldstarttime" class="sref">oldst1152 class=11ref="kernel/rcutorture.c11ref>115ode=kthread_should_stop" classing">"rcu_torture_bSde=oldnot happen, but..    unsigned long 1159"L81591class="line" name="L8e="L836"> 836VERBpipee_duclt;rcZ" class="sref">HZure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefline" name="L862"> 86           11l4 class=11ref="+code=sp" class="sr11ref>115> +  856 1155 class=11sched_priority = 1;
11sch>1158name="L872"> 872clascss="sref">callLipee_duclass="sref">VERBpipee_duclt;rcZclas 1L848" id="L848" class="line" nam11l6 class=11er" class="sref">sched_s11er">115class="line" name="L8=checkwalass="line" namooss   trac=_dumL845" id="L845" c| s   trac=_dumLCMP_L9389class="line" name="L872"> 87211l7 class=11t; 0) {
call__this_cpu_i = scop" class="sree"oostLLSTOP_DOduclass="sref">VERBran>);
 836VERBpipee_duclt;rc]"line" name="L862"> 86           11l8 class=119"> 859             119">>115ss="line" name="L829"e=call_rcu_time"deferred_free,
HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84_deferred_free,
 836,
 86           11l9 class=11861" class="line" name="11861>115torture.c#L791" id8"Lclascss="sref">call_deferred_free,
callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefL=oldstarttime" class="sref">oldst116n class=11head_on_stack(&<11hea>116 de=kthread_should_stop" classing">"rcu_torture_bSde=oldnot happen, but..    unsigned long rcu);
"rcu_tor877" id=e=call_rcu_time"deferred_free,
HZure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefline" name="L862"> 86           1162 class=11me="L863"> 863      11me=>116ode=kthread_should_st"ss="line" name="L856"> 856 11h3 class=11"L865" class="line" name11"L8>116 href="+code=FULLSTOPtorture.c#L826"__this_cpu_i = scop" class="sree"oostLLSTOP_Dbatchass="line" nameoostLLSTOP_DbatchCMP_[e="L836"> 836,
 86           1164 class=11e="L866"> 866       11e=">116> +  8721165 class=11 =  8222222222222222utorture.c#L826""> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84 id9ne" name="L872"> 8727 id9ne" na">scop" class="sree"adutorture.c#L814"aduclasL389class="line" name="L872"> 8721166 class=11 while ( 8721167 class=1168" class="line" name="L1168">116re.c#L789" id8"L78988css="sref">callr                    oldstalstop !=  856 11h8 class=11="+code=rcu_stutter_wait11="+>11h8class="line""line" name="L840"> 840
smp_mb(Ccode uply r exitcallback in flight,post one. */
 86           11h9 class=11                 if (11661
rcu_stutter_wait("rcu_torture_boost");
 87tsfullstop11 c
rcu);
 = { .FULLSTOP_D id9  " id="L856" class="line" name="L856"> 856 1171 class=11                        11   >11 1a href="+codclascss="sref">callarq id9  ass="line" namearq id9  =NULZc7class="sref">smp_mb("> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84arq_capae.c#L795" id8"L795arq_capae.ce.c#Lss="line" name="L856"> 856 1172 class=11s="line" name="L874"> 8711s=">117ode=kthread_should_stp" class="sree"deleame=r_sync#L795" id8"L795deleame=r_syncCMP_LT(VERBat;rceass="line" name="L856"> 856 1173 class=11terval. */
11 9"L81591classine" name="L840"> 840
11 a href="+code=checkwas="sref">kthrea89c id9"L8189 cla"line" na7ure.c#L795" id8"L79589c id9"L8189 class     24"> 824;
 856 1177 class=11f="+code=ULONG_CMP_LT" c11f=">117re.c#ss="line" name="L856"> 856 1178 class=11"line" name="L879"> 879<11"li>117ine" name="L830"> 830
 8elay"s, 1179 class=11);
 = { .11);
>117{
 specified buffer"sref">oldstarttime = 118e/span>
VoostLLSTOP_Dpinft" 856 1183 class=11t;);
oldst1184 class=11    s          r1111 4a href="+codcname="L836"> 836VERBOclt;rcZ" torture_read_unlock" class="sref"1185 class=11" id8"L78688class="line"11" i>11 5a href="+codcname="L836"> 836 86           1186 class=1188class="line" name="L8n1188c>1186starttime 836 86           1187 class=11      }
 836 86           1188 class=11="sref">jiffies;
 836 86           1189 class=11           }
endtime = <119n class=11lass="line" name="L872">11las>119c
scop" class="sree"Ipf="+code=call_rc_pfsrefL=oldstarttime" class="sref">oldst1191 class=11u_stutter_wait(11lstring">"rcu_tor2222scss="sref">calla#L795" id8"L795asrefZ" tome="L836"> 836callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefg+ some="L836"> 836oldst1192 class=11                 if (11lode=kthread_should_sthref="kernel/rcutorturepipesummarrture_read_unlocpipesummarrCMP_[e="L836"> 836HZL=r_Ipf="+code=call_rcL=r_Ipf">scop" class="sree"oostLLSTOP_DOduclass="sref">VERBran>);
callIpf="+code=call_rc_pfsrefL[e="L836"> 836 86           11l3 class=11 class="sref">fullstop1199"L81591class="line" name="L8e="L836"> 836 836HZL=r_Ipf="+code=call_rcL=r_Ipf">scop" class="sree"oostLLSTOP_Dbatchass="line" nameoostLLSTOP_DbatchCMP_Srcss="sref">callIpf="+code=call_rc_pfsrefL[e="L836"> 836 86           11l4 class=11                        11   >119> +  856 1195 class=11s="line" name="L807"> 8011s=">11l9"> 822222222"ss="line" name="L856"> 856 1196 class=11el/rcutorture.c#L799" id11el/>11lcalla#L795" id8"L795asrefZ" css="sref">callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefg- some="L836"> 836 836oldst1197 class=11sof class="comment">/* W11sof>119re.c#L789" id8"L78988clascss="sref">callLipesummarrture_read_unlocpipesummarrCMP_[e="L836"> 836119ss="line" name="L829"ine" nambr="kline" name="L862"> 86           11l9 class=11>/11>11ltorture.c#L79"ss="line" name="L856"> 856 12an class=12an can class="comment">/12an >120c
VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc], calls   type#L795" id8"L795s   typeCMP_Srcss="sref">callTORTURclFLAtutter_wait(TORTURclFLAtt;rceass="line" name="L856"> 856 12a1 class=12a_stutter_wait(1201a href="+code=call_rcu_time_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],ss="line" name="L856"> 856 12a2 class=12a                if (120ode=kthread_should_sthref="k 856 12a3 class=12aclass="sref">fullstop1209"L81591class="line" name="Lp" class="sree"oostLLSTOP_DOSE_PRI  87212a4 class=12a                       12a  >120> +  87212a5 class=12a="line" name="L807"> 8012a=">120 href="ker8el/rcutorture.c#Lp" class="sree"lirt_emptrture_read_unloclirt_emptrCMP_LT(VERBoost);
 87212a6 class=12al/rcutorture.c#L799" id12al/>120class="line" name="L8=checkw(( 87212a7 class=12aof class="comment">/* W12aof>120re.c#L789" id8"L78988class="(( 87212a8 class=12acutorture.c#L800" id9"L12acu>120ss="line" name="L829"ine" na(( 856 12a9 class=12a/12a12061
VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 121n class=12tex_f="+cosref">init_rcu12tex>121 de=kthread_should_stop" cla(( 856 1211 class=12 bhouk_torture_boost_rte12 bh>121string">"rcu_tor877" id( 87212t2 class=12          856 12t3 class=12ef="ker9el/rcutorture.c#12ef=>121ead_should_stop" class="srec_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1214 class=12el/rcutorture.c#L816" id12el/>121> +  87212t5 class=12/
121 href="ker8el/rcutorture.c#Lp" class="sree"9el/rcutortureboort++;
 87212t6 class=12+code=checkwait:me="L8121class="line" name="L8=checkw( 856 12t7 class=12it" class="sref">rcu_stu12it">1217a href="+code=call_rcu_time_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1218 class=12="line" }878"> 87ts 12="l>121ss="line" name="L829"ine" na( _successekernel/rcutorturn_on8"> _successekNTK_S89class="line" name="L872"> 87212t9 class=12f="ker9el/rcutorture.c#L12f=">121torture.c#L791" id8"Line" na( _attemptkernel/rcutorturn_on8"> _attemptkNTK_S89class="line" name="L872"> 872122n class=12+code=VERBOSE_PRINTK_STR12+co>122 de=kthread_should_stop" cla( _successekernel/rcutorturn_off8"> _successekNTK_S89class="line" name="L872"> 8721221 class=12="stritask =fulp_STing">12="s>122string">"rcu_tor877" id( _attemptkernel/rcutorturn_off8"> _attemptka hreass="line" name="L856"> 856 12+2 class=12span>)d_sutdown_absorf="12spa>122>
VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 12+3 class=12         if ( 8721224 class=12s="line" name="L87/a>   12s=">122> +  8721225 class=12>smp_mb(sts,ordee" n12>sm>122 href="ker8el/rcutorture.c#Lp" class="sree"9el/rcutorturebarrier_error  =  856 12+6 class=12"> 847        unsign12"> >122VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],kcalls   type#L795" id8"L795s   typeCMP_Srcss="sref">callTORTURclFLAtutter_wait(TORTURclFLAtt;rceass="line" name="L856"> 856 12+7 class=12tcallatomic_ id9     122ss="line" name="Lp" class="sree"9el/rcutorturebarrier_error  = rcu_boost_infli12s=">12+ode=kthread_shoul(        struct   >12> de=kthread_shoul<rcu12de=>12>string">"rcup" class="sree"9el/rcutortureboort_faihue=  = ;
 836oldst12>3 class=12nel/rcutorture.c#L836" i12nel>12> href="+code=FULLSTOPtorture.c#L826"_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1234 class=12ost_cb(struct 12>> +  856 1235 class=12ode=head" class="sref">h12ode>1239"> 8222222222222222utorture.c#L826"WARN_ON_ONCE  = 12las>123class="line" "ss="line" name="L856"> 856 1237 class=12re.c#L839" id="L839" cla12re.>1237a href="+code=call_rcu_time_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1238 class=12code=container_of" class12cod>123ss="line" nam2222scss="sref">calla#L795" id8"L795asrefZ" tome="L836"> 836callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefg+ some="L836"> 836 856 1239 class=12a>);
VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 836 856 124n class=12"kernel/rcutorture.c#L8412"ke>124c
VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc], calls   type#L795" id8"L795s   typeCMP_Srcss="sref">callTORTURclFLAtutter_wait(TORTURclFLAtt;rceass="line" name="L856"> 856 1241 class=12a href="+code=rbip" clas12a h>1241a href="+code=call_rcu_time_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1242 class=12class="line" name="L844"12cla>124ode=kthread_s2222scss="sref">calla#L795" id8"L795asrefZ" tome="L836"> 836callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefg+ some="L836"> 836 856 1243 class=12a>(void *VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 836 856 1244 class=12L846" id="L846" class="l12L84>124> + VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],kcalls   type#L795" id8"L795s   typeCMP_Srcss="sref">callTORTURclFLAtutter_wait(TORTURclFLAtt;rceass="line" name="L856"> 856 1245 class=12#L847" id="L847" class="12#L8>1249"> 822222222e=call_rcu_time_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1246 class=1248        unsigned l1248<>124calla#L795" id8"L795asrefZ" tome="L836"> 836callure_TORTURclaIPE_LENass="line" nameure_TORTURclaIPE_LENsrefg+ some="L836"> 836oldst12"7 class=12 href="kernel/rcutorture12 hr>124re.c#L789" id8"L78988e=call_rcu_time_class="sref">VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],k 856 1248 class=12ref="kernel/rcutorture.c12ref>12"ss="line" name="L829"789" id8"L78988e=call_rcu_timeatomic_ id9     VERBran>);
 836 856 1249 class=12light  856 125n class=12lass="line" name="L851">12las>125c
VERBOclt;rcZ+" class="sref">HZspinftf#L795" id8"L7958pinftfCMP_LT( 836VERBOclt;rc],  856 1251 class=12class="line" name="L853"12cla>1251a href="+codclascss="sref">call"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84hrefkernel/rcutorturhrefkt;rcess="line" name="L856"> 856 1252 class=12ref="kernel/rcutorture.c12ref>125ode=kthread_should_strnel/rcutorture_class="sref">VERBOclt;rcZ+" class="sref">HZ"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84hrefkernel/rcutorturhrefkt;rcLT( 836VERBOclt;rc]lass="line" name="L856"> 856 1253 class=12ref="kernel/rcutorture.c12ref>1259"L81591class=sched_e="L836"> 836VERBOclt;rcass="line" name="L856"> 856 1254 class=12ref="+code=sp" class="sr12ref>125> + <"ss="line" name="L856"> 856 1255 class=12sched_priority = 1;
12sch>1258namess="line" name="L856"> 856 1256 class=12er" class="sref">sched_s12er">125classname="L830"> 830
 8elay"s, 12l7 class=12t; 0) {
7" is onlys, clis is vulnerapab cla9"> 8elay"s, 12l8 class=129"> 859             129">>125ine" name="L830"> 830
 8elay"s, 12l9 class=12861" class="line" name="12861>125{
 moid9" system to only havehone copys, clis is vulnerapab cla9"> 8elay"s, 126n class=12head_on_stack(&<12hea>126e/span>
 moid9" loaded, and29">n bysgiv2222uot;ran>);
 8elay"s, 1261 class=12s="sref">rcu);
n ran>);
 8elay"s, 1262 class=12me="L863"> 863      12me=>126d="L8n>
oldstarttime = 126 hrefn>
 866       12e=">126> + 1269"> 8(VERBran>);
 856 1266 class=12 while (oldst1267 class=1268" class="line" name="L1268">1267starttime 836VERBOclt;rcass="line" name="L856"> 856 12h8 class=12="+code=rcu_stutter_wait12="+>12h8classs="line" name="L856"> 856 12h9 class=12                 if (12661
VERBOclt;rcZ" (VoostLLSTOP_Dpinft"<( 856 127n class=12 class="sref">fullstop12 c
Vpinft"<(VKERN_ALERT
 856 1271 class=12                        12   >12 1a hr"ss="line" name="L856"> 856 1272 class=12s="line" name="L874"> 8712s=">127d="L854" class="line" name="L854"> 81273 class=12terval. */
127 hrefn>
 8elay"s, 12 4 class=12                12 a hre.
 8elay"s, 12 5 class=12de=oldstarttime" class="12de=>12  href.
 srefa     val moid9" parlaster"sref">oldstarttime = 127classname="L830"> 830
< es, clis is vulnerapab cla9"> 8elay"s, 12 7 class=12f="+code=ULONG_CMP_LT" c12f=">127urred.
7", since this one doesn #39;t rure.3nc=s, clis is vulnerapab cla9"> 8elay"s, 12 8 class=12"line" name="L879"> 879<12"li>127ine" name="L830"> 830
< * vol_PRl> srefehor rug=st   callbacks"sref">oldstarttime = 128e/spahref="k   d long           = >1281href(VERBran>);
VERBar2t;rcess="line" name="L856"> 856 1282 class=12 href="+code=call_rcusre12 hr>12 2staroldstarttime" class="sref">oldst1283 class=12t;);
rcu_stutter_wait("rcu_torture_boost");
 856 1284 class=12    s          r1212 4a href="+coddo=oldstarttime" class="sref">oldst1285 class=12" id8"L78688class="line"12" i>1289"> 8222222222222222utorture.c#L826"89c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreasrefa     valernel/rcutorturhrefa     val"> 82*utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 8721286 class=1288class="line" name="L8n1288c>128e.c#L877" id="L877" class="line" naml/rcutorturehrefkDpinftass="sref">VERBran>);
 8721287 class=12      }
callr  );
rcu);
 = { .FULLSTOP_Dhrefk  id="L856" class="line" name="L856"> 856 1288 class=12="sref">jiffies;
 840
 856 1289 class=12           }
rcu_stutter_wait("rcu_torture_boost");
 87ts12las>129c
(1291a hr"ss="line" name="L856"> 856 1292 class=12                 if (129d="L854" class="line" name="L854"> 812l3 class=12 class="sref">fullstop1299"L81href="k   class="line" naml/rcid24__pf="+code=call_rcl/rcid24__pft;rca>
"rcu_torture_bForce all toL827" r9els off this CPUe.c#L832" id="L832" class="line" name="L812l4 class=12                        12   >129> +  8012s=">129 href.
 8elay"s, 1296 class=12el/rcutorture.c#L799" id12el/>129classname="L830"> 830
< e is w">n @l/rcid24__pf = -1, w">n we allow 9"> r9els to run2on2all CPUs"sref">oldstarttime = /* W12sof>129urred.
129ss="lhref="kll_rclass="line" naml/rcutorturehduffl"_r9elsass="sref">VERBran>);
 856 12l9 class=12>/12>12ltortuoldstarttime" class="sref">oldst13an class=13an can class="comment">/13an >130c
 836 86           13a1 class=13a_stutter_wait(1301a hrine" name="L862"> 86           13a2 class=13a                if (130>
VERBOpum9el_setallkthreasduffl"_rmp_m9elernel/rcutorturhduffl"_rmp_m9elclasL389class="line" name="L872"> 87213a3 class=13aclass="sref">fullstop130ead_should_stop" class="srecget_on8"> _Opusass="sref">VERBget_on8"> _Opust;rcLL389class="line" name="L872"> 87213a4 class=13a                       13a  >130> +  8013a=">130 href="ker8el.
7" is only one on8">  CPUe(ex: UP) *c#L832" id="L832" class="line" name="L813a6 class=13al/rcutorture.c#L799" id13al/>130class="line" clascss="sref">callnum_on8"> _Opusass="sref">VERBnum_on8"> _Opust;rcLL,pos1L=oldstarttime" class="sref">oldst13a7 class=13aof class="comment">/* W13aof>130re.c#L789" id8"L78988rnel/rcutortureput_on8"> _Opusass="sref">VERBput_on8"> _Opust;rcLL389class="line" name="L872"> 87213a8 class=13acutorture.c#L800" id9"L13acu>130ss="line" name="L829"=sched389class="line" name="L872"> 87213a9 class=13a/13a130torture.c#L79"ss="line" name="L856"> 856 131n class=13tex_f="+cosref">init_rcu13tex>131 de=kss="line" name="L856"> 856 1311 class=13 bhouk_torture_boost_rte13 bh>1311a href="+codclascss="sref">calll/rcid24__pf="+code=call_rcl/rcid24__pft;rc 96"-1L848" id="L848" class="line" nam13t2 class=13         kthreal/rcid24__pf="+code=call_rcl/rcid24__pft;rcSernel/rcutorturesduffl"_rmp_m9elernel/rcutorturhduffl"_rmp_m9elclasL389class="line" name="L872"> 87213t3 class=13ef="ker9el/rcutorture.c#13ef=>131ead_s89class="line" name="L872"> 87213t4 class=13el/rcutorture.c#L816" id13el/>131> + kthreaOSE_PRI  87213t5 class=13/
1318namess="line" name="L856"> 856 13t6 class=13+code=checkwait:me="L8131class="line" clascss="sref">call id9  _r9elsass="sref">VERBrid9  _r9elsclasL=oldstarttime" class="sref">oldst13t7 class=13it" class="sref">rcu_stu13it">131re.c#L789" id8"L789882222scss="sref">calla#L795" id8"L795asrefZ" tome="L836"> 836callnridlrid9  sass="sref">VERBnridlrid9  st;rca>e="L836"> 836oldst13t8 class=13="line" }878"> 87ts 13="l>131ss="line" name="L829"ine" na clascss="sref">call id9  _r9elsass="sref">VERBrid9  _r9elsclas[e="L836"> 836oldst13t9 class=13f="ker9el/rcutorture.c#L13f=">131torture.c#L791" id8"Line" nashould_strnel/rcutortureset_Opuseallowed_ptr  = kthrea id9  _r9elsass="sref">VERBrid9  _r9elsclas[e="L836"> 836 856 132n class=13+code=VERBOSE_PRINTK_STR13+co>132 de=kthread_should_stop" cla.c#L791" id8"Line" nashould_strnel/rcutorturesduffl"_rmp_m9elernel/rcutorturhduffl"_rmp_m9elclasL389class="line" name="L872"> 8721321 class=13="stritask =fulp_STing">13="s>132string">""ss="line" name="L856"> 856 13+2 class=13span>)d_sutdown_absorf="13spa>132d="L854" class="line" name="L854"> 813+3 class=13         if (callfakewrit  _r9elsass="sref">VERBfakewrit  _r9elsclasL=oldstarttime" class="sref">oldst1324 class=13s="line" name="L87/a>   13s=">132> + calla#L795" id8"L795asrefZ" tome="L836"> 836callnfakewrit  sass="sref">VERBnfakewrit  st;rca>e="L836"> 836oldst1325 class=13>smp_mb(sts,ordee" n13>sm>132 href="ker8el/rcutorture.c#Lsclascss="sref">callfakewrit  _r9elsass="sref">VERBfakewrit  _r9elsclas[e="L836"> 836oldst13+6 class=13"> 847        unsign13"> >132class="line" name="L8=checkwshould_strnel/rcutortureset_Opuseallowed_ptr  = kthreafakewrit  _r9elsass="sref">VERBfakewrit  _r9elsclas[e="L836"> 836 856 1327 class=13t 8721328 class=13rture.c#L830" id="L830" 13rtu>132ss="line" nam"ss="line" name="L856"> 856 13+9 class=13s="sref">rcu_boost_infli13s=">1329dtime" class="sref">endtime = <133n class=13>        struct   >13> de=kthread_sclascss="sref">callwrit  _r9elernel/rcutorturwrit  _r9elt;rcess="line" name="L856"> 856 1331 class=13de=rcu" class="sref">rcu13de=>13>string">"rcud_strnel/rcutortureset_Opuseallowed_ptr  = kthreawrit  _r9elernel/rcutorturwrit  _r9elt;rcSernel/rcutorturesduffl"_rmp_m9elernel/rcutorturhduffl"_rmp_m9elclasL389class="line" name="L872"> 8721332 class=13inflight;
 813>3 class=13nel/rcutorture.c#L836" i13nel>1339"L81591classclascss="sref">callhrefkDr9elernel/rcutorturhrefkDr9elt;rcess="line" name="L856"> 856 1334 class=13ost_cb(struct 13>> + kthreahrefkDr9elernel/rcutorturhrefkDr9elt;rcSernel/rcutorturesduffl"_rmp_m9elernel/rcutorturhduffl"_rmp_m9elclasL389class="line" name="L872"> 8721335 class=13ode=head" class="sref">h13ode>1338namess="line" name="L856"> 856 1336 class=13lass="line" name="L837">13las>133class="line" clascss="sref">call /rcid24__pf="+code=call_rcl/rcid24__pft;rc =6"-1L848" id="L848" class="line" nam1337 class=13re.c#L839" id="L839" cla13re.>133re.c#L789" id8"L78988css="sref">callr  cid24__pf="+code=call_rcl/rcid24__pft;rc = css="sref">callnum_on8"> _Opusass="sref">VERBnum_on8"> _Opust;rcLL,- so848" id="L848" class="line" nam1338 class=13code=container_of" class13cod>133ss="line" namelse848" id="L848" class="line" nam1339 class=13a>);
134 de=kss="line" name="L856"> 856 1341 class=13a href="+code=rbip" clas13a h>1341a href="+code=call_rcu_timeput_on8"> _Opusass="sref">VERBput_on8"> _Opust;rcLL389class="line" name="L872"> 8721342 class=13class="line" name="L844"13cla>134ode=k"ss="line" name="L856"> 856 1343 class=13a>(void * 8721344 class=13L846" id="L846" class="l13L84>134a hre.
#L832" id="L832" class="line" name="L81345 class=13#L847" id="L847" class="13#L8>134 href.
 830
< e to test29"> supp" nP2222such tmckless id24=CPUein2RCU"sref">oldstarttime = 134ss="lhref="k   d long  VERBran>);
VERBar2t;rcess="line" name="L856"> 856 135n class=13lass="line" name="L851">13las>135c
oldst1351 class=13class="line" name="L853"13cla>1351a href="+code=call_rcu_timeorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 1352 class=13ref="kernel/rcutorture.c13ref>135ode=kthread_sdo=oldstarttime" class="sref">oldst1353 class=13ref="kernel/rcutorture.c13ref>1359"L81591class="line" e=call_rcu_time89c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreasduffl"_     valernel/rcutorturhduffl"_     val"> 82*utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 8721354 class=13ref="+code=sp" class="sr13ref>135> + VERBran>);
 8721355 class=13sched_priority = 1;
13sch>1359"> 8222222222222222utorture.c#L826"r  );
rcu);
 = { .FULLSTOP_Dhduffl"  id="L856" class="line" name="L856"> 856 1356 class=13er" class="sref">sched_s13er">135class="line" "line" name="L840"> 840
 856 13l7 class=13t; 0) {
rcu_stutter_wait("rcu_torture_boost");
 87ts 859             139">>135ss="line" nam=sched_torture_read_unlock" class="sref"13l9 class=13861" class="line" name="13861>135{
 856 136n class=13head_on_stack(&<13hea>136 de=kss="line" name="L856"> 856 1361 class=13s="sref">rcu);
 863      13me=>136d="L8n>
oldstarttime = 136 hrefn>
 866       13e=">136> +  8(VERBran>);
VERBar2t;rcess="line" name="L856"> 856 1366 class=13 while (oldst1367 class=1368" class="line" name="L1368">1367a href="+code=call_rcu_timeorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 13h8 class=13="+code=rcu_stutter_wait13="+>1368de=kthread_sdo=oldstarttime" class="sref">oldst13h9 class=13                 if (136torture.c#L791" id8"Le=call_rcu_time89c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreasrut   ass="sref">VERBhrut   t;rc2*utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 872137n class=13 class="sref">fullstop137 de=kthread_should_sts="sref">kthreasrut   _pause_restass="sref">VERBhrut   _pause_restt;rc = so848" id="L848" class="line" nam1371 class=13                        13   >137string">"rcud_stclasme="L840"> 840
 8713s=">137ode=kthread_should_sthref="kLe=call_rcu_time89c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreasrut   ass="sref">VERBhrut   t;rc2*utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 8721373 class=13terval. */
1379"L81591class="line" e=call_rcu_time8rut   _pause_restass="sref">VERBhrut   _pause_restt;rc = torture_read_unlock" class="sref"13 4 class=13                137> + rcu);
 = { .FULLSTOP_Dhrut     id="L856" class="line" name="L856"> 856 13 5 class=13de=oldstarttime" class="13de=>1379"> 822222222"line" name="L840"> 840
 856 1376 class=13Z;
rcu_stutter_wait("rcu_torture_boost");
 87ts 879<13"li>137ine" "ss="line" name="L856"> 856 1379 class=13);
 = { .13);
>1379dtime" class="sref">endtime = <138n class=13 href="+code=smp_mb" cla13 hr>138e/spahref="ke="L836"> 836VERBran>);
 f="kernel/rcutortur"> f="kde=k, char2*lass="line" namta2ass="sref">VERBta2t;rcess="line" name="L856"> 856 1382 class=13 href="+code=call_rcusre13 hr>13 2staroldstarttime" class="sref">oldst1383 class=13t;);
Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst1384 class=13    s          r13138> + oldst1385 class=13" id8"L78688class="line"13" i>1389"> 8222222222222222uta href="+code=infligh"srefhrefa     val= #37;d verbose= #37;d rest_nocid24_hz= #37;d   id="L856" cldstarttime" class="sref">oldst1386 class=1388class="line" name="L8n1388c>138e.c#L877" id="L877" cla href="+code=infligh"srefhduffl"_     val= #37;d hrut   = #37;d irqrid9  = #37;d   id="L856" cldstarttime" class="sref">oldst1387 class=13      }
oldst1388 class=13="sref">jiffies;
oldst1389 class=13           }
oldst139n class=13lass="line" name="L872">13las>139 de=kthread_should_stsa href="+code=infligh"srefonoff_     val= #37;d onoff_holdoff= #37;d\n  id="L856" cSss="line" name="L856"> 856 1391 class=13u_stutter_wait(139string">"rcud_strnel/rcutorture);
   typeCMP_Srcss="sref">callta2ass="sref">VERBta2t;rcSrcss="sref">callnridlrid9  sass="sref">VERBnridlrid9  st;rcSrcss="sref">callnfakewrit  sass="sref">VERBnfakewrit  st;rcSss="line" name="L856"> 856 1392 class=13                 if (139ode=kthread_should_strnel/rcutorturesrefa     valernel/rcutorturhrefa     val"> 8Srcss="sref">callverboseernel/rcutorturverboseCMP_Srcss="sref">calltest_nocid24_hzass="sref">VERBtest_nocid24_hzt;rcSernel/rcutorturesduffl"_     valernel/rcutorturhduffl"_     val"> 8Sss="line" name="L856"> 856 1393 class=13 class="sref">fullstop1399"L81591class="line" e=call_rcu_time8rut   ass="sref">VERBhrut   t;rcSernel/rcutortureirqrid9  p_795" id8"L795arqrid9  t;rcSernel/rcutorturefqs_dur_PRINass="sref">VERBfqs_dur_PRINt;rcSernel/rcutorturefqs_holdoffass="sref">VERBfqs_holdofft;rcSernel/rcutorturefqs_8rut   ass="sref">VERBfqs_8rut   "> 8Sss="line" name="L856"> 856 1394 class=13                        13   >139> + VERBtest_boortt;rcSernel/rcutorture"> f="kernel/rcutortur"> f="kde=kine" name="L845"> 84can_boortass="sref">VERBcan_boort"> 8Sss="line" name="L856"> 856 1395 class=13s="line" name="L807"> 8013s=">1399"> 8222222222222222utorture.c#L826"rest_boort_     valass="sref">VERBtest_boorta     val"> 8Srcss="sref">callrest_boort_dur_PRINass="sref">VERBtest_boortadur_PRINt;rcSernel/rcutorturea href=rbsecsernel/rcutorturhduref=rbsecs"> 8Sss="line" name="L856"> 856 1396 class=13el/rcutorture.c#L799" id13el/>139e.c#L877" id="L877" class="line" namonoff_     valernel/rcutorturonoff_     valt;rcSernel/rcutortureonoff_holdoffernel/rcutorturonoff_holdofft;rc9"L82492class="line" 78"> 87ts/* W13sof>139urred"ss="line" name="L856"> 856 13l8 class=13rcutorture.c#L800" id9"L13rcu>1398classs="line" name="L856"> 856 13l9 class=13>/13>13ltortuhref="kboouc class="line" namnotifier_b" naass="sref">VERBnotifier_b" na
rcu);
oldst14an class=14an can class="comment">/14an >140c
VERBnotifier_callt;rc = css="sref">callrcu);
);
 8Sss="line" name="L856"> 856 14a1 class=14a_stutter_wait(1401a hr}"L82492class="line" 78"> 87ts140d="L854" class="line" name="L854"> 814a3 class=14aclass="sref">fullstop1409"L81href="kll_rclass="line" naml/r);
);
 836 856 14a4 class=14a                       14a  >140> + oldst14a5 class=14a="line" name="L807"> 8014a=">140 href="ker8elboouc class="line" namt9el_soouc ass="sref">VERBtael_soouc t;rc2*lass="line" nam ass="sref">VERBtt;rc"L82492class="line" 78"> 87ts140classL82492class="line" 78"> 87ts/* W14aof>140re.c#L789" idclascss="sref">callboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 836 856 14a8 class=14acutorture.c#L800" id9"L14acu>140ss="line" name="L829"=sched389class="line" name="L872"> 87214a9 class=14a/14a14061
VERBmutex_" na(VERBboortamutext;rc9"L82492class="line" 78"> 87tsinit_rcu14tex>141c
rcu_stutter_wait("rcu_torture_boost" 87ts1411a href="+code=call_rcu_time ass="sref">VERBtt;rc = css="sref">callboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 87tsVERBboortar9else.c#[e="L836"> 836 836 87ts141ead_should_stop" class="srecmutex_un" naass="sref">VERBmutex_un" na(VERBboortamutext;rc9"L82492class="line" 78"> 87ts141> + 141 href="ker8el.
 mutex, o9">7wise did9" na!toc#L832" id="L832" class="line" name="L814t6 class=14+code=checkwait:me="L8141VERBtt;rc9"L82492class="line" 78"> 87tsrcu_stu14it">1417a href="+code=call_rcu_timeboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 836 87ts 87ts 14="l>141ine" "ss="line" name="L856"> 856 14t9 class=14f="ker9el/rcutorture.c#L14f=">1419dtime" class="sref">endtime = <142n class=14+code=VERBOSE_PRINTK_STR14+co>142e/spahref="k   class="line" naml/r);
);
 836 856 1421 class=14="stritask =fulp_STing">14="s>142strinoldstarttime" class="sref">oldst14+2 class=14span>)d_sutdown_absorf="14spa>142>
 87ts 8721424 class=14s="line" name="L87/a>   14s=">142> + callboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 836 856 1425 class=14>smp_mb(sts,ordee" n14>sm>142 href="ker8el/rcutort=sched_toel.
 847        unsign14"> >142classL82492class="line" 78"> 87ts
142ss="line" namop" class="srecmutex_" naass="sref">VERBmutex_" na(VERBboortamutext;rc9"L82492class="line" 78"> 87tsrcu_boost_infli14s=">14261
rcu_stutter_wait("rcu_torture_boost" 87ts        struct   >143c
VERBboortar9else.c#[e="L836"> 836 836 856 1431 class=14de=rcu" class="sref">rcu14de=>14>string">"rcud_sttttttttttttttttttttttttttttttttttte="L836"> 836 856 1432 class=14inflight;
);
 87ts1439"L81591classclascss="sref">callIS_ERR="+code=call_rcIS_ERR="line=call_rcu_timeboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836oldst1434 class=14ost_cb(struct 14>> +  836VERBboortar9else.c#[e="L836"> 836 87tsh14ode>1439"> 8222222222222222utorture.c#L826"orflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 1436 class=14lass="line" name="L837">14las>143e.c#L877" id="L877" class="line" namn_pan>);
VERBn_pan>);
 856 1437 class=14re.c#L839" id="L839" cla14re.>143re.c#L789" id8"L78988css="sref">callboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 836 87ts143ss="line" name="L829"cp" class="srecmutex_un" naass="sref">VERBmutex_un" na(VERBboortamutext;rc9"L82492class="line" 78"> 87ts);
 836 87ts144c
 856 1441 class=14a href="+code=rbip" clas14a h>1441a href="+code=call_rcu_time21" id9"bindernel/rcutortur21" id9"bind="line=call_rcu_timeboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 87ts144>
VERBwake_up_process="line=call_rcu_timeboortar9elsass="sref">VERBboortar9else.c#[e="L836"> 836 87ts(void *VERBmutex_un" na(VERBboortamutext;rc9"L82492class="line" 78"> 87ts 856 1446 class=1448        unsigned l1448<>144classL82492class="line" 78"> 87ts 8elay"s, 1448 class=14ref="kernel/rcutorture.c14ref>144ine" name="L830"> 830
< * Cause2uot;rantoL827" rest29o a href=r29"> system af    rh" rest2hakt; clis is vulnerapab cla9"> 8elay"s, 1449 class=14light  sduref=rbsecs moid9" parlaster"sref">oldstarttime = 14las>145c

1451a hrhref="k   d long 145ode=ke=call_rcu_timel/rc);
VERBar2t;rcess="line" name="L856"> 856 1453 class=14ref="kernel/rcutorture.c14ref>1459"L81oldstarttime" class="sref">oldst1454 class=14ref="+code=sp" class="sr14ref>145> + VERBdeltat;rc"L82492class="line" 78"> 87ts = 1;
14sch>1459"> 822222222unsigned longtop" class="srecjiffies_sna/rcutorture.c#L8jiffies_sna/t;rc"L82492class="line" 78"> 87tssched_s14er">145classL82492class="line" 78"> 87tsrcu_stutter_wait("rcu_torture_boost");
 856 14l8 class=149"> 859             149">>145ss="line" namop" class="srecjiffies_sna/rcutorture.c#L8jiffies_sna/t;rc ="e="L836"> 836 87tsVULONG_CMP_LT="line=call_rcu_timejiffies_sna/rcutorture.c#L8jiffies_sna/t;rcSernel/rcutorturea href=rb9189rcutorture.c#L8a href=rb9189t;rc9 TTL82492class="line" 78"> 87ts(&<14hea>146 de=kthread_should_sme="L840"> 840
oldst1461 class=14s="sref">rcu);
"rcud_strnel/rcutorturedeltaass="sref">VERBdeltat;rc ="e="L836"> 836 87ts 863      14me=>146ode=kthread_should_stclascss="sref">callverboseernel/rcutorturverboseCMP_ess="line" name="L856"> 856 14h3 class=14"L865" class="line" name14"L8>1469"L81591class="line" ;rcud_strnel/rcutorturepinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst1464 class=14e="L866"> 866       14e=">146> + );
 856 1465 class=14 =    typeCMP_Srcss="sref">calldeltaass="sref">VERBdeltat;rc9"L82492class="line" 78"> 87ts 824kthreadeltaass="sref">VERBdeltat;rc9"L82492class="line" 78"> 87ts146re.c#L789" id8"L78988css="sref">calljiffies_sna/rcutorture.c#L8jiffies_sna/t;rc ="e="L836"> 836 87ts146ss="line" nam"ss="line" name="L856"> 856 14h9 class=14                 if (146torture.c#L79clascss="sref">calla>
oldst147n class=14 class="sref">fullstop147 de=kthread_should_sts="sref">kthreaorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 87ts147string">"rcud_st=sched_torture_read_unlock" class="sref"1472 class=14s="line" name="L874"> 8714s=">147ode=kthread_s"ss="line" name="L856"> 856 1473 class=14terval. */
147ead_s89class="line" name="L872"> 87214 4 class=14                147> +  system.toc#L832" id="L832" class="line" name="L814 5 class=14de=oldstarttime" class="14de=>1478namess="line" name="L856"> 856 1476 class=14Z;
rcu_stutter_wait("rcu_torture_boost");
 87ts 836
 879<14"li>147ss="line" namop" class="srecpan>);
);

 success/fae"27" message.toc#L832" id="L832" class="line" name="L814 9 class=14);
 = { .14);
>14761
 system.toc#L832" id="L832" class="line" name="L8148n class=14 href="+code=smp_mb" cla14 hr>148 de=kthread_s=sched_torture_read_unlock" class="sref"1481 class=14/a>          = >1481href"ss="line" name="L856"> 856 1482 class=14 href="+code=call_rcusre14 hr>148d="L854" class="line" name="L854"> 81483 class=14t;);
 81484 class=14    s          r14148> + 148 href.
 8elay"s, 1486 class=1488class="line" name="L8n1488c>148classname="L830"> 830
< e Exe9">e random=CPU-hotplug oper_PRINs=at2uot;int" val specifieds, clis is vulnerapab cla9"> 8elay"s, 1487 class=14      }
 onoff_     val"sref">oldstarttime = jiffies;
 830
< *c#L832" id="L832" class="line" name="L81489 class=14           }
14las>149 de=kop" class="srecpan>);
);
VERBar2t;rcess="line" name="L856"> 856 1491 class=14u_stutter_wait(149strinoldstarttime" class="sref">oldst1492 class=14                 if (149>
fullstop1499"L81591class   class="line" nammax_pf="+code=call_rcmax_pft;rc ="-so848" id="L848" class="line" nam1494 class=14                        14   >149> +  87ts 8014s=">1498namess="line" name="L856"> 856 1496 class=14el/rcutorture.c#L799" id14el/>149rcu_stutter_wait("rcu_torture_boost");
 856 1497 class=14sof class="comment">/* W14sof>1497a href="+code=call_rcu_timefor_each_on8"> _Opuutter_wait(for_each_on8"> _Opu="line=call_rcu_time_pf="+code=call_rc_put;rcess="line" name="L856"> 856 14l8 class=14rcutorture.c#L800" id9"L14rcu>149ss="line" name="L829"cp" class="srecmax_pf="+code=call_rcmax_pft;rc ="lass="line" nam_pf="+code=call_rc_put;rcorture_read_unlock" class="sref"1499 class=14>/14>14961
 856 15an class=15an can class="comment">/15an >150 de=kthread_sclascss="sref">callonoff_holdoffernel/rcutorturonoff_holdofft;rc ne"  0l=oldstarttime" class="sref">oldst15a1 class=15a_stutter_wait(150string">"rcud_strnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 15a2 class=15a                if (150ode=kthread_should_strnel/rcutortures9c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreaonoff_holdoffernel/rcutorturonoff_holdofft;rc *utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 87215a3 class=15aclass="sref">fullstop1509"L81591class="line" e=call_rcu_timeorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 15a4 class=15a                       15a  >150> +  856 15a5 class=15a="line" name="L807"> 8015a=">150 href="ker8eline" name="L840"> 840
oldst15a6 class=15al/rcutorture.c#L799" id15al/>150e.c#L877" id="L877" class="line" nam_pf="+code=call_rc_put;rc ="ne=call_rcu_timel/rcrandomture_read_unlocrcu>random( 856 15a7 class=15aof class="comment">/* W15aof>150re.c#L789" id8"L78988clascss="sref">call_pfcone=smp_795" id8"L795_pfcone=sm="line=call_rcu_time_pf="+code=call_rc_put;rce TTte="L836"> 836oldst15a8 class=15acutorture.c#L800" id9"L15acu>150ss="line" name="L829"8"L78988clascss="sref">callverboseernel/rcutorturverboseCMP_ess="line" name="L856"> 856 15a9 class=15a/15a150torture.c#L791" id8"L877" id="L877" class="line" nampinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst151n class=15tex_f="+cosref">init_rcu15tex>151 de=kthread_should_st" id8"L877" id="L877" clrcu_torture_boost");
 856 1511 class=15 bhouk_torture_boost_rte15 bh>151string">"rcud_sttttttttttttttttttttttttrnel/rcutorture);
   typeCMP_Srcss="sref">call"pf="+code=call_rc_put;rce"L82492class="line" 78"> 87tsVERBn_offline_attemptsde=k++ass="line" name="L856"> 856 1513 class=15ef="ker9el/rcutorture.c#15ef=>1519"L81591class="line" ;rcud_stclascss="sref">call_pfcef=rernel/rcutortur_pfcef=r="line=call_rcu_time_pf="+code=call_rc_put;rce == 0l=oldstarttime" class="sref">oldst1514 class=15el/rcutorture.c#L816" id15el/>151> + callverboseernel/rcutorturverboseCMP_ess="line" name="L856"> 856 15t5 class=15/
151 href="ker8el/rcutorture.c#Lsrcud_stthref="kLe=call_rcu_timepinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst1516 class=15+code=checkwait:me="L8151e.c#L877" id="L877" crcutorture.c#Lsrcud_stthref="kLercu_torture_boost");
 856 1517 class=15it" class="sref">rcu_stu15it">151re.c#L789" id8"L78988rcutorture.c#Lsrcud_stthref="kLe=call_rcu_time);
   typeCMP_Srcss="sref">call"pf="+code=call_rc_put;rce"L82492class="line" 78"> 87ts 87ts 15="l>151ss="line" name="L829"8"L78988href="kLe=call_rcu_timen_offline_successesrcutorture.c#L8n_offline_successesde=k++ass="line" name="L856"> 856 1519 class=15f="ker9el/rcutorture.c#L15f=">151torture.c#L791" id8"L877" id="ss="line" name="L856"> 856 152n class=15+code=VERBOSE_PRINTK_STR15+co>152 de=kthread_should_st} elsetclascss="sref">call_pfcis_hotpluggae.c#L795" id8"L795_pfcis_hotpluggae.c="line=call_rcu_time_pf="+code=call_rc_put;rcel=oldstarttime" class="sref">oldst1521 class=15="stritask =fulp_STing">15="s>152string">"rcud_stttttttttclascss="sref">callverboseernel/rcutorturverboseCMP_ess="line" name="L856"> 856 15+2 class=15span>)d_sutdown_absorf="15spa>152ode=kthread_should_sthref="kLtttttttte=call_rcu_timepinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst15+3 class=15         if ( 856 1524 class=15s="line" name="L87/a>   15s=">152> +    typeCMP_Srcss="sref">call"pf="+code=call_rc_put;rce"L82492class="line" 78"> 87tssmp_mb(sts,ordee" n15>sm>152 href="ker8el/rcutort8ttttttte=call_rcu_timen_on8"> _attemptsass="sref">VERBn_online_attemptsde=k++ass="line" name="L856"> 856 15+6 class=15"> 847        unsign15"> >152e.c#L877" id="L877" crcutortuclascss="sref">call_pfcupture_read_unloc_pfcup="line=call_rcu_time_pf="+code=call_rc_put;rce == 0l=oldstarttime" class="sref">oldst1527 class=15tcallverboseernel/rcutorturverboseCMP_ess="line" name="L856"> 856 15+8 class=15rture.c#L830" id="L830" 15rtu>152ss="line" name="L829"8"L78988href="kL8ttttttte=call_rcu_timepinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst15+9 class=15s="sref">rcu_boost_infli15s=">152torture.c#L791" id8"L877" id="L877" cref="kL8tttttttercu_torture_boost");
 856 153n class=15>        struct   >153 de=kthread_should_st" id8"L877" id="L877" c8ttttttte=call_rcu_time);
   typeCMP_Srcss="sref">call"pf="+code=call_rc_put;rce"L82492class="line" 78"> 87tsrcu15de=>15>string">"rcud_sttttttttttttttttte=call_rcu_timen_on8"> _successesrcutorture.c#L8n_online_successesde=k++ass="line" name="L856"> 856 1532 class=15inflight;
 856 1533 class=15nel/rcutorture.c#L836" i15nel>1539"L81591class="line" "ss="line" name="L856"> 856 1534 class=15ost_cb(struct 15>> +  824kthreaonoff_     valernel/rcutorturonoff_     valt;rc *utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 8721535 class=15ode=head" class="sref">h15ode>1539"> 822222222"ss="line" name="L856"> 856 1536 class=15lass="line" name="L837">15las>153rcu_stutter_wait("rcu_torture_boost");
 87ts153re.c#L789" id=sched_torture_read_unlock" class="sref"1538 class=15code=container_of" class15cod>153ine" "ss="line" name="L856"> 856 1539 class=15a>);
endtime = <154n class=15"kernel/rcutorture.c#L8415"ke>154e/spahref="k   class="line" nam__Opuinitture_read_unloc__Opuinit + 1541href( 856 1542 class=15class="line" name="L844"15cla>1542staroldstarttime" class="sref">oldst1543 class=15a>(void * 87ts 822222222clascss="sref">callonoff_     valernel/rcutorturonoff_     valt;rc &las= 0lid="L832" class="line" name="L81546 class=1548        unsigned l1548<>154e.c#L877" id="L877" c=sched_torture_read_unlock" class="sref"15"7 class=15 href="kernel/rcutorture15 hr>1547a href="+code=call_rcu_timeonoff_99elernel/rcutorturonoff_99elt;rc ="lass="line" nam21" id9"rurernel/rcutortur21" id9"rur="line=call_rcu_timeran>);
);
Sernel/rcutortureNULL="+code=call_rcNULLt;rcStercu_torture_boost");
 87ts1548"> 822222222clascss="sref">callIS_ERR="+code=call_rcIS_ERR="line=call_rcu_timeonoff_99elernel/rcutorturonoff_99elt;rcel=oldstarttime" class="sref">oldst1549 class=15light  836 87ts15las>155 de=kthread_should_sts="sref">kthreaonoff_99elernel/rcutorturonoff_99elt;rc ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts155string">"rcud_st=sched_lass="line" nam=scture_read_unlocrett;rc"L82492class="line" 78"> 87ts155ode=kthread_s"ss="line" name="L856"> 856 1553 class=15ref="kernel/rcutorture.c15ref>1553e.c#L789" id=sched_torture_read_unlock" class="sref"1554 class=15ref="+code=sp" class="sr15ref>155> + <"ss="line" name="L856"> 856 1555 class=15sched_priority = 1;
15sch>1558namess="line" name="L856"> 856 1556 class=15er" class="sref">sched_s15er">155classhref="kll_rclass="line" naml/rcutortureonoff_cleanupture_read_unlocrcu>);
 856 15l7 class=15t; 0) {
oldst15l8 class=159"> 859             159">>1558"> 822222222clascss="sref">callonoff_99elernel/rcutorturonoff_99elt;rc =6"e="L836"> 836 856 15l9 class=15861" class="line" name="15861>155torture.c#L791" id8"L=schedorture_read_unlock" class="sref"156n class=15head_on_stack(&<15hea>156c
rcu_stutter_wait("rcu_torture_boost" 87tsrcu);
 87ts 863      15me=>156>
 87ts1569"L81"ss="line" name="L856"> 856 1564 class=15e="L866"> 866       15e=">156> + 156 href#elset.
156classL82492class="line" 78"> 87ts156re.c#href="k   d long 156ss="l( 856 15h9 class=15                 if (156tortuoldstarttime" class="sref">oldst157n class=15 class="sref">fullstop157 de=kthread_s=sched_torture_read_unlock" class="sref"1571 class=15                        15   >1571href"ss="line" name="L856"> 856 1572 class=15s="line" name="L874"> 8715s=">157d="L854" class="line" name="L854"> 81573 class=15terval. */
1579"L81href="kll_rclass="line" naml/rcutortureonoff_cleanupture_read_unlocrcu>);
 856 15 4 class=15                157> + oldst15 5 class=15de=oldstarttime" class="15de=>157 href"ss="line" name="L856"> 856 1576 class=15Z;
 87ts 879<15"li>1578classs="line" name="L856"> 856 15 9 class=15);
 = { .15);
>157{
 8elay"s, 158n class=15 href="+code=smp_mb" cla15 hr>158c

ns, clis is vulnerapab cla9"> 8elay"s, 1581 class=15/a>          = >1581hrefn>
oldstarttime = 158d="L8name="L830"> 830
< *c#L832" id="L832" class="line" name="L81583 class=15t;);
);
 856 1584 class=15    s          r15158> + oldst1585 class=15" id8"L78688class="line"15" i>1589"> 822222222unsigned longtop" class="srecLass_atture_read_unlocLass_att;rc"L82492class="line" 78"> 87ts 87tsrcu_stutter_wait("rcu_torture_boost");
 856 1588 class=15="sref">jiffies;
 822222222clascss="sref">callhrell_Opu_holdoffture_read_unlocLaell_Opu_holdofft;rc &e"  0l=oldstarttime" class="sref">oldst1589 class=15           }
rcu_stutter_wait("rcu_torture_boost");
 856 159n class=15lass="line" name="L872">15las>159 de=kthread_should_sts="sref">kthreas9c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreahrell_Opu_holdoffture_read_unlocLaell_Opu_holdofft;rc *utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 8721591 class=15u_stutter_wait(159string">"rcud_strnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 1592 class=15                 if (159ode=kthread_s"ss="line" name="L856"> 856 1593 class=15 class="sref">fullstop1599"L81591classclasme="L840"> 840
oldst1594 class=15                        15   >159> +  87ts 8015s=">1599"> 8222222222222222ut
159e.c#L877" id="L877" class="line" nampinft" class="sref">Vpinft"<(VKERN_ALERT
);
 856 1597 class=15sof class="comment">/* W15sof>159re.c#L789" id8"L78988css="sref">callrcu>rid9"" naass="sref">VERBrcu>rid9"" na="lineass="line" name="L856"> 856 1598 class=15rcutorture.c#L800" id9"L15rcu>159ss="line" name="L829"cp" class="srecpreempt_disae.c#L795" id8"L795preempt_disae.c="lineass="line" name="L856"> 856 1599 class=15>/15>159torture.c#L791" id8"Line" nae=call_rcu_timeULONG_CMP_LT class="sref">VULONG_CMP_LT="line=call_rcu_timegetbsecondsrcutorture.c#L8getbseconds="lineSernel/rcutortureaass_atture_read_unlocLass_att;rc)ess="line" name="L856"> 856 16an class=16an can class="comment">/16an >160 de=kthread_should_st" id8"L8continueoel.
"rcud_strnel/rcutorturepreempt_enae.c#L795" id8"L795preempt_enae.c="lineass="line" name="L856"> 856 16a2 class=16a                if (160ode=kthread_should_strnel/rcutorturercu>rid9"un" naass="sref">VERBrcu>rid9"un" na="lineass="line" name="L856"> 856 16a3 class=16aclass="sref">fullstop1609"L81591class="line" e=call_rcu_timepinft" class="sref">Vpinft"<(VKERN_ALERT
);
 856 16a4 class=16a                       16a  >160> +  856 16a5 class=16a="line" name="L807"> 8016a=">160 href="ker8elrnel/rcutorturercu);
VERBrcu);
);
 856 16a6 class=16al/rcutorture.c#L799" id16al/>160e.c#L877" id=ine" name="L840"> 840
 856 16a7 class=16aof class="comment">/* W16aof>160re.c#L789" id8"L78988s="sref">kthreas9c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824<10 *utorture.c#L826"HZ#L795" id8"L795HZclasL389class="line" name="L872"> 87216a8 class=16acutorture.c#L800" id9"L16acu>160ss="line" nam=sched_torture_read_unlock" class="sref"16a9 class=16a/16a160tortu"ss="line" name="L856"> 856 161n class=16tex_f="+cosref">init_rcu16tex>161 de=kss="line" name="L856"> 856 1611 class=16 bhouk_torture_boost_rte16 bh>1611hrefn>
161ode=khref="k   class="line" nam__initture_read_unloc__init +  856 1613 class=16ef="ker9el/rcutorture.c#16ef=>1619"L81oldstarttime" class="sref">oldst1614 class=16el/rcutorture.c#L816" id16el/>161> +  87ts
1618namess="line" name="L856"> 856 1616 class=16+code=checkwait:me="L8161e.c#L877" id=clascss="sref">callhrell_Oputure_read_unlocLaell_Oput;rc &las= 0lid="L832" class="line" name="L81617 class=16it" class="sref">rcu_stu16it">161re.c#L789" id8"L78988=sched_torture_read_unlock" class="sref"1618 class=16="line" }878"> 87ts 16="l>161ss="line" namop" class="srecLaell_99elernel/rcutorturhaell_99elt;rc ="lass="line" nam21" id9"rurernel/rcutortur21" id9"rur="line=call_rcu_timeran>);
);
Sernel/rcutortureNULL="+code=call_rcNULLt;rcStercu_torture_boost");
 856 1619 class=16f="ker9el/rcutorture.c#L16f=">161torture.c#L79clascss="sref">callIS_ERR="+code=call_rcIS_ERR="line=call_rcu_timeLaell_99elernel/rcutorturhaell_99elt;rcel=oldstarttime" class="sref">oldst162n class=16+code=VERBOSE_PRINTK_STR16+co>162 de=kthread_should_steass="line" nam=scture_read_unlocrett;rc ="e="L836"> 836 856 1621 class=16="stritask =fulp_STing">16="s>162string">"rcud_stop" class="srecLaell_99elernel/rcutorturhaell_99elt;rc ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts)d_sutdown_absorf="16spa>162ode=kthread_should_st=sched_lass="line" nam=scture_read_unlocrett;rc"L82492class="line" 78"> 87ts 856 1624 class=16s="line" name="L87/a>   16s=">162> + smp_mb(sts,ordee" n16>sm>162 href"ss="line" name="L856"> 856 16+6 class=16"> 847        unsign16"> >162classL82492class="line" 78"> 87ts162ss="lhref="kll_rclass="line" naml/rcutortureLaell_Oleanupture_read_unlocrcu>);
 856 16+9 class=16s="sref">rcu_boost_infli16s=">162tortuoldstarttime" class="sref">oldst163n class=16>        struct   >163 de=kthread_sclascss="sref">callLaell_99elernel/rcutorturhaell_99elt;rc =6"e="L836"> 836 856 1631 class=16de=rcu" class="sref">rcu16de=>16>string">"rcud_st=schedorture_read_unlock" class="sref"1632 class=16inflight;
rcu_stutter_wait("rcu_torture_boost" 856 1633 class=16nel/rcutorture.c#L836" i16nel>163ead_should_stop" class="srec21" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timeLaell_99elernel/rcutorturhaell_99elt;rceass="line" name="L856"> 856 1634 class=16ost_cb(struct 16>> +  87tsh16ode>163 href"ss="line" name="L856"> 856 1636 class=16lass="line" name="L837">16las>163classL82492class="line" 78"> 87ts163urred.
163ine" ll_rclass="line" naml/rcutorturebarri  _cbfture_read_unlocrcu>);
hid9ture_read_unlocrcu>hid9t;rc *lass="line" nam=cuture_read_unlocrcut;rcess="line" name="L856"> 856 1639 class=16a>);
oldst164n class=16"kernel/rcutorture.c#L8416"ke>164c
( 856 1641 class=16a href="+code=rbip" clas16a h>1641href"ss="line" name="L856"> 856 1642 class=16class="line" name="L844"16cla>164d="L854" class="line" name="L854"> 81643 class=16a>(void *
);
);
 856 1645 class=16#L847" id="L847" class="16#L8>1649"> 8oldstarttime" class="sref">oldst1646 class=1648        unsigned l1648<>164e.c#L877" id=longtop" class="srecmyi9ture_read_unlocmyi9t;rc ="(long)         =  856 1647 class=16 href="kernel/rcutorture16 hr>1647a href="+code=call_rcu_timeboolture_read_unlocbool + 1648"> 822222222boouc class="line" nam=cu>hid9ture_read_unlocrcu>hid9t;rc lass="line" nam=cuture_read_unlocrcut;rcorture_read_unlock" class="sref"1649 class=16light endtime = <165n class=16lass="line" name="L851">16las>165c
VERB  it_rcu>hid9_onrhaena="linT(1651a href="+code=call_rcu_timeorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 856 1652 class=16ref="kernel/rcutorture.c16ref>165>
 856 1653 class=16ref="kernel/rcutorture.c16ref>1653e.c#L789" iddo=oldstarttime" class="sref">oldst1654 class=16ref="+code=sp" class="sr16ref>165> +  856 1655 class=16sched_priority = 1;
16sch>165 href="ker8el/rcutorture.c#Lsrcue=call_rcu_timebarri  _phaseernel/rcutorturbarri  _phasehref=!="lass="line" name_rtphaseernel/rcutorture_rtphaset;rc ||ss="line" name="L856"> 856 1656 class=16er" class="sref">sched_s16er">165e.c#L877" id="L877" crcutorture.e="L840"> 840
 856 1657 class=16t; 0) {
 840 859             169">>165ss="line" name="L829"cp" class="srece_rtphaseernel/rcutorture_rtphaset;rc ="e=call_rcu_timebarri  _phaseernel/rcutorturbarri  _phasehreforture_read_unlock" class="sref"1659 class=16861" class="line" name="16861>165torture.c#L791" id8"Lrnel/rcutorturesmp_mbass="sref">VERBsmp_mb="lineal.
calla>
 840rcu);
"rcud_stttttttttb idkorture_read_unlock" class="sref"1662 class=16me="L863"> 863      16me=>166ode=kthread_should_strnel/rcutorturecur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecellture_read_unloccell(1669"L81591class="line" clascss="sref">callatomic_dec_and_restrcutorture.c#L8atomic_dec_and_rest="linT( 866       16e=">166> +  822222222"=ine" name="L840"> 840
 836 836rcu_stutter_wait("rcu_torture_boost");
 87ts1667a href="+code=call_rcu_timercu);
VERBrcu);
);
 87ts166ss="line" namine" name="L840"> 840
 856 16h9 class=16                 if (166torture.c#L791" id8"Lrnel/rcutortures9c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824<19"L82492class="line" 78"> 87tsfullstop167c
 87ts1671a href="+code=call_rcu_timedestroy_rcu>hid9_onrhaenaass="sref">VERBdestroy_rcu>hid9_onrhaena="linT( 8716s=">167ode=kthread_s=sched_torture_read_unlock" class="sref"1673 class=16terval. */
1679"L81"ss="line" name="L856"> 856 16 4 class=16                167> + 167classhref="k   class="line" namrcu>);
);
 856 1677 class=16f="+code=ULONG_CMP_LT" c16f=">1677a hroldstarttime" class="sref">oldst16 8 class=16"line" name="L879"> 879<16"li>1678"> 822222222c  class="line" namiass="sref">VERB hreforture_read_unlock" class="sref"16 9 class=16);
 = { .16);
>1679dtime" class="sref">endtime = <168n class=16 href="+code=smp_mb" cla16 hr>168c
rcu_stutter_wait("rcu_torture_boost");
 87ts          = >1681a href="+coddo=oldstarttime" class="sref">oldst1682 class=16 href="+code=call_rcusre16 hr>168ode=kthread_should_strnel/rcutortureatomic_sscture_read_unlocatomic_ssc="linT( 856 1683 class=16t;);
(lass="line" name="L856"> 856 1684 class=16    s          r16168> + VERBsmp_mb="lineal.
1689"> 8222222222222222ut=call_rcu_timebarri  _phaseernel/rcutorturbarri  _phasehref== me="L840"> 840calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenrbarri  _cbsrcutorture.c#L8nrbarri  _cbsoclass="line" namiass="sref">VERB href++ess="line" name="L856"> 856 1687 class=16      }
VERB href]lass="line" name="L856"> 856 1688 class=16="sref">jiffies;
 856 1689 class=16           }
( 856 169n class=16lass="line" name="L872">16las>169 de=kthread_should_stass="line" e=call_rcu_timea>
 856 1691 class=16u_stutter_wait(169string">"rcud_stass="line" e=call_rcu_timefull9el/rcutorture.c#L8full9el/href=!="lass="line" namFULLSTOP_DONTSTOPrcutorture.c#L8FULLSTOP_DONTSTOPt;rceorture_read_unlock" class="sref"1692 class=16                 if (169ode=kthread_should_stclascss="sref">calla>
 840fullstop1699"L81591class="line" ;rcud_stb idkorture_read_unlock" class="sref"1694 class=16                        16   >169> + VERBn_barri  _attemptshref++orture_read_unlock" class="sref"1695 class=16s="line" name="L807"> 8016s=">1699"> 8222222222222222utnel/rcutorturecur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecbrbarri  rcutorture.c#L8cbrbarri  ="lineaL82492class="line" 78"> 87ts169e.c#L877" id="L877" cclascss="sref">callatomic_rid9ture_read_unlocatomic_rid9="linT(l=oldstarttime" class="sref">oldst1697 class=16sof class="comment">/* W16sof>169re.c#L789" id8"L78988FULLSTOPtorture.c#L826"nrpan>);
);
169ss="line" name="L829"FULLSTOPtorture.c#L826"WARN_ON_ONCErcutorture.c#L8WARN_ON_ONCE<19"L82492class="line" 78"> 87ts/16>169torture.c#L791" id8"L"ss="line" name="L856"> 856 17an class=17an can class="comment">/17an >170 de=kthread_should_stlass="line" namnrbarri  _successesrcutorture.c#L8n_barri  _successeshref++orture_read_unlock" class="sref"17a1 class=17a_stutter_wait(170string">"rcud_strnel/rcutortures9c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824kthreaHZ#L795" id8"L795HZclas / 10lass="line" name="L856"> 856 17a2 class=17a                if (170ode=kthread_s"=ine" name="L840"> 840
 836 836fullstop170ead_should_stop" class="srecorflass="sref">rcu_stutter_wait("rcu_torture_boost");
 87ts170> + VERBrcu);
);
 87ts 8017a=">170 href="ker8eline" name="L840"> 840
 856 17a6 class=17al/rcutorture.c#L799" id17al/>170e.c#L877" id="L877" class="line" nams9c id9"L8189 claine" na7ure.c#L795" id8"L79589c id9"L8189 cla     24"> 824<19"L82492class="line" 78"> 87ts/* W17aof>170re.c#L789" id=sched_torture_read_unlock" class="sref"17a8 class=17acutorture.c#L800" id9"L17acu>170ine" "ss="line" name="L856"> 856 17a9 class=17a/17a1709dtime" class="sref">endtime = <171n class=17tex_f="+cosref">init_rcu17tex>171c

);
 856 1712 class=17         oldst1713 class=17ef="ker9el/rcutorture.c#17ef=>1719"L81591class   class="line" namiass="sref">VERB hreforture_read_unlock" class="sref"1714 class=17el/rcutorture.c#L816" id17el/>171> +  87ts
1718namess="line" name="L856"> 856 1716 class=17+code=checkwait:me="L8171e.c#L877" id=clascss="sref">callnrbarri  _cbsrcutorture.c#L8nrbarri  _cbs == 0lss="line" name="L856"> 856 1717 class=17it" class="sref">rcu_stu17it">171re.c#L789" id8"L78988=sched_torture_read_unlock" class="sref"1718 class=17="line" }878"> 87ts 17="l>1718"> 822222222clascss="sref">callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecellture_read_unloccell =6"e="L836"> 836 840 836oldst1719 class=17f="ker9el/rcutorture.c#L17f=">171torture.c#L791" id8"Lrnel/rcutorturepinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst172n class=17+code=VERBOSE_PRINTK_STR17+co>172 de=kthread_should_st" id8"Lra href="+code=infligh"sref Cell or=barri   ops missrtu for2 #37;s,\n  id="L856" cSss="line" name="L856"> 856 1721 class=17="stritask =fulp_STing">17="s>172string">"rcud_st" id8"Lrnel/rcutortureutorturetype#L795" id8"L795s   typeCMP_Srcss="sref">call"ur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutortureSTinrcutorture.c#L8nTint;rceorture_read_unlock" class="sref"17+2 class=17span>)d_sutdown_absorf="17spa>172ode=kthread_should_strnel/rcutorturepinft" class="sref">Vpinft"<(VKERN_ALERT
callTORTURclFLAtutter_wait(TORTURclFLAtt;rcldstarttime" class="sref">oldst1723 class=17         if ( 856 1724 class=17s="line" name="L87/a>   17s=">172> +    typeCMP_eorture_read_unlock" class="sref"17+5 class=17>smp_mb(sts,ordee" n17>sm>1729"> 8222222222222222u=sched_torture_read_unlock" class="sref"17+6 class=17"> 847        unsign17"> >172e.c#L877" id="ss="line" name="L856"> 856 1727 class=17t( 856 17+8 class=17rture.c#L830" id="L830" 17rtu>172ss="line" namop" class="srecatomic_sscture_read_unlocatomic_ssc="linT( 856 17+9 class=17s="sref">rcu_boost_infli17s=">1729s="line" namop" class="srecbarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li =ss="line" name="L856"> 856 173n class=17>        struct   >173 de=kthread_should_stlass="line" namkzellocrcutorture.c#L8kzelloc<( 856 1731 class=17de=rcu" class="sref">rcu17de=>17>string">"rcud_sthould_stlass="line" namGFP_KERNEL="+code=call_rcGFP_KERNELCMP_eorture_read_unlock" class="sref"1732 class=17inflight;
 856 1733 class=17nel/rcutorture.c#L836" i17nel>1739"L81591class="line" e=call_rcu_timekzellocrcutorture.c#L8kzelloc<( 856 1734 class=17ost_cb(struct 173> + h17ode>1739"> 822222222clascss="sref">callbarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li =6"e="L836"> 836 840 856 1736 class=17lass="line" name="L837">17las>173e.c#L877" id="L877" c=sched_-e="L840"> 840 87ts1737a href="+codfor2scss="sref">calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenrbarri  _cbsrcutorture.c#L8nrbarri  _cbsoclass="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst1738 class=17code=container_of" class17cod>173ss="line" name="L829"cp" class="srec  it_waitqueue>hid9ture_read_unloc  it_waitqueue>hid9="linT(VERB href]lass="line" name="L856"> 856 1739 class=17a>);
VERB href] ="lass="line" nam21" id9"rurernel/rcutortur21" id9"rur="line=call_rcu_timeran>);
);
Sss="line" name="L856"> 856 174n class=17"kernel/rcutorture.c#L8417"ke>174 de=kthread_should_stass="line"                         VERB hrefSss="line" name="L856"> 856 1741 class=17a href="+code=rbip" clas17a h>174string">"rcud_stass="line"                         ;rcu_torture_boost");
 87ts174ode=kthread_should_stclascss="sref">callIS_ERR="+code=call_rcIS_ERR="line=call_rcu_timebarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li[op" class="sreciass="sref">VERB href]el=oldstarttime" class="sref">oldst1743 class=17a>(void * 836VERB href]e"L82492class="line" 78"> 87ts);
 87tsVERB href] ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts        unsigned l1748<>174e.c#L877" id="L877" crcutortu=sched_lass="line" nam=scture_read_unlocrett;rc"L82492class="line" 78"> 87ts 856 1748 class=17ref="kernel/rcutorture.c17ref>1748"> 822222222"ss="line" name="L856"> 856 1749 class=17light  836);
);
callNULL="+code=call_rcNULLt;rcSss="line" name="L856"> 856 175n class=17lass="line" name="L851">17las>175 de=kthread_should_stass="line"         ;rcu_torture_boost");
 87ts1751a href="+codclascss="sref">callIS_ERR="+code=call_rcIS_ERR="line=call_rcu_timebarri  _99elernel/rcutorturbarri  _99elt;rcel=oldstarttime" class="sref">oldst1752 class=17ref="kernel/rcutorture.c17ref>175ode=kthread_should_strnel/rcutorturerscture_read_unlocrett;rc ="e="L836"> 836 87ts1759"L81591class="line" e=call_rcu_time);
 87ts 836 87ts = 1;
17sch>175 href="ker8el"ss="line" name="L856"> 856 1756 class=17er" class="sref">sched_s17er">175e.c#L877" id==sched_torture_read_unlock" class="sref"1757 class=17t; 0) {
 856 1758 class=179"> 859             179">>175ss="lss="line" name="L856"> 856 1759 class=17861" class="line" name="17861>175tortu.
);
 856 1761 class=17s="sref">rcu);
oldst1762 class=17me="L863"> 863      17me=>176ode=kthread_s   class="line" namiass="sref">VERB hreforture_read_unlock" class="sref"17h3 class=17"L865" class="line" name17"L8>1769"L81rture_read_unlock" class="sref"17h4 class=17e="L866"> 866       17e=">176> + callbarri  _99elernel/rcutorturbarri  _99elt;rc !="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst17h5 class=17 =  8222222222222222utnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts 87ts176re.c#L789" id8"L78988s="sref">kthreabarri  _99elernel/rcutorturbarri  _99elt;rc ="e="L836"> 836 87ts1768"> 822222222"ss="line" name="L856"> 856 17h9 class=17                 if (176torture.c#L79clascss="sref">callbarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li !="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst177n class=17 class="sref">fullstop177 de=kthread_should_stfor2scss="sref">calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenrbarri  _cbsrcutorture.c#L8nrbarri  _cbsoclass="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst1771 class=17                        17   >177string">"rcud_stass="linclascss="sref">callbarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li[op" class="sreciass="sref">VERB href] !="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst1772 class=17s="line" name="L874"> 8717s=">177ode=kthread_should_st222222222222222utnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts
1779"L81591class="line" ;rcud_st"L877" class="line" nam21" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timebarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li[op" class="sreciass="sref">VERB href]e"L82492class="line" 78"> 87ts177> + VERB href] ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts 856 1776 class=17Z;
 856 1777 class=17f="+code=ULONG_CMP_LT" c17f=">177re.c#L789" id8"L78988s="sref">kthreakfree#L795" id8"L795kfree="line=call_rcu_timebarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="lie"L82492class="line" 78"> 87ts 879<17"li>177ss="line" name="L829"cp" class="srecbarri  _cbs_99elsrcutorture.c#L8barri  _cbs_99els="li ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts = { .17);
>1779"> 822222222"ss="line" name="L856"> 856 178n class=17 href="+code=smp_mb" cla17 hr>178c
callbarri  _cbs_wqture_read_unlocbarri  _cbs_wq="li !="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst1781 class=17/a>          = >178string">"rcud_strnel/rcutorturekfree#L795" id8"L795kfree="line=call_rcu_timebarri  _cbs_wqture_read_unlocbarri  _cbs_wq="lie"L82492class="line" 78"> 87ts 87ts);
 856 1784 class=17    s          r17178> + <"ss="line" name="L856"> 856 1785 class=17" id8"L78688class="line"17" i>1788namess="line" name="L856"> 856 1786 class=1788class="line" name="L8n1788c>178classhref="k   class="line" namrcu);
VERBnotifi  _blona"L8159         =  856 1787 class=17      }
 856 1788 class=17="sref">jiffies;
oldst1789 class=17           }
 87ts17las>179 de=kL82492class="line" 78"> 87ts(179string">"switchascss="sref">callacPRINture_read_unlocacPRINCMP_e=oldstarttime" class="sref">oldst1792 class=17                 if (179ode=kthread_scase=css="sref">callCPU_ONLINErcutorture.c#L8CPU_ONLINEde=k:ldstarttime" class="sref">oldst1793 class=17 class="sref">fullstop1799"L81591classcase=css="sref">callCPU_DOWN_FAILEDrcutorture.c#L8CPU_DOWN_FAILEDde=k:ldstarttime" class="sref">oldst1794 class=17                        17   >179> +  87ts 8017s=">1799"> 8222222222222222ub idkorture_read_unlock" class="sref"1796 class=17el/rcutorture.c#L799" id17el/>179e.c#L877" id=case=css="sref">callCPU_DOWN_PREPARErcutorture.c#L8CPU_DOWN_PREPAREde=k:ldstarttime" class="sref">oldst1797 class=17sof class="comment">/* W17sof>179re.c#L789" id8"L78988lass="line" namrcu);
 87ts179ss="line" name="L829"b idkorture_read_unlock" class="sref"1799 class=17>/17>179torture.c#L79default:ldstarttime" class="sref">oldst18an class=18an can class="comment">/18an >180 de=kthread_should_stb idkorture_read_unlock" class="sref"18a1 class=18a_stutter_wait(180string">""ss="line" name="L856"> 856 18a2 class=18a                if (180ode=kthread_s=sched_lass="line" namNOTIFY_OK="+code=call_rcNOTIFY_OKt;rc"L82492class="line" 78"> 87tsfullstop1809"L81"ss="line" name="L856"> 856 18a4 class=18a                       18a  >180> +  8018a=">180 hrefhref="kboouc class="line" namnotifi  _blonaass="sref">VERBnotifi  _blona"L815lass="line" namrcu);
VERBrcu);
oldst18a6 class=18al/rcutorture.c#L799" id18al/>180e.c#L877" id=.lass="line" namnotifi  _cellture_read_unlocnotifi  _cell="li ="lass="line" namrcu);
 856 18a7 class=18aof class="comment">/* W18aof>180re.c#}"L82492class="line" 78"> 87ts180ss="lss="line" name="L856"> 856 18a9 class=18a/18a1809dtimhref="kll_rss="line" name="L856"> 856 181n class=18tex_f="+cosref">init_rcu18tex>181c
);
 856 1811 class=18 bhouk_torture_boost_rte18 bh>181strinoldstarttime" class="sref">oldst1812 class=18         VERB hreforture_read_unlock" class="sref"1813 class=18ef="ker9el/rcutorture.c#18ef=>1819"L81rture_read_unlock" class="sref"1814 class=18el/rcutorture.c#L816" id18el/>181> + VERBmutex_lona(VERBfull9el/_mutext;rce"L82492class="line" 78"> 87ts
1815 +  87ts181e.c#L877" id=clascss="sref">callfull9el/rcutorture.c#L8full9el/href==6"e="L836"> 836oldst1817 class=18it" class="sref">rcu_stu18it">181re.c#L789" id8"L78988e="L836"> 836Vpinft"<(
 87ts 18="l>181ss="line" name="L829"FULLSTO;rcu_torture_boost" 87ts181torture.c#L791" id8"Lrnel/rcutorturemutex_unlonaass="sref">VERBmutex_unlona(VERBfull9el/_mutext;rce"L82492class="line" 78"> 87ts182 de=kthread_should_st         = <10lass="line" name="L856"> 856 1821 class=18="stritask =fulp_STing">18="s>182string">"rcud_stclascss="sref">callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecbrbarri  rcutorture.c#L8cbrbarri  ="li !="lass="line" namNULL="+code=call_rcNULLt;rcess="line" name="L856"> 856 1822 class=18span>)d_sutdown_absorf="18spa>182ode=kthread_should_sthould_st         =  87ts 87ts182> +  856 18+5 class=18>smp_mb(sts,ordee" n18>sm>1825 +  836 847        unsign18"> >182VERBmutex_unlona(VERBfull9el/_mutext;rce"L82492class="line" 78"> 87tsVERBunregis   _reboot_notifi  (VERBrcu);
 87ts182ss="line" namop" class="srecl/rcutorturebarri  _cleanupture_read_unlocrcu>);
 87tsrcu_boost_infli18s=">1829s="line" namop" class="srecrcu>);
);
 87ts        struct   >183c
callstutt  _99elernel/rcutorturstutt  _99elCMP_e=oldstarttime" class="sref">oldst1831 class=18de=rcu" class="sref">rcu18de=>18>string">"rcud_sttnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts;
 87ts1839"L81591class"ss="line" name="L856"> 856 1834 class=18ost_cb(struct 183> +  87tsh18ode>1839"> 822222222clascss="sref">callhduffl  _99elernel/rcutortursduffl  _99elCMP_e=oldstarttime" class="sref">oldst1836 class=18lass="line" name="L837">18las>183e.c#L877" id="L877" ctnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts183re.c#L789" id8"L78988s="sref">kthreak1" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timesduffl  _99elernel/rcutortursduffl  _99elCMP_e"L82492class="line" 78"> 87ts183ss="line" name="L829"cp" class="srecfreercpum9el_va ass="sref">VERBfreercpum9el_va ="line=call_rcu_timesduffl _tmp_m9elernel/rcutortursduffl _tmp_m9elCMP_e"L82492class="line" 78"> 87ts);
 822222222"ss="line" name="L856"> 856 184n class=18"kernel/rcutorture.c#L8418"ke>184 de=kthread_se=call_rcu_timesduffl  _99elernel/rcutortursduffl  _99elCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts184strinL82492class="line" 78"> 87ts184ode=kthread_sclascss="sref">callwrit  _99elernel/rcutorturwrit  _99elCMP_e=oldstarttime" class="sref">oldst1843 class=18a>(void *rcu_stutter_wait("rcu_torture_boost" 87tskthreak1" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timewrit  _99elernel/rcutorturwrit  _99elCMP_e"L82492class="line" 78"> 87ts 856 1846 class=1848        unsigned l1848<>184 87ts 87ts1848"> 822222222clascss="sref">call id9  _99elsrcutorture.c#L8rid9  _99elsCMP_e=oldstarttime" class="sref">oldst1849 class=18light calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenridlrid9  srcutorture.c#L8nridlrid9  st;rc"class="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst185n class=18lass="line" name="L851">18las>185 de=kthread_should_stass="linclascss="sref">call id9  _99elsrcutorture.c#L8rid9  _99elsCMP_[op" class="sreciass="sref">VERB href]e=oldstarttime" class="sref">oldst1851 class=18class="line" name="L853"18cla>185string">"rcud_stass="line"      tnel/rcutortureorflass="sref">rcu_stutter_wait("ldstarttime" class="sref">oldst1852 class=18ref="kernel/rcutorture.c18ref>185ode=kthread_should_st;rcud_stass="line"      trcu_torture_boost" 87ts1859"L81591class="line" ass="line"      tnel/rcutorturek1" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_time id9  _99elsrcutorture.c#L8rid9  _99elsCMP_[op" class="sreciass="sref">VERB href]e"L82492class="line" 78"> 87ts 856 1855 class=18sched_priority = 1;
18sch>185 href="ker8el/rcutorture.c#Lsrnel/rcutorture id9  _99elsrcutorture.c#L8rid9  _99elsCMP_[op" class="sreciass="sref">VERB href] ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87tssched_s18er">185e.c#L877" id="L877" c"ss="line" name="L856"> 856 1857 class=18t; 0) {
kthreakfree#L795" id8"L795kfree="line=call_rcu_time id9  _99elsrcutorture.c#L8rid9  _99elsCMP_e"L82492class="line" 78"> 87ts 859             189">>185ss="line" name="L829"cp" class="srec id9  _99elsrcutorture.c#L8rid9  _99elsCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts 822222222"ss="line" name="L856"> 856 186n class=18head_on_stack(&<18hea>186 de=kthread_se=call_rcu_timercu>);
);
 87tsrcu);
 87ts 863      18me=>186ode=kthread_sclascss="sref">callfakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_e=oldstarttime" class="sref">oldst18h3 class=18"L865" class="line" name18"L8>1869"L81591class="line" for2scss="sref">calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenfakewrit  srcutorture.c#L8nfakewrit  st;rc"class="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst18h4 class=18e="L866"> 866       18e=">186> + callfakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[op" class="sreciass="sref">VERB href]e=oldstarttime" class="sref">oldst18h5 class=18 =  8222222222222222uine" name="L829"cp" class="srecorflass="sref">rcu_stutter_wait("ldstarttime" class="sref">oldst1866 class=18 while ( 87ts186re.c#L789" id8"L78988ine" name="L829"cp" class="sreck1" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[op" class="sreciass="sref">VERB href]e"L82492class="line" 78"> 87ts186ss="line" name="L829"FULLSTOP"ss="line" name="L856"> 856 1869 class=18                 if (186torture.c#L791" id8"Le="L829"cp" class="srecfakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[op" class="sreciass="sref">VERB href] ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87tsfullstop187 de=kthread_should_st"ss="line" name="L856"> 856 1871 class=18                        18   >187string">"rcud_sts="sref">kthreakfree#L795" id8"L795kfree="line=call_rcu_timefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_e"L82492class="line" 78"> 87ts 8718s=">187ode=kthread_should_ste=call_rcu_timefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts
1879"L81591class"ss="line" name="L856"> 856 18 4 class=18                187> +  822222222clascss="sref">callhtats_99elernel/rcutorturstats_99elCMP_e=oldstarttime" class="sref">oldst1876 class=18Z;
rcu_stutter_wait("rcu_torture_boost" 87tskthreak1" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timestats_99elernel/rcutorturstats_99elCMP_e"L82492class="line" 78"> 87ts 879<18"li>1878"> 822222222"ss="line" name="L856"> 856 18 9 class=18);
 = { .18);
>1879s="line" namop" class="srecstats_99elernel/rcutorturstats_99elCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts188 de=kL82492class="line" 78"> 87ts          = >1881a href="+codclascss="sref">callfqs_99elernel/rcutorturfqs_99elCMP_e=oldstarttime" class="sref">oldst1882 class=18 href="+code=call_rcusre18 hr>188ode=kthread_should_strnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts);
 87ts    s          r18188> +  856 1885 class=18" id8"L78688class="line"18" i>1885 +  87tsTt         =  87tsoldst1888 class=18="sref">jiffies;
VERBunregis   _cpu_notifi  ="linT(VERBrcu);
 87tsVERB hrefess="line" name="L856"> 856 189n class=18lass="line" name="L872">18las>189 de=kthread_should_stass="lin(VERB hrefe"L82492class="line" 78"> 87ts(189string">""ss="line" name="L856"> 856 1892 class=18                 if (189ode=kthread_sclascss="sref">callhduref=rb99elernel/rcutortursduref=rb99elde=kt!="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst1893 class=18 class="sref">fullstop1899"L81591class="line" tnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts189> + kthreak1" id9"Lel/rcutorture.c#L821" id9"Lass="line=call_rcu_timesduref=rb99elernel/rcutortursduref=rb99elde=k9"L82492class="line" 78"> 87ts 8018s=">189 href="ker8el"ss="line" name="L856"> 856 1896 class=18el/rcutorture.c#L799" id18el/>189 87ts/* W18sof>1897a href="+code=call_rcu_timel/rc);
);
 87ts189ss="lss="line" name="L856"> 856 1899 class=18>/18>189torture.c#L79l
/19an >190 de=kL82492class="line" 78"> 87ts(1901a href="+codclascss="sref">callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecbrbarri  rcutorture.c#L8cbrbarri  ="li !="lass="line" namNULL="+code=call_rcNULLt;rcess="line" name="L856"> 856 19a2 class=19a                if (190ode=kthread_should_strnel/rcutorturecur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecbrbarri  rcutorture.c#L8cbrbarri  ="lineaL82492class="line" 78"> 87tsfullstop1909"L81rture_read_unlock" class="sref"19a4 class=19a                       19a  >190> + 
 8019a=">1908namess="line" name="L856"> 856 19a6 class=19al/rcutorture.c#L799" id19al/>190e.c#L877" id=clascss="sref">callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecleanupture_read_unloccleanup="liess="line" name="L856"> 856 19a7 class=19aof class="comment">/* W19aof>190re.c#L789" id8"L78988s="sref">kthreacur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturecleanupture_read_unloccleanup="lineaL82492class="line" 78"> 87ts1908"> 822222222clascss="sref">callatomic_rid9ture_read_unlocatomic_rid9="linT( 856 19a9 class=19a/19a190torture.c#L791" id8"Lrnel/rcutorturercu>);
);
 87tsinit_rcu19tex>191 de=kthread_selse2clascss="sref">callnronref"_successesrcutorture.c#L8nronref"_successes="li !="lass="line" namnronref"_attemptsrcutorture.c#L8nronref"_attempts="li ||L82492class="line" 78"> 87ts191string">"rcud_stalass="line" namnroffref"_successesrcutorture.c#L8nroffref"_successes="li !="lass="line" namnroffref"_attemptsrcutorture.c#L8nroffref"_attempts="liess="line" name="L856"> 856 1912 class=19         );
 856 1913 class=19ef="ker9el/rcutorture.c#19ef=>1919"L81591class="line" ass="line"      hread_should_strrcu_torture_boost" 87ts191> +  87ts
1919"> 8222222222222222utnel/rcutorturercu>);
);
 87ts191e.c#L"ss="line" name="L856"> 856 1917 class=19it" class="sref">rcu_stu19it">191re.c#L82492class="line" 78"> 87ts 87ts 19="l>191ss="lhref="k   class="line" nam__  itture_read_unloc__  it="liL82492class="line" 78"> 87ts191tortutnel/rcutorturercu>);
);
 856 192n class=19+code=VERBOSE_PRINTK_STR19+co>192 de=koldstarttime" class="sref">oldst1921 class=19="stritask =fulp_STing">19="s>192string">"   class="line" namiass="sref">VERB hreforture_read_unlock" class="sref"1922 class=19span>)d_sutdown_absorf="19spa>192ode=kthread_s   class="line" namOputure_read_unlocOput;rcorture_read_unlock" class="sref"1923 class=19         if (VERBfirs    de=kt="torture_read_unlock" class="sref"1924 class=19s="line" name="L87/a>   19s=">192> + smp_mb(sts,ordee" n19>sm>1925 + );
);
 847        unsign19"> >192e.c#L877" id="L877" c{ T(syncropsde=k,tT( 856 1927 class=19t(bhrsyncropsde=k,tT( 856 1928 class=19rture.c#L830" id="L830" 19rtu>192ss="line" name="L829"FUT(syncropsde=k,tT( 856 1929 class=19s="sref">rcu_boost_infli19s=">192torture.c#L791" id8"Le=T(rawrsyncropsde=k,ss="line" name="L856"> 856 193n class=19>        struct   >193 de=kthread_should_stasT(( 87tsrcu19de=>193strinL82492class="line" 78"> 87ts;
VERBmutex_lona(VERBfull9el/_mutext;rce"L82492class="line" 78"> 87ts1939"L81rture_read_unlock" class="sref"1934 class=19ost_cb(struct 193> + h19ode>1939"> 822222222for2scss="sref">calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutortureARRAY_SIZEass="sref">VERBARRAY_SIZE="line=call_rcu_timer;
VERB href++e=oldstarttime" class="sref">oldst1936 class=19lass="line" name="L837">19las>193e.c#L877" id="L877" ctnel/rcutorturecur_opsrcutorture.c#L8cur_opsde=kt="lass="line" namr;
VERB href]"L82492class="line" 78"> 87ts193re.c#L789" id8"L78988clascss="sref">callhtrcmpture_read_unlochtrcmp="line=call_rcu_timer;
kthreacur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorture39" rcutorture.c#L8n9" CMP_e==="tlss="line" name="L856"> 856 1938 class=19code=container_of" class19cod>193ss="line" name="L829"""""""""b idkorture_read_unlock" class="sref"1939 class=19a>);
 822222222"ss="line" name="L856"> 856 194n class=19"kernel/rcutorture.c#L8419"ke>194c
calliass="sref">VERB href =="lass="line" namARRAY_SIZEass="sref">VERBARRAY_SIZE="line=call_rcu_timer;
oldst1941 class=19a href="+code=rbip" clas19a h>194string">"rcud_sts="sref">kthreapinft" class="sref">Vpinft"<(VKERN_ALERTtringrrcu_torture_boost"o:"  valid lass="s type: \ot; 856 1942 class=19class="line" name="L844"19cla>194ode=kthread_should_st;rcud_se=call_rcu_timer;
 87ts(void *Vpinft"<(VKERN_ALERTtringrrcu_torture_boost"o types:re.c#L824" id9"L82492class="line" 78"> 87tscalliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutortureARRAY_SIZEass="sref">VERBARRAY_SIZE="line=call_rcu_timer;
VERB href++eL82492class="line" 78"> 87tsVpinft"<(VKERN_ALERTtringrrcu_torture_boost"VERB href]-&e" rnel/rcutorture39" rcutorture.c#L8n9" CMP_e"L82492class="line" 78"> 87ts        unsigned l1948<>194e.c#L877" id="L877" ctnel/rcutorturepinft" class="sref">Vpinft"<(VKERN_ALERTtringrrcu_torture_boost" 87tskthreamutex_unlonaass="sref">VERBmutex_unlona(VERBfull9el/_mutext;rce"L82492class="line" 78"> 87ts194ss="line" name="L829"=sched_-(  822222222"ss="line" name="L856"> 856 195n class=19lass="line" name="L851">19las>195c
callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorturefqsrcutorture.c#L8fqshref =="lass="line" namNULL="+code=call_rcNULLt;rc TTt         = oldst1951 class=19class="line" name="L853"19cla>195string">"rcud_sttnel/rcutorturepinft" class="sref">Vpinft"<(VKERN_ALERTtringrrcu_torture_boost"o:"-&e" fqs2NULL and non-zero fqs_duraPRIN, fqs disabled.\n  id="L856" ce"L82492class="line" 78"> 87ts195ode=kthread_should_st         = 1959"L81591class"ss="line" name="L856"> 856 1954 class=19ref="+code=sp" class="sr19ref>195> + callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorture  itture_read_unloc  it="lieL82492class="line" 78"> 87ts = 1;
19sch>195 href="ker8el/rcutortcss="sref">callcur_opsrcutorture.c#L8cur_opsde=k-&e" rnel/rcutorture  itture_read_unloc  it="linea7o
sched_s19er">195e.c#Lid="L832" class="line" name="L81957 class=19t; 0) {
callnrid9  srcutorture.c#L8nrid9  st;rc &e" ="tlss="line" name="L856"> 856 1958 class=199"> 859             199">>195ss="line" name="L829"cp" class="srecnridlrid9  srcutorture.c#L8nridlrid9  st;rct="lass="line" namnrid9  srcutorture.c#L8nrid9  st;rcorture_read_unlock" class="sref"1959 class=19861" class="line" name="19861>1959"> 822222222elseL82492class="line" 78"> 87ts(&<19hea>196 de=kthread_should_st         =  87tsrcu);
"tnel/rcutorturercu>);
);
 87ts 863      19me=>196ode=kthread_s( 8361969"L81rture_read_unlock" class="sref"19h4 class=19e="L866"> 866       19e=">196> + 1968namess="line" name="L856"> 856 1966 class=19 while (( 87ts196re.c#L789" idfor2scss="sref">calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutortureARRAY_SIZEass="sref">VERBARRAY_SIZE="line=call_rcu_timercu>);
);
VERB href++e=oldstarttime" class="sref">oldst1968 class=19="+code=rcu_stutter_wait19="+>196ss="line" name="L829"e=call_rcu_timercu>);
);
VERB href].lass="line" namr);
<_mbrestrcutorture.c#L8r);
<_mbrest="li ="torture_read_unlock" class="sref"1969 class=19                 if (196torture.c#L791" id8"Llass="line" namlist_add_tailture_read_unloclist_add_tail(VERB href].lass="line" namr);
<_free#L795" id8"L795r);
<_freede=k,ss="line" name="L856"> 856 197n class=19 class="sref">fullstop197 de=kthread_should_stttttttttttttttT( 87ts197string">""ss="line" name="L856"> 856 1972 class=19s="line" name="L874"> 8719s=">197ode=kss="line" name="L856"> 856 1973 class=19terval. */
1979"L81591classo
);
 87ts;
);
);
( 856 1978 class=19"line" name="L879"> 879<19"li>197ss="line" namop" class="srecatomic_seeture_read_unlocatomic_see( 856 1979 class=19);
 = { .19);
>1979s="line" namop" class="srecatomic_seeture_read_unlocatomic_see();
 856 198n class=19 href="+code=smp_mb" cla19 hr>198 de=kthread_se=call_rcu_timeatomic_seeture_read_unlocatomic_see( 856 1981 class=19/a>          = >198string">"tnel/rcutortureatomic_seeture_read_unlocatomic_see( 856 1982 class=19 href="+code=call_rcusre19 hr>198ode=kthread_s();
    s          r19198> + 1985 + );
);
calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutortureRCU_TORTURE_PIPE_LENass="sref">VERBRCU_TORTURE_PIPE_LENhref + 1"class="line" namiass="sref">VERB href++eL82492class="line" 78"> 87tsjiffies;
);
);
VERB href],t0lass="line" name="L856"> 856 1989 class=19           }
oldst199n class=19lass="line" name="L872">19las>199 de=kthread_should_stfor2scss="sref">calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutortureRCU_TORTURE_PIPE_LENass="sref">VERBRCU_TORTURE_PIPE_LENhref + 1"class="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst1991 class=19u_stutter_wait(199string">"rcud_stass="lintnel/rcutorturep  _cpu class="sref">Vp  _cpu="line=call_rcu_timercu>);
);
kthreacputure_read_unlocOput;rce[op" class="sreciass="sref">VERB href] ="torture_read_unlock" class="sref"1992 class=19                 if (199ode=kthread_should_st;rcud_sttnel/rcutorturep  _cpu class="sref">Vp  _cpu="line=call_rcu_timercu>);
);
kthreacputure_read_unlocOput;rce[op" class="sreciass="sref">VERB href] ="torture_read_unlock" class="sref"1993 class=19 class="sref">fullstop1999"L81591class="line" "ss="line" name="L856"> 856 1994 class=19                        19   >199> +  856 1995 class=19s="line" name="L807"> 8019s=">1998namess="line" name="L856"> 856 1996 class=19el/rcutorture.c#L799" id19el/>199/* W19sof>199re.c#L82492class="line" 78"> 87ts199ss="line" namop" class="srecorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts/19>1999s="line" namop" class="srecwrit  _99elernel/rcutorturwrit  _99elCMP_ ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 20an class=20an can class="comment">/20an >20ande=kthread_should_sttttttttttttttt+code

s="line" name="L856"> 856 20a1 class=20a_stutter_wait(20a1a href="+codclascss="sref">callIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timewrit  _99elernel/rcutorturwrit  _99elCMP_ee=oldstarttime" class="sref">oldst20a2 class=20a                if (20aode=kthread_should_st         = VERBfirs    de=kt="         =  87tsfullstop20a9"L81591class="line" tnel/rcutortureorflass="sref">ERRrcu_stutter_wait( 87ts20a> + kthreawrit  _99elernel/rcutorturwrit  _99elCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts 8020a=">20a href="ker8el/rcutortgoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts20a6 +  856 20a7 class=20aof class="comment">/* W20aof>20a7a href="+code=call_rcu_timefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_ ="lass="line" namkzallocrcutorture.c#L8kzalloc="line=call_rcu_timenfakewrit  srcutorture.c#L8nfakewrit  st;rc * sizeofne=call_rcu_timefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[0]),ss="line" name="L856"> 856 20a8 class=20acutorture.c#L800" id9"L20acu>20ass="line" name="L829"""""""""f="FULLSTOPs="sref">kthreaGFP_KERNEL="+code=call_rcGFP_KERNELCMP_e"L82492class="line" 78"> 87ts/20a20a9a href="+codclascss="sref">callfakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_ =="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst201n class=20tex_f="+cosref">init_rcu20tex>20te"L81591class="line" tnel/rcutortureorflass="sref">ERRrcu_stutter_wait( 87ts20tstring">"rcud_sttnel/rcutorturefirs    ass="sref">VERBfirs    de=kt="-(VERBENOMEMt;rc"L82492class="line" 78"> 87ts 87ts20t9"L81591class"ss="line" name="L856"> 856 20t4 class=20el/rcutorture.c#L816" id20el/>20t> + calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenfakewrit  srcutorture.c#L8nfakewrit  st;rc"class="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst20t5 class=20/
20t href="ker8el/rcutortcss="sref">callorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts20te.c#L877" id="L877" ctnel/rcutorturefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[op" class="sreciass="sref">VERB href] ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 2017 class=20it" class="sref">rcu_stu20it">20tre.c#L789" id8"L78988ine" name="L829"""""""""""""""""""e
 87ts 87ts 20="l>20tss="line" name="L829"clascss="sref">callIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[op" class="sreciass="sref">VERB href]ee=oldstarttime" class="sref">oldst20t9 class=20f="ker9el/rcutorture.c#L20f=">20ttorture.c#L791" id8"Le="L829"cp" class="srecfirs    ass="sref">VERBfirs    de=kt="         = VERB href]e"L82492class="line" 78"> 87ts20+corture.c#L791" id8"Le="L829"cp" class="srecorflass="sref">ERRrcu_stutter_wait( 87ts20="s>20+string">"rcud_stass="lintnel/rcutorturefakewrit  _99elsrcutorture.c#L8fakewrit  _99elsCMP_[op" class="sreciass="sref">VERB href] ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts)d_sutdown_absorf="20spa>20+ode=kthread_should_st;rcud_stgoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts 856 20+4 class=20s="line" name="L87/a>   20s=">20+> +  856 20+5 class=20>smp_mb(sts,ordee" n20>sm>20+5 +  856 2026 class=20"> 847        unsign20"> >20+e.c#L877" id="L877" c2222222uine" nas="sref">kthreaGFP_KERNEL="+code=call_rcGFP_KERNELCMP_e"L82492class="line" 78"> 87tscallrid9  _99elsrcutorture.c#L8rid9  _99elsCMP_ =="lass="line" namNULL="+code=call_rcNULLt;rce=oldstarttime" class="sref">oldst2028 class=20rture.c#L830" id="L830" 20rtu>20+ss="line" name="L829"cp" class="srecorflass="sref">ERRrcu_stutter_wait( 87tsrcu_boost_infli20s=">20+torture.c#L791" id8"Lrnel/rcutorturefirs    ass="sref">VERBfirs    de=kt="-(VERBENOMEMt;rc"L82492class="line" 78"> 87ts        struct   >20> de=kthread_should_stgoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87tsrcu20de=>20>string">""ss="line" name="L856"> 856 20>2 class=20inflight;
calliass="sref">VERB href ="toclass="line" namiass="sref">VERB href &lasernel/rcutorturenridlrid9  srcutorture.c#L8nridlrid9  st;rc"class="line" namiass="sref">VERB href++e=oldstarttime" class="sref">oldst2033 class=20nel/rcutorture.c#L836" i20nel>20>9"L81591class="line" tnel/rcutortureorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87ts(struct 20>> + kthrearid9  _99elsrcutorture.c#L8rid9  _99elsCMP_[op" class="sreciass="sref">VERB href] ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 2035 class=20ode=head" class="sref">h20ode>20> href="ker8el/rcutorture.c#Lssssssssssssssssssssssse
 87ts20las>20>e.c#L877" id="L877" cclascss="sref">callIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timerid9  _99elsrcutorture.c#L8rid9  _99elsCMP_[op" class="sreciass="sref">VERB href]ee=oldstarttime" class="sref">oldst2037 class=20re.c#L839" id="L839" cla20re.>20>re.c#L789" id8"L78988ine" namcp" class="srecfirs    ass="sref">VERBfirs    de=kt="         = VERB href]e"L82492class="line" 78"> 87ts20>ss="line" name="L829"""""""""cp" class="srecorflass="sref">ERRrcu_stutter_wait( 87ts);
VERB href] ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts20"kde=kthread_should_st;rcud_stgoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts20"string">"rcud_st"ss="line" name="L856"> 856 2042 class=20class="line" name="L844"20cla>20"ode=kthread_s"ss="line" name="L856"> 856 2043 class=20a>(void *callhtat_in   valture_read_unlochtat_in   valhref &gase0e=oldstarttime" class="sref">oldst20"4 class=20L846" id="L846" class="l20L84>20"> + kthreaorflass="sref">rcu_stutter_wait("rcu_torture_boost" 87tscallstats_99elernel/rcutorturstats_99elCMP_ ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 2046 class=2048        unsigned l2048<>20"e.c#L877" id="L877" c2222222uine" nal/rcutortc
 87tscallIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timestats_99elernel/rcutorturstats_99elCMP_ee=oldstarttime" class="sref">oldst2048 class=20ref="kernel/rcutorture.c20ref>20"ss="line" name="L829"""""""""cp" class="srecfirs    ass="sref">VERBfirs    de=kt="         =  87ts ERRrcu_stutter_wait( 87ts20las>20laorture.c#L791" id8"Le="L829"cp" class="srecstats_99elernel/rcutorturstats_99elCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts20lstring">"rcud_stass="lingoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts20lode=kthread_should_st"ss="line" name="L856"> 856 2053 class=20ref="kernel/rcutorture.c20ref>20l9"L81591class"ss="line" name="L856"> 856 2054 class=20ref="+code=sp" class="sr20ref>20l> + callrest_no_idle_hz="+code=call_rcrest_no_idle_hzt;rce=oldstarttime" class="sref">oldst2055 class=20sched_priority = 1;
20sch>20l9"> 8222222222222222utnel/rcutorturercu>idle_cputure_read_unlocrcu>idle_cpuCMP_ ="lass="line" namnumronref"_cpusrcutorture.c#L8numronref"_cpus="line - 1"L82492class="line" 78"> 87tssched_s20er">20le.c#Lid="L832" class="line" name="L820l7 class=20t; 0) {
VERBalloc_cpum9el_va ="linT(kthreaGFP_KERNEL="+code=call_rcGFP_KERNELCMP_ee=oldstarttime" class="sref">oldst2058 class=209"> 859             209">>20lss="line" name="L829"""""""""cp" class="srecfirs    ass="sref">VERBfirs    de=kt="-(VERBENOMEMt;rc"L82492class="line" 78"> 87tsERRrcu_stutter_wait( 87ts(&<20hea>20hetring">"rcud_stass="lingoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87tsrcu);
"rcud_st"ss="line" name="L856"> 856 2062 class=20me="L863"> 863      20me=>20hode=kss="line" name="L856"> 856 20h3 class=20"L865" class="line" name20"L8>20h9"L81591class="line" t
 866       20e=">20h> + kthreashuffler_99elernel/rcutorturshuffler_99elCMP_ ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 2065 class=20 = 
 87tscallIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timeshuffler_99elernel/rcutorturshuffler_99elCMP_ee=oldstarttime" class="sref">oldst2067 class=2068" class="line" name="L2068">20hre.c#L789" id8"L78988ine" namcp" class="srecfree_cpum9el_va ass="sref">VERBfree_cpum9el_va ="line=call_rcu_timeshuffle_tmp_m9elernel/rcutorturshuffle_tmp_m9el + <9"L82492class="line" 78"> 87ts20hss="line" name="L829"""""""""cp" class="srecfirs    ass="sref">VERBfirs    de=kt="         =  87ts20htorture.c#L791" id8"Le="L829"cp" class="srecorflass="sref">ERRrcu_stutter_wait( 87tsfullstop20 corture.c#L791" id8"Le="L829"cp" class="srecshuffler_99elernel/rcutorturshuffler_99elCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts20 string">"rcud_stass="lingoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts 8720s=">20 ode=kthread_should_st"ss="line" name="L856"> 856 2073 class=20terval. */
20 9"L81591class"ss="line" name="L856"> 856 2074 class=20                20 > + callstutt  rcutorture.c#L8stutt  href &lasetlss="line" name="L856"> 856 20 5 class=20de=oldstarttime" class="20de=>20  href="ker8el/rcutortcss="sref">callstutt  rcutorture.c#L8stutt  href ="torture_read_unlock" class="sref"20 6 class=20Z;
callstutt  rcutorture.c#L8stutt  hrefe=oldstarttime" class="sref">oldst2077 class=20f="+code=ULONG_CMP_LT" c20f=">20 re.c#L789" id8"L78988s
 879<20"li>20 ss="line" name="L829"cp" class="srecstutt  _99elernel/rcutorturstutt  _99elCMP_ ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 2079 class=20);
 = { .20);
>20 torture.c#L791" id8"Le="L829"""""""""""""""""""c
 87ts20 he.c#L789" id8"L78988clascss="sref">callIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timestutt  _99elernel/rcutorturstutt  _99elCMP_ee=oldstarttime" class="sref">oldst2081 class=20/a>          = >20 string">"rcud_stass="lintnel/rcutorturefirs    ass="sref">VERBfirs    de=kt="         =  87tsERRrcu_stutter_wait( 87ts);
 87ts    s          r2020 > +  87ts20  href="ker8el/rcutort"ss="line" name="L856"> 856 2086 class=2088class="line" name="L8n2088c>20 6 +  856 2087 class=20      }
callfqs_duraPRINture_read_unlocfqs_duraPRIN="li &lasetlss="line" name="L856"> 856 2088 class=20="sref">jiffies;
callfqs_duraPRINture_read_unlocfqs_duraPRIN="lie=oldstarttime" class="sref">oldst209n class=20lass="line" name="L872">20las>20lae.c#L789" id8"L78988s
"rcud_sttnel/rcutorturefqs_99elernel/rcutorturfqs_99elCMP_ ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 2092 class=20                 if (20lode=kthread_should_st;rcud_st789" id8"L78988s
 87tsfullstop20l9"L81591class="line" clascss="sref">callIS_ERRrcutorture.c#L8IS_ERR="line=call_rcu_timefqs_99elernel/rcutorturfqs_99elCMP_ee=oldstarttime" class="sref">oldst2094 class=20                        20   >20l> + VERBfirs    de=kt="         =  87ts 8020s=">20l href="ker8el/rcutorture.c#Lsrnel/rcutortureorflass="sref">ERRrcu_stutter_wait( 87ts20le.c#L877" id="L877" c2222222utnel/rcutorturefqs_99elernel/rcutorturfqs_99elCMP_ ="lass="line" namNULL="+code=call_rcNULLt;rc"L82492class="line" 78"> 87ts/* W20sof>20lre.c#L789" id8"L78988ine" namgoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts20lss="line" name="L829""ss="line" name="L856"> 856 2099 class=20>/20>20l9"> 822222222"ss="line" name="L856"> 856 21an class=21an can class="comment">/21an >210c
callrest_boos _in   valture_read_unlocrest_boos _in   val="li &lase1lss="line" name="L856"> 856 21a1 class=21a_stutter_wait(210string">"rcud_sttnel/rcutorturerest_boos _in   valture_read_unlocrest_boos _in   val="li = 1"L82492class="line" 78"> 87ts21aode=kthread_sclascss="sref">callrest_boos _duraPRINture_read_unlocrest_boos _duraPRIN="li &lase2lss="line" name="L856"> 856 21a3 class=21aclass="sref">fullstop21a9"L81591class="line" tnel/rcutorturerest_boos _duraPRINture_read_unlocrest_boos _duraPRIN="li = 2"L82492class="line" 78"> 87ts210> + callrest_boos ture_read_unlocrest_boos ="li == 1 TTt         =  87ts 8021a=">21a href="ker8el/rcucss="sref">callrest_boos ture_read_unlocrest_boos ="li == 2e=oldstarttime" class="sref">oldst21a6 class=21al/rcutorture.c#L799" id21al/>210e.c#Lid="L832" class="line" name="L821a7 class=21aof class="comment">/* W21aof>210re.c#L789" id8"L78988s="sref">kthreaboos _startti" rcutorture.c#L8boos _startti" CMP_ ="lass="line" namjiffihsrcutorture.c#L8jiffihsCMP_ +ttnel/rcutorturerest_boos _in   valture_read_unlocrest_boos _in   val="li *t         =  87ts21ass="line" name="L829"e=call_rcu_timeregis   _cpu_notifih rcutorture.c#L8regis   _cpu_notifih ="linT( 87t_cpu_nbrcutorture.c#L8rcu8"> 87t_cpu_nbCMP_e"L82492class="line" 78"> 87ts/21a210torture.c#L791" id8"Lrnel/rcutorturefor_each_possre.c_Oputure_read_unlocfor_each_possre.c_Opu="line=call_rcu_timeiass="sref">VERB hrefe=oldstarttime" class="sref">oldst211n class=21tex_f="+cosref">init_rcu21tex>21te"L81591class="line" thread_sclascss="sref">callcpu_is_offref">ire_read_unloccpu_is_offref"="line=call_rcu_timeiass="sref">VERB hrefelss="line" name="L856"> 856 2111 class=21 bhouk_torture_boost_rte21 bh>21tstring">"rcud_stttttttttttttttttcontinue;88s
21tode=kthread_should_ste="L829"e=call_rcu_timeretvalture_read_unlocretvalCMP_ ="lass="line" namrcu8"> 87t_boos   _  itture_read_unlocrcu8"> 87t_boos   _  it="line=call_rcu_timeiass="sref">VERB hrefe"L82492class="line" 78"> 87ts2119"L81591class="line" e="L829"clascss="sref">callritvalture_read_unlocretvalCMP_ &lasetl=oldstarttime" class="sref">oldst2114 class=21el/rcutorture.c#L816" id21el/>211> + VERBfirs    de=kt="         =  87ts
21t href="ker8el/rcutortttttttttttttttttgoto lass="line" namunwind="+code=call_rcunwindt;rc"L82492class="line" 78"> 87ts21te.c#L877" id="L877" ccccccccc"ss="line" name="L856"> 856 2117 class=21it" class="sref">rcu_stu21it">21tre.c#L789" id8"L78988"ss="line" name="L856"> 856 2118 class=21="line" }878"> 87ts 21="l>21tss="line" nam"ss="line" name="L856"> 856 2119 class=21f="ker9el/rcutorture.c#L21f=">2119a href="+codclascss="sref">callshutdown_secsrcutorture.c#L8shutdown_secsCMP_ &gase0e=oldstarttime" class="sref">oldst212n class=21+code=VERBOSE_PRINTK_STR21+co>21+corture.c#L791" id8"Lcss="sref">callshutdown_ti" rcutorture.c#L8shutdown_ti" CMP_ ="lass="line" namjiffihsrcutorture.c#L8jiffihsCMP_ +ttnel/rcutortureshutdown_secsrcutorture.c#L8shutdown_secsCMP_ *t         =  87ts21="s>21+string">"rcud_stcss="sref">callshutdown_t9elernel/rcutorturshutdown_t9elCMP_ ="lass="line" nam21" id9"ruNture_read_unloc21" id9"ruN="line=call_rcu_timercu>);
);
kthreaNULL="+code=call_rcNULLt;rc,ss="line" name="L856"> 856 21+2 class=21span>)d_sutdown_absorf="21spa>21+ode=kthread_should_st;rcud_stttttttttttttttttttttc
 856VERB hrefe"L82492class="linl999absorf="2191t>9u"sref">VERB hrefelss="lineti>20  href="ker8el/rcutort"ss="lin47dss="lineti1         i1 (oldst2094 class=20                        20   >20l> + 9u"sref">VERB hrefelss="lineti>20  href="rcud_stttttttttttttttttttttcde=kt="   line" name="L87/a>   20s=1>20+>12_99elCMP_e"L82492class="line" 78"> 87ts 8020s=">20l href="ker8el/rcutorture.c#Lsrnel/rcutortureorflass="sref">ERRrcu_stode=kthread_should_st;rcud_stttttttttttttttttttttcttgoto las  _99elsrcutorture.c#L8ri19  _91elsCMP_[0]),ss="line" name="L8s="line" 78"> 87ts21="s>21+string">&qu id="L877" c2222222utnel/rcutorturefqs_99elernel/rcutorturfq1="sref">kt1reaGFP_KERNEL="+code=call1rcGFP12rcNULLt;rc"L82492class="line" 78"> 87ts/* W20sof>20lre.c#L789" id8"L78988ine"1lsCMP_ =="1ass="line" namNULL="+code1call_1cNULLt;rce=oldstarttim="line" name="L856"> 856 2118 ;rcu_tortu1e_boost" 856 2099 de=kt="-(<1 href="+codeENOMEMass="sr1f">VE13eede=k,t0lass="line" name="L 856 20>2 class=20inl/rcutorturshutdown_t9elCMPon>&q"L829"e=call_rcu_timeren_t9elCMPon>&q"L829rture;rcud_stttttttttttttttttttttc 20>2 class=20!==">2119a href="+codclascss="sref">callclass=20de1rcu" class="sref">rcu20de1>20>s13rcNULLt;rc,ss="line" ="sref">oldst2094 class=20                        20   >20l> +  20>2 class=2rcud_stttttttttttttttttttttcV1RB href++e=oldstarttim 78"> 87ts/* W20sof>20lre.c#L789" id8"L78988ine"1quot; 856 20+41rid9   + <1tr="sref">kthreaNULL="+co1e=cal13 
kt1P_[op" class="sreciass="s1ef">V13  20>2 class=20!==">2119a href="+codclascss="sref">callcsCMP_ =="1CMP_[op" class="sreciass=1sref"1VERB href]e"L82492clas="sref">oldst2094 class=20                        20   >20l> +  20>2 class=2rcud_stttttttttttttttttttttc 87ts/* W20sof>20lre.c#L789" id8"L78988ine"1ERB href] 1"lass="line" namNULL="+co1e=cal1_rcNULLt;rc"L8="line" name="L856"> 856 20+41_stgoto la1s="line" namunwind="+code1call_14o de=k,t0lass="line" name="Lt2 class=21         198ode=L829rture;rcud_stttttttttttttttttttttc20"str1ng">&14al="li = 1"L82492class="line" 78t2 class=21         2119a href="+codclascss="sref">callclass=20cl1ss="line" name="L844"20cl1>20"o14"li &lase2lss="line" name="L856"> 85=21el/rcutorture.c#L816" id21el/>211> + VERBfirs   htat_in   1alture_read_unlochtat_in 1 valh1ef &gase0e=oldstarttim 78"> 87ts/* W20sof>20lre.c#L789" id8"L78988ine"1Eid9   + <1idtrtu l/rc);
 856 20+41_n>
kthreaNULL="+co1e=cal149h="li ="torture_read_unlockrture.c#L8rrecord_namjitransis=21aclass="sref">frture.c#L8rrecord_namjitransis=21rture;rcud_stttttttttttttttttttttckt1ost");
20 ss="line" name="L829"cp" cla1=call_rcu_1imestats_99elernel/rcutor1ursta1s_99el>20 ss="line" name="L829"cp" cla1ure_boost&1uot;/* W2:>20 ss="line" name="L829"cp" cla1ustgoto la1"lass="line" namNULL="+co1e=cal15o de=k,t0lass="line" name="Lmutex_unloclass=21="stritasmutex_unlocline" name="L829"e=call_rcfullstop_mutexutorture.c#L816"ullstop_mutexref="rcud_stttttttttttttttttttttc21tode=kthrusre19 hrcleanup"e=call_rcu_timeren_t9elCMPcleanuprture;rcud_stttttttttttttttttttttc20lode1kthre1d_should_st"ssnelurn=name="L856"> 85=21el/rcutorture.c#L816" id21el/>21rcud_stttttttttttttttttttttc 856 20+41allrest_no1idle_hz="+code=call_rcres1_no_i15  85i15n>
kt1ass=20er" class="sref">sc1ed_s21er">20="line" name="Lmodule=ex29"e=call_rcu_timmodule=ex29lernel/rcutorturshutdown_t9elCMPcleanup"e=call_rcu_timeren_t9elCMPcleanuprtur;rcud_stttttttttttttttttttttc


_/div>


The original LXR software by=20laud_sttttthttp://sourceforge.nethouojects/lxcu>LXR _toru829yoc21" this experirtural vers=21 by=ud_stttttmailto:lxc@="+ux.no">lxc@="+ux.nooc21.
_/div>

lxc.="+ux.no k">/ly head_d by=ud_sttttthttp://www.redpill-="+ouo.no">Redpill L"+ouo ASoc21" ouovir_waof L"+ux621a9s services since > + .
_/div>