diff options
-rw-r--r-- | Documentation/RCU/trace.txt | 34 | ||||
-rw-r--r-- | kernel/rcutree.c | 44 | ||||
-rw-r--r-- | kernel/rcutree.h | 6 | ||||
-rw-r--r-- | kernel/rcutree_plugin.h | 6 | ||||
-rw-r--r-- | kernel/rcutree_trace.c | 8 |
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: | |||
33 | The output of "cat rcu/rcudata" looks as follows: | 33 | The output of "cat rcu/rcudata" looks as follows: |
34 | 34 | ||
35 | rcu_sched: | 35 | rcu_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 |
44 | rcu_bh: | 44 | rcu_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 | ||
54 | The first section lists the rcu_data structures for rcu_sched, the second | 54 | The first section lists the rcu_data structures for rcu_sched, the second |
55 | for rcu_bh. Note that CONFIG_TREE_PREEMPT_RCU kernels will have an | 55 | for 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 | ||
87 | o "pqc" indicates which grace period the last-observed quiescent | 87 | o "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 | */ |
163 | void rcu_sched_qs(int cpu) | 164 | void 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 | ||
174 | void rcu_bh_qs(int cpu) | 175 | void 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 | */ |
189 | void rcu_note_context_switch(int cpu) | 191 | void 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 | */ |
1029 | static void | 1031 | static void |
1030 | rcu_report_qs_rdp(int cpu, struct rcu_state *rsp, struct rcu_data *rdp, long lastcomp) | 1032 | rcu_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 | ||
171 | static int show_rcudata_csv(struct seq_file *m, void *unused) | 171 | static 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 */ |