diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-06-08 01:42:04 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-06-08 05:18:26 -0400 |
| commit | 0312af84164215a452f2a94957ebd9bce86e0204 (patch) | |
| tree | a0a26be68412bf928e9e8e3db112abdad581027a /arch | |
| parent | e779898aa74cd2e97216368b3f3689ceffe8aeed (diff) | |
perf_counter, x86: Implement generalized cache event types, add Core2 support
Fill in core2_hw_cache_event_id[] with the Core2 model specific events.
The events can be used in all the tools via the -e (--event) parameter,
for example "-e l1-misses" or -"-e l2-accesses" or "-e l2-write-misses".
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86/kernel/cpu/perf_counter.c | 85 |
1 files changed, 84 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c index e86679fa5215..b1f71ff50256 100644 --- a/arch/x86/kernel/cpu/perf_counter.c +++ b/arch/x86/kernel/cpu/perf_counter.c | |||
| @@ -194,7 +194,90 @@ static const u64 core2_hw_cache_event_ids | |||
| 194 | [PERF_COUNT_HW_CACHE_OP_MAX] | 194 | [PERF_COUNT_HW_CACHE_OP_MAX] |
| 195 | [PERF_COUNT_HW_CACHE_RESULT_MAX] = | 195 | [PERF_COUNT_HW_CACHE_RESULT_MAX] = |
| 196 | { | 196 | { |
| 197 | /* To be filled in */ | 197 | [ C(L1D) ] = { |
| 198 | [ C(OP_READ) ] = { | ||
| 199 | [ C(RESULT_ACCESS) ] = 0x0f40, /* L1D_CACHE_LD.MESI */ | ||
| 200 | [ C(RESULT_MISS) ] = 0x0140, /* L1D_CACHE_LD.I_STATE */ | ||
| 201 | }, | ||
| 202 | [ C(OP_WRITE) ] = { | ||
| 203 | [ C(RESULT_ACCESS) ] = 0x0f41, /* L1D_CACHE_ST.MESI */ | ||
| 204 | [ C(RESULT_MISS) ] = 0x0141, /* L1D_CACHE_ST.I_STATE */ | ||
| 205 | }, | ||
| 206 | [ C(OP_PREFETCH) ] = { | ||
| 207 | [ C(RESULT_ACCESS) ] = 0x104e, /* L1D_PREFETCH.REQUESTS */ | ||
| 208 | [ C(RESULT_MISS) ] = 0, | ||
| 209 | }, | ||
| 210 | }, | ||
| 211 | [ C(L1I ) ] = { | ||
| 212 | [ C(OP_READ) ] = { | ||
| 213 | [ C(RESULT_ACCESS) ] = 0x0080, /* L1I.READS */ | ||
| 214 | [ C(RESULT_MISS) ] = 0x0081, /* L1I.MISSES */ | ||
| 215 | }, | ||
| 216 | [ C(OP_WRITE) ] = { | ||
| 217 | [ C(RESULT_ACCESS) ] = -1, | ||
| 218 | [ C(RESULT_MISS) ] = -1, | ||
| 219 | }, | ||
| 220 | [ C(OP_PREFETCH) ] = { | ||
| 221 | [ C(RESULT_ACCESS) ] = 0, | ||
| 222 | [ C(RESULT_MISS) ] = 0, | ||
| 223 | }, | ||
| 224 | }, | ||
| 225 | [ C(L2 ) ] = { | ||
| 226 | [ C(OP_READ) ] = { | ||
| 227 | [ C(RESULT_ACCESS) ] = 0x4f29, /* L2_LD.MESI */ | ||
| 228 | [ C(RESULT_MISS) ] = 0x4129, /* L2_LD.ISTATE */ | ||
| 229 | }, | ||
| 230 | [ C(OP_WRITE) ] = { | ||
| 231 | [ C(RESULT_ACCESS) ] = 0x4f2A, /* L2_ST.MESI */ | ||
| 232 | [ C(RESULT_MISS) ] = 0x412A, /* L2_ST.ISTATE */ | ||
| 233 | }, | ||
| 234 | [ C(OP_PREFETCH) ] = { | ||
| 235 | [ C(RESULT_ACCESS) ] = 0, | ||
| 236 | [ C(RESULT_MISS) ] = 0, | ||
| 237 | }, | ||
| 238 | }, | ||
| 239 | [ C(DTLB) ] = { | ||
| 240 | [ C(OP_READ) ] = { | ||
| 241 | [ C(RESULT_ACCESS) ] = 0x0f40, /* L1D_CACHE_LD.MESI (alias) */ | ||
| 242 | [ C(RESULT_MISS) ] = 0x0208, /* DTLB_MISSES.MISS_LD */ | ||
| 243 | }, | ||
| 244 | [ C(OP_WRITE) ] = { | ||
| 245 | [ C(RESULT_ACCESS) ] = 0x0f41, /* L1D_CACHE_ST.MESI (alias) */ | ||
| 246 | [ C(RESULT_MISS) ] = 0x0808, /* DTLB_MISSES.MISS_ST */ | ||
| 247 | }, | ||
| 248 | [ C(OP_PREFETCH) ] = { | ||
| 249 | [ C(RESULT_ACCESS) ] = 0, | ||
| 250 | [ C(RESULT_MISS) ] = 0, | ||
| 251 | }, | ||
| 252 | }, | ||
| 253 | [ C(ITLB) ] = { | ||
| 254 | [ C(OP_READ) ] = { | ||
| 255 | [ C(RESULT_ACCESS) ] = 0x00c0, /* INST_RETIRED.ANY_P */ | ||
| 256 | [ C(RESULT_MISS) ] = 0x1282, /* ITLBMISSES */ | ||
| 257 | }, | ||
| 258 | [ C(OP_WRITE) ] = { | ||
| 259 | [ C(RESULT_ACCESS) ] = -1, | ||
| 260 | [ C(RESULT_MISS) ] = -1, | ||
| 261 | }, | ||
| 262 | [ C(OP_PREFETCH) ] = { | ||
| 263 | [ C(RESULT_ACCESS) ] = -1, | ||
| 264 | [ C(RESULT_MISS) ] = -1, | ||
| 265 | }, | ||
| 266 | }, | ||
| 267 | [ C(BPU ) ] = { | ||
| 268 | [ C(OP_READ) ] = { | ||
| 269 | [ C(RESULT_ACCESS) ] = 0x00c4, /* BR_INST_RETIRED.ANY */ | ||
| 270 | [ C(RESULT_MISS) ] = 0x00c5, /* BP_INST_RETIRED.MISPRED */ | ||
| 271 | }, | ||
| 272 | [ C(OP_WRITE) ] = { | ||
| 273 | [ C(RESULT_ACCESS) ] = -1, | ||
| 274 | [ C(RESULT_MISS) ] = -1, | ||
| 275 | }, | ||
| 276 | [ C(OP_PREFETCH) ] = { | ||
| 277 | [ C(RESULT_ACCESS) ] = -1, | ||
| 278 | [ C(RESULT_MISS) ] = -1, | ||
| 279 | }, | ||
| 280 | }, | ||
| 198 | }; | 281 | }; |
| 199 | 282 | ||
| 200 | static const u64 atom_hw_cache_event_ids | 283 | static const u64 atom_hw_cache_event_ids |
