]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rcu: Merge rcu_dynticks structure into rcu_data structure
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sat, 4 Aug 2018 02:31:39 +0000 (19:31 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 30 Aug 2018 23:03:47 +0000 (16:03 -0700)
Now that there is only ever one rcu_data structure per CPU, there is no
need for a separate rcu_dynticks structure.  This commit therefore adds
the rcu_dynticks fields into the rcu_data structure in preparation for
removing the rcu_dynticks structure entirely.  Note that the ->dynticks
field will be handled specially because there is a field by that name
in both structures.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.h

index 5e561f1339d4a83615907101109b04f245ff913f..d35cd9677b0818295b0f8d36fe4f28daba7867e8 100644 (file)
@@ -212,6 +212,23 @@ struct rcu_data {
        /* 3) dynticks interface. */
        struct rcu_dynticks *dynticks;  /* Shared per-CPU dynticks state. */
        int dynticks_snap;              /* Per-GP tracking for dynticks. */
+       long dynticks_nesting;      /* Track process nesting level. */
+       long dynticks_nmi_nesting;  /* Track irq/NMI nesting level. */
+       // atomic_t dynticks;       /* Even value for idle, else odd. */
+       bool rcu_need_heavy_qs;     /* GP old, need heavy quiescent state. */
+       bool rcu_urgent_qs;         /* GP old need light quiescent state. */
+#ifdef CONFIG_RCU_FAST_NO_HZ
+       bool all_lazy;              /* Are all CPU's CBs lazy? */
+       unsigned long nonlazy_posted;
+                                   /* # times non-lazy CBs posted to CPU. */
+       unsigned long nonlazy_posted_snap;
+                                   /* idle-period nonlazy_posted snapshot. */
+       unsigned long last_accelerate;
+                                   /* Last jiffy CBs were accelerated. */
+       unsigned long last_advance_all;
+                                   /* Last jiffy CBs were all advanced. */
+       int tick_nohz_enabled_snap; /* Previously seen value from sysfs. */
+#endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */
 
        /* 4) reasons this CPU needed to be kicked by force_quiescent_state */
        unsigned long dynticks_fqs;     /* Kicked due to dynticks idle. */