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 |