diff options
Diffstat (limited to 'tools/perf/util/stat-shadow.c')
| -rw-r--r-- | tools/perf/util/stat-shadow.c | 48 |
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 | */ |
| 181 | void perf_stat__update_shadow_stats(struct perf_evsel *counter, u64 *count, | 181 | void 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 | ||
