aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/stat-shadow.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/stat-shadow.c')
-rw-r--r--tools/perf/util/stat-shadow.c48
1 files changed, 25 insertions, 23 deletions
diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c
index a2c12d1ef32a..51ad03a799ec 100644
--- a/tools/perf/util/stat-shadow.c
+++ b/tools/perf/util/stat-shadow.c
@@ -178,58 +178,60 @@ void perf_stat__reset_shadow_stats(void)
178 * more semantic information such as miss/hit ratios, 178 * more semantic information such as miss/hit ratios,
179 * instruction rates, etc: 179 * instruction rates, etc:
180 */ 180 */
181void perf_stat__update_shadow_stats(struct perf_evsel *counter, u64 *count, 181void perf_stat__update_shadow_stats(struct perf_evsel *counter, u64 count,
182 int cpu) 182 int cpu)
183{ 183{
184 int ctx = evsel_context(counter); 184 int ctx = evsel_context(counter);
185 185
186 count *= counter->scale;
187
186 if (perf_evsel__match(counter, SOFTWARE, SW_TASK_CLOCK) || 188 if (perf_evsel__match(counter, SOFTWARE, SW_TASK_CLOCK) ||
187 perf_evsel__match(counter, SOFTWARE, SW_CPU_CLOCK)) 189 perf_evsel__match(counter, SOFTWARE, SW_CPU_CLOCK))
188 update_stats(&runtime_nsecs_stats[cpu], count[0]); 190 update_stats(&runtime_nsecs_stats[cpu], count);
189 else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES)) 191 else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES))
190 update_stats(&runtime_cycles_stats[ctx][cpu], count[0]); 192 update_stats(&runtime_cycles_stats[ctx][cpu], count);
191 else if (perf_stat_evsel__is(counter, CYCLES_IN_TX)) 193 else if (perf_stat_evsel__is(counter, CYCLES_IN_TX))
192 update_stats(&runtime_cycles_in_tx_stats[ctx][cpu], count[0]); 194 update_stats(&runtime_cycles_in_tx_stats[ctx][cpu], count);
193 else if (perf_stat_evsel__is(counter, TRANSACTION_START)) 195 else if (perf_stat_evsel__is(counter, TRANSACTION_START))
194 update_stats(&runtime_transaction_stats[ctx][cpu], count[0]); 196 update_stats(&runtime_transaction_stats[ctx][cpu], count);
195 else if (perf_stat_evsel__is(counter, ELISION_START)) 197 else if (perf_stat_evsel__is(counter, ELISION_START))
196 update_stats(&runtime_elision_stats[ctx][cpu], count[0]); 198 update_stats(&runtime_elision_stats[ctx][cpu], count);
197 else if (perf_stat_evsel__is(counter, TOPDOWN_TOTAL_SLOTS)) 199 else if (perf_stat_evsel__is(counter, TOPDOWN_TOTAL_SLOTS))
198 update_stats(&runtime_topdown_total_slots[ctx][cpu], count[0]); 200 update_stats(&runtime_topdown_total_slots[ctx][cpu], count);
199 else if (perf_stat_evsel__is(counter, TOPDOWN_SLOTS_ISSUED)) 201 else if (perf_stat_evsel__is(counter, TOPDOWN_SLOTS_ISSUED))
200 update_stats(&runtime_topdown_slots_issued[ctx][cpu], count[0]); 202 update_stats(&runtime_topdown_slots_issued[ctx][cpu], count);
201 else if (perf_stat_evsel__is(counter, TOPDOWN_SLOTS_RETIRED)) 203 else if (perf_stat_evsel__is(counter, TOPDOWN_SLOTS_RETIRED))
202 update_stats(&runtime_topdown_slots_retired[ctx][cpu], count[0]); 204 update_stats(&runtime_topdown_slots_retired[ctx][cpu], count);
203 else if (perf_stat_evsel__is(counter, TOPDOWN_FETCH_BUBBLES)) 205 else if (perf_stat_evsel__is(counter, TOPDOWN_FETCH_BUBBLES))
204 update_stats(&runtime_topdown_fetch_bubbles[ctx][cpu],count[0]); 206 update_stats(&runtime_topdown_fetch_bubbles[ctx][cpu], count);
205 else if (perf_stat_evsel__is(counter, TOPDOWN_RECOVERY_BUBBLES)) 207 else if (perf_stat_evsel__is(counter, TOPDOWN_RECOVERY_BUBBLES))
206 update_stats(&runtime_topdown_recovery_bubbles[ctx][cpu], count[0]); 208 update_stats(&runtime_topdown_recovery_bubbles[ctx][cpu], count);
207 else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_FRONTEND)) 209 else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_FRONTEND))
208 update_stats(&runtime_stalled_cycles_front_stats[ctx][cpu], count[0]); 210 update_stats(&runtime_stalled_cycles_front_stats[ctx][cpu], count);
209 else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_BACKEND)) 211 else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_BACKEND))
210 update_stats(&runtime_stalled_cycles_back_stats[ctx][cpu], count[0]); 212 update_stats(&runtime_stalled_cycles_back_stats[ctx][cpu], count);
211 else if (perf_evsel__match(counter, HARDWARE, HW_BRANCH_INSTRUCTIONS)) 213 else if (perf_evsel__match(counter, HARDWARE, HW_BRANCH_INSTRUCTIONS))
212 update_stats(&runtime_branches_stats[ctx][cpu], count[0]); 214 update_stats(&runtime_branches_stats[ctx][cpu], count);
213 else if (perf_evsel__match(counter, HARDWARE, HW_CACHE_REFERENCES)) 215 else if (perf_evsel__match(counter, HARDWARE, HW_CACHE_REFERENCES))
214 update_stats(&runtime_cacherefs_stats[ctx][cpu], count[0]); 216 update_stats(&runtime_cacherefs_stats[ctx][cpu], count);
215 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1D)) 217 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1D))
216 update_stats(&runtime_l1_dcache_stats[ctx][cpu], count[0]); 218 update_stats(&runtime_l1_dcache_stats[ctx][cpu], count);
217 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1I)) 219 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_L1I))
218 update_stats(&runtime_ll_cache_stats[ctx][cpu], count[0]); 220 update_stats(&runtime_ll_cache_stats[ctx][cpu], count);
219 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_LL)) 221 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_LL))
220 update_stats(&runtime_ll_cache_stats[ctx][cpu], count[0]); 222 update_stats(&runtime_ll_cache_stats[ctx][cpu], count);
221 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_DTLB)) 223 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_DTLB))
222 update_stats(&runtime_dtlb_cache_stats[ctx][cpu], count[0]); 224 update_stats(&runtime_dtlb_cache_stats[ctx][cpu], count);
223 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_ITLB)) 225 else if (perf_evsel__match(counter, HW_CACHE, HW_CACHE_ITLB))
224 update_stats(&runtime_itlb_cache_stats[ctx][cpu], count[0]); 226 update_stats(&runtime_itlb_cache_stats[ctx][cpu], count);
225 else if (perf_stat_evsel__is(counter, SMI_NUM)) 227 else if (perf_stat_evsel__is(counter, SMI_NUM))
226 update_stats(&runtime_smi_num_stats[ctx][cpu], count[0]); 228 update_stats(&runtime_smi_num_stats[ctx][cpu], count);
227 else if (perf_stat_evsel__is(counter, APERF)) 229 else if (perf_stat_evsel__is(counter, APERF))
228 update_stats(&runtime_aperf_stats[ctx][cpu], count[0]); 230 update_stats(&runtime_aperf_stats[ctx][cpu], count);
229 231
230 if (counter->collect_stat) { 232 if (counter->collect_stat) {
231 struct saved_value *v = saved_value_lookup(counter, cpu, true); 233 struct saved_value *v = saved_value_lookup(counter, cpu, true);
232 update_stats(&v->stats, count[0]); 234 update_stats(&v->stats, count);
233 } 235 }
234} 236}
235 237