aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/RCU/trace.txt34
-rw-r--r--kernel/rcutree.c44
-rw-r--r--kernel/rcutree.h6
-rw-r--r--kernel/rcutree_plugin.h6
-rw-r--r--kernel/rcutree_trace.c8
5 files changed, 49 insertions, 49 deletions
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt
index a67af0a39ded..aaf65f6c6cd7 100644
--- a/Documentation/RCU/trace.txt
+++ b/Documentation/RCU/trace.txt
@@ -33,23 +33,23 @@ rcu/rcuboost:
33The output of "cat rcu/rcudata" looks as follows: 33The output of "cat rcu/rcudata" looks as follows:
34 34
35rcu_sched: 35rcu_sched:
36 0 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=545/1/0 df=50 of=0 ri=0 ql=163 qs=NRW. kt=0/W/0 ktl=ebc3 b=10 ci=153737 co=0 ca=0 36 0 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=545/1/0 df=50 of=0 ri=0 ql=163 qs=NRW. kt=0/W/0 ktl=ebc3 b=10 ci=153737 co=0 ca=0
37 1 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=967/1/0 df=58 of=0 ri=0 ql=634 qs=NRW. kt=0/W/1 ktl=58c b=10 ci=191037 co=0 ca=0 37 1 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=967/1/0 df=58 of=0 ri=0 ql=634 qs=NRW. kt=0/W/1 ktl=58c b=10 ci=191037 co=0 ca=0
38 2 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=1081/1/0 df=175 of=0 ri=0 ql=74 qs=N.W. kt=0/W/2 ktl=da94 b=10 ci=75991 co=0 ca=0 38 2 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=1081/1/0 df=175 of=0 ri=0 ql=74 qs=N.W. kt=0/W/2 ktl=da94 b=10 ci=75991 co=0 ca=0
39 3 c=20942 g=20943 pq=1 pqc=20942 qp=1 dt=1846/0/0 df=404 of=0 ri=0 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=72261 co=0 ca=0 39 3 c=20942 g=20943 pq=1 pgp=20942 qp=1 dt=1846/0/0 df=404 of=0 ri=0 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=72261 co=0 ca=0
40 4 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=369/1/0 df=83 of=0 ri=0 ql=48 qs=N.W. kt=0/W/4 ktl=e0e7 b=10 ci=128365 co=0 ca=0 40 4 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=369/1/0 df=83 of=0 ri=0 ql=48 qs=N.W. kt=0/W/4 ktl=e0e7 b=10 ci=128365 co=0 ca=0
41 5 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=381/1/0 df=64 of=0 ri=0 ql=169 qs=NRW. kt=0/W/5 ktl=fb2f b=10 ci=164360 co=0 ca=0 41 5 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=381/1/0 df=64 of=0 ri=0 ql=169 qs=NRW. kt=0/W/5 ktl=fb2f b=10 ci=164360 co=0 ca=0
42 6 c=20972 g=20973 pq=1 pqc=20972 qp=0 dt=1037/1/0 df=183 of=0 ri=0 ql=62 qs=N.W. kt=0/W/6 ktl=d2ad b=10 ci=65663 co=0 ca=0 42 6 c=20972 g=20973 pq=1 pgp=20973 qp=0 dt=1037/1/0 df=183 of=0 ri=0 ql=62 qs=N.W. kt=0/W/6 ktl=d2ad b=10 ci=65663 co=0 ca=0
43 7 c=20897 g=20897 pq=1 pqc=20896 qp=0 dt=1572/0/0 df=382 of=0 ri=0 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=75006 co=0 ca=0 43 7 c=20897 g=20897 pq=1 pgp=20896 qp=0 dt=1572/0/0 df=382 of=0 ri=0 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=75006 co=0 ca=0
44rcu_bh: 44rcu_bh:
45 0 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=545/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/0 ktl=ebc3 b=10 ci=0 co=0 ca=0 45 0 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=545/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/0 ktl=ebc3 b=10 ci=0 co=0 ca=0
46 1 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=967/1/0 df=3 of=0 ri=1 ql=0 qs=.... kt=0/W/1 ktl=58c b=10 ci=151 co=0 ca=0 46 1 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=967/1/0 df=3 of=0 ri=1 ql=0 qs=.... kt=0/W/1 ktl=58c b=10 ci=151 co=0 ca=0
47 2 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=1081/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/2 ktl=da94 b=10 ci=0 co=0 ca=0 47 2 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=1081/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/2 ktl=da94 b=10 ci=0 co=0 ca=0
48 3 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=1846/0/0 df=8 of=0 ri=1 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=0 co=0 ca=0 48 3 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=1846/0/0 df=8 of=0 ri=1 ql=0 qs=.... kt=0/W/3 ktl=d1cd b=10 ci=0 co=0 ca=0
49 4 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=369/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/4 ktl=e0e7 b=10 ci=0 co=0 ca=0 49 4 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=369/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/4 ktl=e0e7 b=10 ci=0 co=0 ca=0
50 5 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=381/1/0 df=4 of=0 ri=1 ql=0 qs=.... kt=0/W/5 ktl=fb2f b=10 ci=0 co=0 ca=0 50 5 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=381/1/0 df=4 of=0 ri=1 ql=0 qs=.... kt=0/W/5 ktl=fb2f b=10 ci=0 co=0 ca=0
51 6 c=1480 g=1480 pq=1 pqc=1479 qp=0 dt=1037/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/6 ktl=d2ad b=10 ci=0 co=0 ca=0 51 6 c=1480 g=1480 pq=1 pgp=1480 qp=0 dt=1037/1/0 df=6 of=0 ri=1 ql=0 qs=.... kt=0/W/6 ktl=d2ad b=10 ci=0 co=0 ca=0
52 7 c=1474 g=1474 pq=1 pqc=1473 qp=0 dt=1572/0/0 df=8 of=0 ri=1 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=0 co=0 ca=0 52 7 c=1474 g=1474 pq=1 pgp=1473 qp=0 dt=1572/0/0 df=8 of=0 ri=1 ql=0 qs=.... kt=0/W/7 ktl=cf15 b=10 ci=0 co=0 ca=0
53 53
54The first section lists the rcu_data structures for rcu_sched, the second 54The first section lists the rcu_data structures for rcu_sched, the second
55for rcu_bh. Note that CONFIG_TREE_PREEMPT_RCU kernels will have an 55for rcu_bh. Note that CONFIG_TREE_PREEMPT_RCU kernels will have an
@@ -84,7 +84,7 @@ o "pq" indicates that this CPU has passed through a quiescent state
84 CPU has not yet reported that fact, (2) some other CPU has not 84 CPU has not yet reported that fact, (2) some other CPU has not
85 yet reported for this grace period, or (3) both. 85 yet reported for this grace period, or (3) both.
86 86
87o "pqc" indicates which grace period the last-observed quiescent 87o "pgp" indicates which grace period the last-observed quiescent
88 state for this CPU corresponds to. This is important for handling 88 state for this CPU corresponds to. This is important for handling
89 the race between CPU 0 reporting an extended dynticks-idle 89 the race between CPU 0 reporting an extended dynticks-idle
90 quiescent state for CPU 1 and CPU 1 suddenly waking up and 90 quiescent state for CPU 1 and CPU 1 suddenly waking up and
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 7e0282949f8a..7e2f297aeec8 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -159,32 +159,34 @@ static int rcu_gp_in_progress(struct rcu_state *rsp)
159 * Note a quiescent state. Because we do not need to know 159 * Note a quiescent state. Because we do not need to know
160 * how many quiescent states passed, just if there was at least 160 * how many quiescent states passed, just if there was at least
161 * one since the start of the grace period, this just sets a flag. 161 * one since the start of the grace period, this just sets a flag.
162 * The caller must have disabled preemption.
162 */ 163 */
163void rcu_sched_qs(int cpu) 164void rcu_sched_qs(int cpu)
164{ 165{
165 struct rcu_data *rdp = &per_cpu(rcu_sched_data, cpu); 166 struct rcu_data *rdp = &per_cpu(rcu_sched_data, cpu);
166 167
167 rdp->passed_quiesc_completed = rdp->gpnum - 1; 168 rdp->passed_quiesce_gpnum = rdp->gpnum;
168 barrier(); 169 barrier();
169 if (rdp->passed_quiesc == 0) 170 if (rdp->passed_quiesce == 0)
170 trace_rcu_grace_period("rcu_sched", rdp->gpnum, "cpuqs"); 171 trace_rcu_grace_period("rcu_sched", rdp->gpnum, "cpuqs");
171 rdp->passed_quiesc = 1; 172 rdp->passed_quiesce = 1;
172} 173}
173 174
174void rcu_bh_qs(int cpu) 175void rcu_bh_qs(int cpu)
175{ 176{
176 struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); 177 struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu);
177 178
178 rdp->passed_quiesc_completed = rdp->gpnum - 1; 179 rdp->passed_quiesce_gpnum = rdp->gpnum;
179 barrier(); 180 barrier();
180 if (rdp->passed_quiesc == 0) 181 if (rdp->passed_quiesce == 0)
181 trace_rcu_grace_period("rcu_bh", rdp->gpnum, "cpuqs"); 182 trace_rcu_grace_period("rcu_bh", rdp->gpnum, "cpuqs");
182 rdp->passed_quiesc = 1; 183 rdp->passed_quiesce = 1;
183} 184}
184 185
185/* 186/*
186 * Note a context switch. This is a quiescent state for RCU-sched, 187 * Note a context switch. This is a quiescent state for RCU-sched,
187 * and requires special handling for preemptible RCU. 188 * and requires special handling for preemptible RCU.
189 * The caller must have disabled preemption.
188 */ 190 */
189void rcu_note_context_switch(int cpu) 191void rcu_note_context_switch(int cpu)
190{ 192{
@@ -694,7 +696,7 @@ static void __note_new_gpnum(struct rcu_state *rsp, struct rcu_node *rnp, struct
694 trace_rcu_grace_period(rsp->name, rdp->gpnum, "cpustart"); 696 trace_rcu_grace_period(rsp->name, rdp->gpnum, "cpustart");
695 if (rnp->qsmask & rdp->grpmask) { 697 if (rnp->qsmask & rdp->grpmask) {
696 rdp->qs_pending = 1; 698 rdp->qs_pending = 1;
697 rdp->passed_quiesc = 0; 699 rdp->passed_quiesce = 0;
698 } else 700 } else
699 rdp->qs_pending = 0; 701 rdp->qs_pending = 0;
700 } 702 }
@@ -1027,7 +1029,7 @@ rcu_report_qs_rnp(unsigned long mask, struct rcu_state *rsp,
1027 * based on quiescent states detected in an earlier grace period! 1029 * based on quiescent states detected in an earlier grace period!
1028 */ 1030 */
1029static void 1031static void
1030rcu_report_qs_rdp(int cpu, struct rcu_state *rsp, struct rcu_data *rdp, long lastcomp) 1032rcu_report_qs_rdp(int cpu, struct rcu_state *rsp, struct rcu_data *rdp, long lastgp)
1031{ 1033{
1032 unsigned long flags; 1034 unsigned long flags;
1033 unsigned long mask; 1035 unsigned long mask;
@@ -1035,17 +1037,15 @@ rcu_report_qs_rdp(int cpu, struct rcu_state *rsp, struct rcu_data *rdp, long las
1035 1037
1036 rnp = rdp->mynode; 1038 rnp = rdp->mynode;
1037 raw_spin_lock_irqsave(&rnp->lock, flags); 1039 raw_spin_lock_irqsave(&rnp->lock, flags);
1038 if (lastcomp != rnp->completed) { 1040 if (lastgp != rnp->gpnum || rnp->completed == rnp->gpnum) {
1039 1041
1040 /* 1042 /*
1041 * Someone beat us to it for this grace period, so leave. 1043 * The grace period in which this quiescent state was
1042 * The race with GP start is resolved by the fact that we 1044 * recorded has ended, so don't report it upwards.
1043 * hold the leaf rcu_node lock, so that the per-CPU bits 1045 * We will instead need a new quiescent state that lies
1044 * cannot yet be initialized -- so we would simply find our 1046 * within the current grace period.
1045 * CPU's bit already cleared in rcu_report_qs_rnp() if this
1046 * race occurred.
1047 */ 1047 */
1048 rdp->passed_quiesc = 0; /* try again later! */ 1048 rdp->passed_quiesce = 0; /* need qs for new gp. */
1049 raw_spin_unlock_irqrestore(&rnp->lock, flags); 1049 raw_spin_unlock_irqrestore(&rnp->lock, flags);
1050 return; 1050 return;
1051 } 1051 }
@@ -1089,14 +1089,14 @@ rcu_check_quiescent_state(struct rcu_state *rsp, struct rcu_data *rdp)
1089 * Was there a quiescent state since the beginning of the grace 1089 * Was there a quiescent state since the beginning of the grace
1090 * period? If no, then exit and wait for the next call. 1090 * period? If no, then exit and wait for the next call.
1091 */ 1091 */
1092 if (!rdp->passed_quiesc) 1092 if (!rdp->passed_quiesce)
1093 return; 1093 return;
1094 1094
1095 /* 1095 /*
1096 * Tell RCU we are done (but rcu_report_qs_rdp() will be the 1096 * Tell RCU we are done (but rcu_report_qs_rdp() will be the
1097 * judge of that). 1097 * judge of that).
1098 */ 1098 */
1099 rcu_report_qs_rdp(rdp->cpu, rsp, rdp, rdp->passed_quiesc_completed); 1099 rcu_report_qs_rdp(rdp->cpu, rsp, rdp, rdp->passed_quiesce_gpnum);
1100} 1100}
1101 1101
1102#ifdef CONFIG_HOTPLUG_CPU 1102#ifdef CONFIG_HOTPLUG_CPU
@@ -1712,7 +1712,7 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp)
1712 check_cpu_stall(rsp, rdp); 1712 check_cpu_stall(rsp, rdp);
1713 1713
1714 /* Is the RCU core waiting for a quiescent state from this CPU? */ 1714 /* Is the RCU core waiting for a quiescent state from this CPU? */
1715 if (rdp->qs_pending && !rdp->passed_quiesc) { 1715 if (rdp->qs_pending && !rdp->passed_quiesce) {
1716 1716
1717 /* 1717 /*
1718 * If force_quiescent_state() coming soon and this CPU 1718 * If force_quiescent_state() coming soon and this CPU
@@ -1724,7 +1724,7 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp)
1724 ULONG_CMP_LT(ACCESS_ONCE(rsp->jiffies_force_qs) - 1, 1724 ULONG_CMP_LT(ACCESS_ONCE(rsp->jiffies_force_qs) - 1,
1725 jiffies)) 1725 jiffies))
1726 set_need_resched(); 1726 set_need_resched();
1727 } else if (rdp->qs_pending && rdp->passed_quiesc) { 1727 } else if (rdp->qs_pending && rdp->passed_quiesce) {
1728 rdp->n_rp_report_qs++; 1728 rdp->n_rp_report_qs++;
1729 return 1; 1729 return 1;
1730 } 1730 }
@@ -1907,7 +1907,7 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
1907 1907
1908 /* Set up local state, ensuring consistent view of global state. */ 1908 /* Set up local state, ensuring consistent view of global state. */
1909 raw_spin_lock_irqsave(&rnp->lock, flags); 1909 raw_spin_lock_irqsave(&rnp->lock, flags);
1910 rdp->passed_quiesc = 0; /* We could be racing with new GP, */ 1910 rdp->passed_quiesce = 0; /* We could be racing with new GP, */
1911 rdp->qs_pending = 1; /* so set up to respond to current GP. */ 1911 rdp->qs_pending = 1; /* so set up to respond to current GP. */
1912 rdp->beenonline = 1; /* We have now been online. */ 1912 rdp->beenonline = 1; /* We have now been online. */
1913 rdp->preemptible = preemptible; 1913 rdp->preemptible = preemptible;
@@ -1935,7 +1935,7 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
1935 if (rnp == rdp->mynode) { 1935 if (rnp == rdp->mynode) {
1936 rdp->gpnum = rnp->completed; /* if GP in progress... */ 1936 rdp->gpnum = rnp->completed; /* if GP in progress... */
1937 rdp->completed = rnp->completed; 1937 rdp->completed = rnp->completed;
1938 rdp->passed_quiesc_completed = rnp->completed - 1; 1938 rdp->passed_quiesce_gpnum = rnp->gpnum - 1;
1939 trace_rcu_grace_period(rsp->name, rdp->gpnum, "cpuonl"); 1939 trace_rcu_grace_period(rsp->name, rdp->gpnum, "cpuonl");
1940 } 1940 }
1941 raw_spin_unlock(&rnp->lock); /* irqs already disabled. */ 1941 raw_spin_unlock(&rnp->lock); /* irqs already disabled. */
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index d11a0065321c..51638b68b2dc 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -230,9 +230,9 @@ struct rcu_data {
230 /* in order to detect GP end. */ 230 /* in order to detect GP end. */
231 unsigned long gpnum; /* Highest gp number that this CPU */ 231 unsigned long gpnum; /* Highest gp number that this CPU */
232 /* is aware of having started. */ 232 /* is aware of having started. */
233 unsigned long passed_quiesc_completed; 233 unsigned long passed_quiesce_gpnum;
234 /* Value of completed at time of qs. */ 234 /* gpnum at time of quiescent state. */
235 bool passed_quiesc; /* User-mode/idle loop etc. */ 235 bool passed_quiesce; /* User-mode/idle loop etc. */
236 bool qs_pending; /* Core waits for quiesc state. */ 236 bool qs_pending; /* Core waits for quiesc state. */
237 bool beenonline; /* CPU online at least once. */ 237 bool beenonline; /* CPU online at least once. */
238 bool preemptible; /* Preemptible RCU? */ 238 bool preemptible; /* Preemptible RCU? */
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index bdb2e82f78d3..4bac5a29fb69 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -122,11 +122,11 @@ static void rcu_preempt_qs(int cpu)
122{ 122{
123 struct rcu_data *rdp = &per_cpu(rcu_preempt_data, cpu); 123 struct rcu_data *rdp = &per_cpu(rcu_preempt_data, cpu);
124 124
125 rdp->passed_quiesc_completed = rdp->gpnum - 1; 125 rdp->passed_quiesce_gpnum = rdp->gpnum;
126 barrier(); 126 barrier();
127 if (rdp->passed_quiesc == 0) 127 if (rdp->passed_quiesce == 0)
128 trace_rcu_grace_period("rcu_preempt", rdp->gpnum, "cpuqs"); 128 trace_rcu_grace_period("rcu_preempt", rdp->gpnum, "cpuqs");
129 rdp->passed_quiesc = 1; 129 rdp->passed_quiesce = 1;
130 current->rcu_read_unlock_special &= ~RCU_READ_UNLOCK_NEED_QS; 130 current->rcu_read_unlock_special &= ~RCU_READ_UNLOCK_NEED_QS;
131} 131}
132 132
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c
index f328ed1c6e46..9feffa4c0695 100644
--- a/kernel/rcutree_trace.c
+++ b/kernel/rcutree_trace.c
@@ -61,11 +61,11 @@ static void print_one_rcu_data(struct seq_file *m, struct rcu_data *rdp)
61{ 61{
62 if (!rdp->beenonline) 62 if (!rdp->beenonline)
63 return; 63 return;
64 seq_printf(m, "%3d%cc=%lu g=%lu pq=%d pqc=%lu qp=%d", 64 seq_printf(m, "%3d%cc=%lu g=%lu pq=%d pgp=%lu qp=%d",
65 rdp->cpu, 65 rdp->cpu,
66 cpu_is_offline(rdp->cpu) ? '!' : ' ', 66 cpu_is_offline(rdp->cpu) ? '!' : ' ',
67 rdp->completed, rdp->gpnum, 67 rdp->completed, rdp->gpnum,
68 rdp->passed_quiesc, rdp->passed_quiesc_completed, 68 rdp->passed_quiesce, rdp->passed_quiesce_gpnum,
69 rdp->qs_pending); 69 rdp->qs_pending);
70#ifdef CONFIG_NO_HZ 70#ifdef CONFIG_NO_HZ
71 seq_printf(m, " dt=%d/%d/%d df=%lu", 71 seq_printf(m, " dt=%d/%d/%d df=%lu",
@@ -139,7 +139,7 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp)
139 rdp->cpu, 139 rdp->cpu,
140 cpu_is_offline(rdp->cpu) ? "\"N\"" : "\"Y\"", 140 cpu_is_offline(rdp->cpu) ? "\"N\"" : "\"Y\"",
141 rdp->completed, rdp->gpnum, 141 rdp->completed, rdp->gpnum,
142 rdp->passed_quiesc, rdp->passed_quiesc_completed, 142 rdp->passed_quiesce, rdp->passed_quiesce_gpnum,
143 rdp->qs_pending); 143 rdp->qs_pending);
144#ifdef CONFIG_NO_HZ 144#ifdef CONFIG_NO_HZ
145 seq_printf(m, ",%d,%d,%d,%lu", 145 seq_printf(m, ",%d,%d,%d,%lu",
@@ -170,7 +170,7 @@ static void print_one_rcu_data_csv(struct seq_file *m, struct rcu_data *rdp)
170 170
171static int show_rcudata_csv(struct seq_file *m, void *unused) 171static int show_rcudata_csv(struct seq_file *m, void *unused)
172{ 172{
173 seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pqc\",\"pq\","); 173 seq_puts(m, "\"CPU\",\"Online?\",\"c\",\"g\",\"pq\",\"pgp\",\"pq\",");
174#ifdef CONFIG_NO_HZ 174#ifdef CONFIG_NO_HZ
175 seq_puts(m, "\"dt\",\"dt nesting\",\"dt NMI nesting\",\"df\","); 175 seq_puts(m, "\"dt\",\"dt nesting\",\"dt NMI nesting\",\"df\",");
176#endif /* #ifdef CONFIG_NO_HZ */ 176#endif /* #ifdef CONFIG_NO_HZ */