The L1D row of the cache event table has load and store misses but no accesses, and nothing for prefetches, so L1-dcache-loads, L1-dcache-stores and L1-dcache-prefetch-misses are not supported.
The MPC7450 has no L1 data cache access event, so approximate the accesses with PMC2 select 26 (load instructions completed) and select 20 (store instructions completed, PMC1 or PMC2). These also count cache-inhibited accesses. PMC2 select 38 counts dcbt, dcbtst and dst line fetches that miss in the L1 data cache. On a 7448, a loop with one store in every 32 instructions counted 645840841 instructions and 19773839 L1-dcache-stores, about one store per 33 instructions. Loads and load misses are both PMC2-only events, so perf multiplexes L1-dcache-loads and L1-dcache-load-misses when both are requested, and refuses them in one group. Signed-off-by: Matt Turner <[email protected]> --- arch/powerpc/perf/mpc7450-pmu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/perf/mpc7450-pmu.c b/arch/powerpc/perf/mpc7450-pmu.c index 9890c87c58ef..27337a03ebde 100644 --- a/arch/powerpc/perf/mpc7450-pmu.c +++ b/arch/powerpc/perf/mpc7450-pmu.c @@ -362,9 +362,9 @@ static int mpc7450_generic_events[] = { */ static u64 mpc7450_cache_events[C(MAX)][C(OP_MAX)][C(RESULT_MAX)] = { [C(L1D)] = { /* RESULT_ACCESS RESULT_MISS */ - [C(OP_READ)] = { 0, 0x225 }, - [C(OP_WRITE)] = { 0, 0x227 }, - [C(OP_PREFETCH)] = { 0, 0 }, + [C(OP_READ)] = { 0x21a, 0x225 }, + [C(OP_WRITE)] = { 0x014, 0x227 }, + [C(OP_PREFETCH)] = { 0, 0x226 }, }, [C(L1I)] = { /* RESULT_ACCESS RESULT_MISS */ [C(OP_READ)] = { 0x129, 0x115 }, -- 2.55.0
