Skip to content

Commit 40c390c

Browse files
committed
ARM: perf: don't pretend to support counting of L1I writes
ARM has a harvard cache architecture and cannot write directly to the I-side. This patch removes the L1I write events from the cache map (which previously returned *read* events in many cases). Reported-by: Mike Williams <[email protected]> Signed-off-by: Will Deacon <[email protected]>
1 parent 1764c59 commit 40c390c

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

arch/arm/kernel/perf_event_v6.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ static const unsigned armv6_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
106106
},
107107
[C(OP_WRITE)] = {
108108
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
109-
[C(RESULT_MISS)] = ARMV6_PERFCTR_ICACHE_MISS,
109+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
110110
},
111111
[C(OP_PREFETCH)] = {
112112
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
@@ -259,7 +259,7 @@ static const unsigned armv6mpcore_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
259259
},
260260
[C(OP_WRITE)] = {
261261
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
262-
[C(RESULT_MISS)] = ARMV6MPCORE_PERFCTR_ICACHE_MISS,
262+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
263263
},
264264
[C(OP_PREFETCH)] = {
265265
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,

arch/arm/kernel/perf_event_v7.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ static const unsigned armv7_a8_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
157157
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
158158
},
159159
[C(OP_WRITE)] = {
160-
[C(RESULT_ACCESS)] = ARMV7_A8_PERFCTR_L1_ICACHE_ACCESS,
161-
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
160+
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
161+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
162162
},
163163
[C(OP_PREFETCH)] = {
164164
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
@@ -282,7 +282,7 @@ static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
282282
},
283283
[C(OP_WRITE)] = {
284284
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
285-
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
285+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
286286
},
287287
[C(OP_PREFETCH)] = {
288288
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
@@ -399,8 +399,8 @@ static const unsigned armv7_a5_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
399399
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
400400
},
401401
[C(OP_WRITE)] = {
402-
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
403-
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
402+
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
403+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
404404
},
405405
/*
406406
* The prefetch counters don't differentiate between the I
@@ -527,8 +527,8 @@ static const unsigned armv7_a15_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
527527
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
528528
},
529529
[C(OP_WRITE)] = {
530-
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
531-
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
530+
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
531+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
532532
},
533533
[C(OP_PREFETCH)] = {
534534
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
@@ -651,8 +651,8 @@ static const unsigned armv7_a7_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
651651
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
652652
},
653653
[C(OP_WRITE)] = {
654-
[C(RESULT_ACCESS)] = ARMV7_PERFCTR_L1_ICACHE_ACCESS,
655-
[C(RESULT_MISS)] = ARMV7_PERFCTR_L1_ICACHE_REFILL,
654+
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
655+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
656656
},
657657
[C(OP_PREFETCH)] = {
658658
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,

arch/arm/kernel/perf_event_xscale.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ static const unsigned xscale_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
8383
},
8484
[C(OP_WRITE)] = {
8585
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
86-
[C(RESULT_MISS)] = XSCALE_PERFCTR_ICACHE_MISS,
86+
[C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
8787
},
8888
[C(OP_PREFETCH)] = {
8989
[C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,

0 commit comments

Comments
 (0)