diff options
Diffstat (limited to 'arch/arm/kernel/perf_event_v7.c')
| -rw-r--r-- | arch/arm/kernel/perf_event_v7.c | 967 | 
1 files changed, 216 insertions, 751 deletions
diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c index 1d37568c547a..116758b77f93 100644 --- a/arch/arm/kernel/perf_event_v7.c +++ b/arch/arm/kernel/perf_event_v7.c @@ -148,137 +148,62 @@ enum krait_perf_types {   * accesses/misses in hardware.   */  static const unsigned armv7_a8_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]		= ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]		= ARMV7_PERFCTR_INSTR_EXECUTED,  	[PERF_COUNT_HW_CACHE_REFERENCES]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS,  	[PERF_COUNT_HW_CACHE_MISSES]		= ARMV7_PERFCTR_L1_DCACHE_REFILL,  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS]	= ARMV7_PERFCTR_PC_WRITE,  	[PERF_COUNT_HW_BRANCH_MISSES]		= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -	[PERF_COUNT_HW_BUS_CYCLES]		= HW_OP_UNSUPPORTED,  	[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND]	= ARMV7_A8_PERFCTR_STALL_ISIDE, -	[PERF_COUNT_HW_STALLED_CYCLES_BACKEND]	= HW_OP_UNSUPPORTED,  };  static const unsigned armv7_a8_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					  [PERF_COUNT_HW_CACHE_OP_MAX]  					  [PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		/* -		 * The performance counters don't differentiate between read -		 * and write accesses/misses so this isn't strictly correct, -		 * but it's the best we can do. Writes and reads get -		 * combined. -		 */ -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(L1I)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A8_PERFCTR_L1_ICACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A8_PERFCTR_L2_CACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_A8_PERFCTR_L2_CACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A8_PERFCTR_L2_CACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_A8_PERFCTR_L2_CACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	/* +	 * The performance counters don't differentiate between read and write +	 * accesses/misses so this isn't strictly correct, but it's the best we +	 * can do. Writes and reads get combined. +	 */ +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, + +	[C(L1I)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_A8_PERFCTR_L1_ICACHE_ACCESS, +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, + +	[C(LL)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_A8_PERFCTR_L2_CACHE_ACCESS, +	[C(LL)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_A8_PERFCTR_L2_CACHE_REFILL, +	[C(LL)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_A8_PERFCTR_L2_CACHE_ACCESS, +	[C(LL)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_A8_PERFCTR_L2_CACHE_REFILL, + +	[C(DTLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, + +	[C(ITLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /*   * Cortex-A9 HW events mapping   */  static const unsigned armv7_a9_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]		= ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]		= ARMV7_A9_PERFCTR_INSTR_CORE_RENAME,  	[PERF_COUNT_HW_CACHE_REFERENCES]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS,  	[PERF_COUNT_HW_CACHE_MISSES]		= ARMV7_PERFCTR_L1_DCACHE_REFILL,  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS]	= ARMV7_PERFCTR_PC_WRITE,  	[PERF_COUNT_HW_BRANCH_MISSES]		= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -	[PERF_COUNT_HW_BUS_CYCLES]		= HW_OP_UNSUPPORTED,  	[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND]	= ARMV7_A9_PERFCTR_STALL_ICACHE,  	[PERF_COUNT_HW_STALLED_CYCLES_BACKEND]	= ARMV7_A9_PERFCTR_STALL_DISPATCH,  }; @@ -286,238 +211,83 @@ static const unsigned armv7_a9_perf_map[PERF_COUNT_HW_MAX] = {  static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					  [PERF_COUNT_HW_CACHE_OP_MAX]  					  [PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		/* -		 * The performance counters don't differentiate between read -		 * and write accesses/misses so this isn't strictly correct, -		 * but it's the best we can do. Writes and reads get -		 * combined. -		 */ -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(L1I)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	/* +	 * The performance counters don't differentiate between read and write +	 * accesses/misses so this isn't strictly correct, but it's the best we +	 * can do. Writes and reads get combined. +	 */ +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, + +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, + +	[C(DTLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, + +	[C(ITLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /*   * Cortex-A5 HW events mapping   */  static const unsigned armv7_a5_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]		= ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]		= ARMV7_PERFCTR_INSTR_EXECUTED,  	[PERF_COUNT_HW_CACHE_REFERENCES]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS,  	[PERF_COUNT_HW_CACHE_MISSES]		= ARMV7_PERFCTR_L1_DCACHE_REFILL,  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS]	= ARMV7_PERFCTR_PC_WRITE,  	[PERF_COUNT_HW_BRANCH_MISSES]		= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -	[PERF_COUNT_HW_BUS_CYCLES]		= HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND]	= HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_STALLED_CYCLES_BACKEND]	= HW_OP_UNSUPPORTED,  };  static const unsigned armv7_a5_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					[PERF_COUNT_HW_CACHE_OP_MAX]  					[PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL, -			[C(RESULT_MISS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL_DROP, -		}, -	}, -	[C(L1I)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		/* -		 * The prefetch counters don't differentiate between the I -		 * side and the D side. -		 */ -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL, -			[C(RESULT_MISS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL_DROP, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_PREFETCH)][C(RESULT_ACCESS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL, +	[C(L1D)][C(OP_PREFETCH)][C(RESULT_MISS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL_DROP, + +	[C(L1I)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, +	/* +	 * The prefetch counters don't differentiate between the I side and the +	 * D side. +	 */ +	[C(L1I)][C(OP_PREFETCH)][C(RESULT_ACCESS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL, +	[C(L1I)][C(OP_PREFETCH)][C(RESULT_MISS)]	= ARMV7_A5_PERFCTR_PREFETCH_LINEFILL_DROP, + +	[C(DTLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, + +	[C(ITLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /*   * Cortex-A15 HW events mapping   */  static const unsigned armv7_a15_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]		= ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]		= ARMV7_PERFCTR_INSTR_EXECUTED,  	[PERF_COUNT_HW_CACHE_REFERENCES]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, @@ -525,123 +295,48 @@ static const unsigned armv7_a15_perf_map[PERF_COUNT_HW_MAX] = {  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS]	= ARMV7_A15_PERFCTR_PC_WRITE_SPEC,  	[PERF_COUNT_HW_BRANCH_MISSES]		= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  	[PERF_COUNT_HW_BUS_CYCLES]		= ARMV7_PERFCTR_BUS_CYCLES, -	[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND]	= HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_STALLED_CYCLES_BACKEND]	= HW_OP_UNSUPPORTED,  };  static const unsigned armv7_a15_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					[PERF_COUNT_HW_CACHE_OP_MAX]  					[PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_ACCESS_READ, -			[C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_REFILL_READ, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_ACCESS_WRITE, -			[C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_REFILL_WRITE, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(L1I)] = { -		/* -		 * Not all performance counters differentiate between read -		 * and write accesses/misses so we're not always strictly -		 * correct, but it's the best we can do. Writes and reads get -		 * combined in these cases. -		 */ -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L2_CACHE_ACCESS_READ, -			[C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L2_CACHE_REFILL_READ, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L2_CACHE_ACCESS_WRITE, -			[C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L2_CACHE_REFILL_WRITE, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_DTLB_REFILL_L1_READ, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_DTLB_REFILL_L1_WRITE, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_ACCESS_READ, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_REFILL_READ, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_ACCESS_WRITE, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L1_DCACHE_REFILL_WRITE, + +	/* +	 * Not all performance counters differentiate between read and write +	 * accesses/misses so we're not always strictly correct, but it's the +	 * best we can do. Writes and reads get combined in these cases. +	 */ +	[C(L1I)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, + +	[C(LL)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L2_CACHE_ACCESS_READ, +	[C(LL)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L2_CACHE_REFILL_READ, +	[C(LL)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_A15_PERFCTR_L2_CACHE_ACCESS_WRITE, +	[C(LL)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_L2_CACHE_REFILL_WRITE, + +	[C(DTLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_DTLB_REFILL_L1_READ, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_A15_PERFCTR_DTLB_REFILL_L1_WRITE, + +	[C(ITLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /*   * Cortex-A7 HW events mapping   */  static const unsigned armv7_a7_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]		= ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]		= ARMV7_PERFCTR_INSTR_EXECUTED,  	[PERF_COUNT_HW_CACHE_REFERENCES]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, @@ -649,123 +344,48 @@ static const unsigned armv7_a7_perf_map[PERF_COUNT_HW_MAX] = {  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS]	= ARMV7_PERFCTR_PC_WRITE,  	[PERF_COUNT_HW_BRANCH_MISSES]		= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  	[PERF_COUNT_HW_BUS_CYCLES]		= ARMV7_PERFCTR_BUS_CYCLES, -	[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND]	= HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_STALLED_CYCLES_BACKEND]	= HW_OP_UNSUPPORTED,  };  static const unsigned armv7_a7_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					[PERF_COUNT_HW_CACHE_OP_MAX]  					[PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		/* -		 * The performance counters don't differentiate between read -		 * and write accesses/misses so this isn't strictly correct, -		 * but it's the best we can do. Writes and reads get -		 * combined. -		 */ -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(L1I)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L2_CACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L2_CACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	/* +	 * The performance counters don't differentiate between read and write +	 * accesses/misses so this isn't strictly correct, but it's the best we +	 * can do. Writes and reads get combined. +	 */ +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, + +	[C(L1I)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, + +	[C(LL)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L2_CACHE_ACCESS, +	[C(LL)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, +	[C(LL)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L2_CACHE_ACCESS, +	[C(LL)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, + +	[C(DTLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, + +	[C(ITLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /*   * Cortex-A12 HW events mapping   */  static const unsigned armv7_a12_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]		= ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]		= ARMV7_PERFCTR_INSTR_EXECUTED,  	[PERF_COUNT_HW_CACHE_REFERENCES]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, @@ -773,138 +393,60 @@ static const unsigned armv7_a12_perf_map[PERF_COUNT_HW_MAX] = {  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS]	= ARMV7_A12_PERFCTR_PC_WRITE_SPEC,  	[PERF_COUNT_HW_BRANCH_MISSES]		= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  	[PERF_COUNT_HW_BUS_CYCLES]		= ARMV7_PERFCTR_BUS_CYCLES, -	[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND]	= HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_STALLED_CYCLES_BACKEND]	= HW_OP_UNSUPPORTED,  };  static const unsigned armv7_a12_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					[PERF_COUNT_HW_CACHE_OP_MAX]  					[PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L1_DCACHE_ACCESS_READ, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L1_DCACHE_ACCESS_WRITE, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(L1I)] = { -		/* -		 * Not all performance counters differentiate between read -		 * and write accesses/misses so we're not always strictly -		 * correct, but it's the best we can do. Writes and reads get -		 * combined in these cases. -		 */ -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L2_CACHE_ACCESS_READ, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L2_CACHE_ACCESS_WRITE, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_A12_PERFCTR_PF_TLB_REFILL, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L1_DCACHE_ACCESS_READ, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L1_DCACHE_ACCESS_WRITE, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, + +	/* +	 * Not all performance counters differentiate between read and write +	 * accesses/misses so we're not always strictly correct, but it's the +	 * best we can do. Writes and reads get combined in these cases. +	 */ +	[C(L1I)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_ICACHE_ACCESS, +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_ICACHE_REFILL, + +	[C(LL)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L2_CACHE_ACCESS_READ, +	[C(LL)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, +	[C(LL)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_A12_PERFCTR_L2_CACHE_ACCESS_WRITE, +	[C(LL)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L2_CACHE_REFILL, + +	[C(DTLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_DTLB_REFILL, +	[C(DTLB)][C(OP_PREFETCH)][C(RESULT_MISS)]	= ARMV7_A12_PERFCTR_PF_TLB_REFILL, + +	[C(ITLB)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_ITLB_REFILL, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /*   * Krait HW events mapping   */  static const unsigned krait_perf_map[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]	    = ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]	    = ARMV7_PERFCTR_INSTR_EXECUTED, -	[PERF_COUNT_HW_CACHE_REFERENCES]    = HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_CACHE_MISSES]	    = HW_OP_UNSUPPORTED,  	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = ARMV7_PERFCTR_PC_WRITE,  	[PERF_COUNT_HW_BRANCH_MISSES]	    = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  	[PERF_COUNT_HW_BUS_CYCLES]	    = ARMV7_PERFCTR_CLOCK_CYCLES,  };  static const unsigned krait_perf_map_no_branch[PERF_COUNT_HW_MAX] = { +	PERF_MAP_ALL_UNSUPPORTED,  	[PERF_COUNT_HW_CPU_CYCLES]	    = ARMV7_PERFCTR_CPU_CYCLES,  	[PERF_COUNT_HW_INSTRUCTIONS]	    = ARMV7_PERFCTR_INSTR_EXECUTED, -	[PERF_COUNT_HW_CACHE_REFERENCES]    = HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_CACHE_MISSES]	    = HW_OP_UNSUPPORTED, -	[PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = HW_OP_UNSUPPORTED,  	[PERF_COUNT_HW_BRANCH_MISSES]	    = ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  	[PERF_COUNT_HW_BUS_CYCLES]	    = ARMV7_PERFCTR_CLOCK_CYCLES,  }; @@ -912,110 +454,31 @@ static const unsigned krait_perf_map_no_branch[PERF_COUNT_HW_MAX] = {  static const unsigned krait_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]  					  [PERF_COUNT_HW_CACHE_OP_MAX]  					  [PERF_COUNT_HW_CACHE_RESULT_MAX] = { -	[C(L1D)] = { -		/* -		 * The performance counters don't differentiate between read -		 * and write accesses/misses so this isn't strictly correct, -		 * but it's the best we can do. Writes and reads get -		 * combined. -		 */ -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(L1I)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_ICACHE_ACCESS, -			[C(RESULT_MISS)]	= KRAIT_PERFCTR_L1_ICACHE_MISS, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(LL)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(DTLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_DTLB_ACCESS, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_DTLB_ACCESS, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(ITLB)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_ITLB_ACCESS, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_ITLB_ACCESS, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(BPU)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, -			[C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, -	[C(NODE)] = { -		[C(OP_READ)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_WRITE)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -		[C(OP_PREFETCH)] = { -			[C(RESULT_ACCESS)]	= CACHE_OP_UNSUPPORTED, -			[C(RESULT_MISS)]	= CACHE_OP_UNSUPPORTED, -		}, -	}, +	PERF_CACHE_MAP_ALL_UNSUPPORTED, + +	/* +	 * The performance counters don't differentiate between read and write +	 * accesses/misses so this isn't strictly correct, but it's the best we +	 * can do. Writes and reads get combined. +	 */ +	[C(L1D)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, +	[C(L1D)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_L1_DCACHE_ACCESS, +	[C(L1D)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_L1_DCACHE_REFILL, + +	[C(L1I)][C(OP_READ)][C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_ICACHE_ACCESS, +	[C(L1I)][C(OP_READ)][C(RESULT_MISS)]	= KRAIT_PERFCTR_L1_ICACHE_MISS, + +	[C(DTLB)][C(OP_READ)][C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_DTLB_ACCESS, +	[C(DTLB)][C(OP_WRITE)][C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_DTLB_ACCESS, + +	[C(ITLB)][C(OP_READ)][C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_ITLB_ACCESS, +	[C(ITLB)][C(OP_WRITE)][C(RESULT_ACCESS)]	= KRAIT_PERFCTR_L1_ITLB_ACCESS, + +	[C(BPU)][C(OP_READ)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_READ)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_ACCESS)]	= ARMV7_PERFCTR_PC_BRANCH_PRED, +	[C(BPU)][C(OP_WRITE)][C(RESULT_MISS)]	= ARMV7_PERFCTR_PC_BRANCH_MIS_PRED,  };  /* @@ -1545,7 +1008,7 @@ static u32 armv7_read_num_pmnc_events(void)  static int armv7_a8_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Cortex-A8"; +	cpu_pmu->name		= "armv7_cortex_a8";  	cpu_pmu->map_event	= armv7_a8_map_event;  	cpu_pmu->num_events	= armv7_read_num_pmnc_events();  	return 0; @@ -1554,7 +1017,7 @@ static int armv7_a8_pmu_init(struct arm_pmu *cpu_pmu)  static int armv7_a9_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Cortex-A9"; +	cpu_pmu->name		= "armv7_cortex_a9";  	cpu_pmu->map_event	= armv7_a9_map_event;  	cpu_pmu->num_events	= armv7_read_num_pmnc_events();  	return 0; @@ -1563,7 +1026,7 @@ static int armv7_a9_pmu_init(struct arm_pmu *cpu_pmu)  static int armv7_a5_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Cortex-A5"; +	cpu_pmu->name		= "armv7_cortex_a5";  	cpu_pmu->map_event	= armv7_a5_map_event;  	cpu_pmu->num_events	= armv7_read_num_pmnc_events();  	return 0; @@ -1572,7 +1035,7 @@ static int armv7_a5_pmu_init(struct arm_pmu *cpu_pmu)  static int armv7_a15_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Cortex-A15"; +	cpu_pmu->name		= "armv7_cortex_a15";  	cpu_pmu->map_event	= armv7_a15_map_event;  	cpu_pmu->num_events	= armv7_read_num_pmnc_events();  	cpu_pmu->set_event_filter = armv7pmu_set_event_filter; @@ -1582,7 +1045,7 @@ static int armv7_a15_pmu_init(struct arm_pmu *cpu_pmu)  static int armv7_a7_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Cortex-A7"; +	cpu_pmu->name		= "armv7_cortex_a7";  	cpu_pmu->map_event	= armv7_a7_map_event;  	cpu_pmu->num_events	= armv7_read_num_pmnc_events();  	cpu_pmu->set_event_filter = armv7pmu_set_event_filter; @@ -1592,7 +1055,7 @@ static int armv7_a7_pmu_init(struct arm_pmu *cpu_pmu)  static int armv7_a12_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Cortex-A12"; +	cpu_pmu->name		= "armv7_cortex_a12";  	cpu_pmu->map_event	= armv7_a12_map_event;  	cpu_pmu->num_events	= armv7_read_num_pmnc_events();  	cpu_pmu->set_event_filter = armv7pmu_set_event_filter; @@ -1602,7 +1065,7 @@ static int armv7_a12_pmu_init(struct arm_pmu *cpu_pmu)  static int armv7_a17_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7_a12_pmu_init(cpu_pmu); -	cpu_pmu->name = "ARMv7 Cortex-A17"; +	cpu_pmu->name = "armv7_cortex_a17";  	return 0;  } @@ -1823,6 +1286,7 @@ static void krait_pmu_disable_event(struct perf_event *event)  	unsigned long flags;  	struct hw_perf_event *hwc = &event->hw;  	int idx = hwc->idx; +	struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);  	struct pmu_hw_events *events = cpu_pmu->get_hw_events();  	/* Disable counter and interrupt */ @@ -1848,6 +1312,7 @@ static void krait_pmu_enable_event(struct perf_event *event)  	unsigned long flags;  	struct hw_perf_event *hwc = &event->hw;  	int idx = hwc->idx; +	struct arm_pmu *cpu_pmu = to_arm_pmu(event->pmu);  	struct pmu_hw_events *events = cpu_pmu->get_hw_events();  	/* @@ -1981,7 +1446,7 @@ static void krait_pmu_clear_event_idx(struct pmu_hw_events *cpuc,  static int krait_pmu_init(struct arm_pmu *cpu_pmu)  {  	armv7pmu_init(cpu_pmu); -	cpu_pmu->name		= "ARMv7 Krait"; +	cpu_pmu->name		= "armv7_krait";  	/* Some early versions of Krait don't support PC write events */  	if (of_property_read_bool(cpu_pmu->plat_device->dev.of_node,  				  "qcom,no-pc-write"))  |