summaryrefslogtreecommitdiffstats
path: root/sys/dev/hwpmc/pmc_events.h
diff options
context:
space:
mode:
authorjhibbits <jhibbits@FreeBSD.org>2015-04-18 21:39:17 +0000
committerjhibbits <jhibbits@FreeBSD.org>2015-04-18 21:39:17 +0000
commit2b1ec4f62f3bd13a47fea3a9c366c9a7a0ac35e0 (patch)
tree0aed71c597d2cf9b3f0db9e6f5404c8b7f752e9c /sys/dev/hwpmc/pmc_events.h
parent9a774084c8016c1402b8f1cb8ea26fbaea9b949f (diff)
downloadFreeBSD-src-2b1ec4f62f3bd13a47fea3a9c366c9a7a0ac35e0.zip
FreeBSD-src-2b1ec4f62f3bd13a47fea3a9c366c9a7a0ac35e0.tar.gz
Implement hwpmc(4) for Freescale e500 core.
This supports e500v1, e500v2, and e500mc. Tested only on e500v2, but the performance counters are identical across all, with e500mc having some additional events. Relnotes: Yes
Diffstat (limited to 'sys/dev/hwpmc/pmc_events.h')
-rw-r--r--sys/dev/hwpmc/pmc_events.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/sys/dev/hwpmc/pmc_events.h b/sys/dev/hwpmc/pmc_events.h
index 83182bf..7f878cb 100644
--- a/sys/dev/hwpmc/pmc_events.h
+++ b/sys/dev/hwpmc/pmc_events.h
@@ -5379,6 +5379,168 @@ __PMC_EV_ALIAS("IMPC_C0H_TRK_REQUEST.ALL", UCP_EVENT_84H_01H)
#define PMC_EV_PPC970_FIRST PMC_EV_PPC970_INSTR_COMPLETED
#define PMC_EV_PPC970_LAST PMC_EV_PPC970_ADDER
+
+#define __PMC_EV_E500() \
+ __PMC_EV(E500, CYCLES) \
+ __PMC_EV(E500, INSTR_COMPLETED) \
+ __PMC_EV(E500, UOPS_COMPLETED) \
+ __PMC_EV(E500, INSTR_FETCHED) \
+ __PMC_EV(E500, UOPS_DECODED) \
+ __PMC_EV(E500, PM_EVENT_TRANSITIONS) \
+ __PMC_EV(E500, PM_EVENT_CYCLES) \
+ __PMC_EV(E500, BRANCH_INSTRS_COMPLETED) \
+ __PMC_EV(E500, LOAD_UOPS_COMPLETED) \
+ __PMC_EV(E500, STORE_UOPS_COMPLETED) \
+ __PMC_EV(E500, CQ_REDIRECTS) \
+ __PMC_EV(E500, BRANCHES_FINISHED) \
+ __PMC_EV(E500, TAKEN_BRANCHES_FINISHED) \
+ __PMC_EV(E500, FINISHED_UNCOND_BRANCHES_MISS_BTB) \
+ __PMC_EV(E500, BRANCH_MISPRED) \
+ __PMC_EV(E500, BTB_BRANCH_MISPRED_FROM_DIRECTION) \
+ __PMC_EV(E500, BTB_HITS_PSEUDO_HITS) \
+ __PMC_EV(E500, CYCLES_DECODE_STALLED) \
+ __PMC_EV(E500, CYCLES_ISSUE_STALLED) \
+ __PMC_EV(E500, CYCLES_BRANCH_ISSUE_STALLED) \
+ __PMC_EV(E500, CYCLES_SU1_SCHED_STALLED) \
+ __PMC_EV(E500, CYCLES_SU2_SCHED_STALLED) \
+ __PMC_EV(E500, CYCLES_MU_SCHED_STALLED) \
+ __PMC_EV(E500, CYCLES_LRU_SCHED_STALLED) \
+ __PMC_EV(E500, CYCLES_BU_SCHED_STALLED) \
+ __PMC_EV(E500, TOTAL_TRANSLATED) \
+ __PMC_EV(E500, LOADS_TRANSLATED) \
+ __PMC_EV(E500, STORES_TRANSLATED) \
+ __PMC_EV(E500, TOUCHES_TRANSLATED) \
+ __PMC_EV(E500, CACHEOPS_TRANSLATED) \
+ __PMC_EV(E500, CACHE_INHIBITED_ACCESS_TRANSLATED) \
+ __PMC_EV(E500, GUARDED_LOADS_TRANSLATED) \
+ __PMC_EV(E500, WRITE_THROUGH_STORES_TRANSLATED) \
+ __PMC_EV(E500, MISALIGNED_LOAD_STORE_ACCESS_TRANSLATED) \
+ __PMC_EV(E500, TOTAL_ALLOCATED_TO_DLFB) \
+ __PMC_EV(E500, LOADS_TRANSLATED_ALLOCATED_TO_DLFB) \
+ __PMC_EV(E500, STORES_COMPLETED_ALLOCATED_TO_DLFB) \
+ __PMC_EV(E500, TOUCHES_TRANSLATED_ALLOCATED_TO_DLFB) \
+ __PMC_EV(E500, STORES_COMPLETED) \
+ __PMC_EV(E500, DATA_L1_CACHE_LOCKS) \
+ __PMC_EV(E500, DATA_L1_CACHE_RELOADS) \
+ __PMC_EV(E500, DATA_L1_CACHE_CASTOUTS) \
+ __PMC_EV(E500, LOAD_MISS_DLFB_FULL) \
+ __PMC_EV(E500, LOAD_MISS_LDQ_FULL) \
+ __PMC_EV(E500, LOAD_GUARDED_MISS) \
+ __PMC_EV(E500, STORE_TRANSLATE_WHEN_QUEUE_FULL) \
+ __PMC_EV(E500, ADDRESS_COLLISION) \
+ __PMC_EV(E500, DATA_MMU_MISS) \
+ __PMC_EV(E500, DATA_MMU_BUSY) \
+ __PMC_EV(E500, PART2_MISALIGNED_CACHE_ACCESS) \
+ __PMC_EV(E500, LOAD_MISS_DLFB_FULL_CYCLES) \
+ __PMC_EV(E500, LOAD_MISS_LDQ_FULL_CYCLES) \
+ __PMC_EV(E500, LOAD_GUARDED_MISS_CYCLES) \
+ __PMC_EV(E500, STORE_TRANSLATE_WHEN_QUEUE_FULL_CYCLES) \
+ __PMC_EV(E500, ADDRESS_COLLISION_CYCLES) \
+ __PMC_EV(E500, DATA_MMU_MISS_CYCLES) \
+ __PMC_EV(E500, DATA_MMU_BUSY_CYCLES) \
+ __PMC_EV(E500, PART2_MISALIGNED_CACHE_ACCESS_CYCLES) \
+ __PMC_EV(E500, INSTR_L1_CACHE_LOCKS) \
+ __PMC_EV(E500, INSTR_L1_CACHE_RELOADS) \
+ __PMC_EV(E500, INSTR_L1_CACHE_FETCHES) \
+ __PMC_EV(E500, INSTR_MMU_TLB4K_RELOADS) \
+ __PMC_EV(E500, INSTR_MMU_VSP_RELOADS) \
+ __PMC_EV(E500, DATA_MMU_TLB4K_RELOADS) \
+ __PMC_EV(E500, DATA_MMU_VSP_RELOADS) \
+ __PMC_EV(E500, L2MMU_MISSES) \
+ __PMC_EV(E500, BIU_MASTER_REQUESTS) \
+ __PMC_EV(E500, BIU_MASTER_INSTR_SIDE_REQUESTS) \
+ __PMC_EV(E500, BIU_MASTER_DATA_SIDE_REQUESTS) \
+ __PMC_EV(E500, BIU_MASTER_DATA_SIDE_CASTOUT_REQUESTS) \
+ __PMC_EV(E500, BIU_MASTER_RETRIES) \
+ __PMC_EV(E500, SNOOP_REQUESTS) \
+ __PMC_EV(E500, SNOOP_HITS) \
+ __PMC_EV(E500, SNOOP_PUSHES) \
+ __PMC_EV(E500, SNOOP_RETRIES) \
+ __PMC_EV(E500, DLFB_LOAD_MISS_CYCLES) \
+ __PMC_EV(E500, ILFB_FETCH_MISS_CYCLES) \
+ __PMC_EV(E500, EXT_INPU_INTR_LATENCY_CYCLES) \
+ __PMC_EV(E500, CRIT_INPUT_INTR_LATENCY_CYCLES) \
+ __PMC_EV(E500, EXT_INPUT_INTR_PENDING_LATENCY_CYCLES) \
+ __PMC_EV(E500, CRIT_INPUT_INTR_PENDING_LATENCY_CYCLES) \
+ __PMC_EV(E500, PMC0_OVERFLOW) \
+ __PMC_EV(E500, PMC1_OVERFLOW) \
+ __PMC_EV(E500, PMC2_OVERFLOW) \
+ __PMC_EV(E500, PMC3_OVERFLOW) \
+ __PMC_EV(E500, INTERRUPTS_TAKEN) \
+ __PMC_EV(E500, EXT_INPUT_INTR_TAKEN) \
+ __PMC_EV(E500, CRIT_INPUT_INTR_TAKEN) \
+ __PMC_EV(E500, SYSCALL_TRAP_INTR) \
+ __PMC_EV(E500, TLB_BIT_TRANSITIONS) \
+ __PMC_EV(E500, L2_LINEFILL_BUFFER) \
+ __PMC_EV(E500, LV2_VS) \
+ __PMC_EV(E500, CASTOUTS_RELEASED) \
+ __PMC_EV(E500, INTV_ALLOCATIONS) \
+ __PMC_EV(E500, DLFB_RETRIES_TO_MBAR) \
+ __PMC_EV(E500, STORE_RETRIES) \
+ __PMC_EV(E500, STASH_L1_HITS) \
+ __PMC_EV(E500, STASH_L2_HITS) \
+ __PMC_EV(E500, STASH_BUSY_1) \
+ __PMC_EV(E500, STASH_BUSY_2) \
+ __PMC_EV(E500, STASH_BUSY_3) \
+ __PMC_EV(E500, STASH_HITS) \
+ __PMC_EV(E500, STASH_HIT_DLFB) \
+ __PMC_EV(E500, STASH_REQUESTS) \
+ __PMC_EV(E500, STASH_REQUESTS_L1) \
+ __PMC_EV(E500, STASH_REQUESTS_L2) \
+ __PMC_EV(E500, STALLS_NO_CAQ_OR_COB) \
+ __PMC_EV(E500, L2_CACHE_ACCESSES) \
+ __PMC_EV(E500, L2_HIT_CACHE_ACCESSES) \
+ __PMC_EV(E500, L2_CACHE_DATA_ACCESSES) \
+ __PMC_EV(E500, L2_CACHE_DATA_HITS) \
+ __PMC_EV(E500, L2_CACHE_INSTR_ACCESSES) \
+ __PMC_EV(E500, L2_CACHE_INSTR_HITS) \
+ __PMC_EV(E500, L2_CACHE_ALLOCATIONS) \
+ __PMC_EV(E500, L2_CACHE_DATA_ALLOCATIONS) \
+ __PMC_EV(E500, L2_CACHE_DIRTY_DATA_ALLOCATIONS) \
+ __PMC_EV(E500, L2_CACHE_INSTR_ALLOCATIONS) \
+ __PMC_EV(E500, L2_CACHE_UPDATES) \
+ __PMC_EV(E500, L2_CACHE_CLEAN_UPDATES) \
+ __PMC_EV(E500, L2_CACHE_DIRTY_UPDATES) \
+ __PMC_EV(E500, L2_CACHE_CLEAN_REDUNDANT_UPDATES) \
+ __PMC_EV(E500, L2_CACHE_DIRTY_REDUNDANT_UPDATES) \
+ __PMC_EV(E500, L2_CACHE_LOCKS) \
+ __PMC_EV(E500, L2_CACHE_CASTOUTS) \
+ __PMC_EV(E500, L2_CACHE_DATA_DIRTY_HITS) \
+ __PMC_EV(E500, INSTR_LFB_WENT_HIGH_PRIORITY) \
+ __PMC_EV(E500, SNOOP_THROTTLING_TURNED_ON) \
+ __PMC_EV(E500, L2_CLEAN_LINE_INVALIDATIONS) \
+ __PMC_EV(E500, L2_INCOHERENT_LINE_INVALIDATIONS) \
+ __PMC_EV(E500, L2_COHERENT_LINE_INVALIDATIONS) \
+ __PMC_EV(E500, COHERENT_LOOKUP_MISS_DUE_TO_VALID_BUT_INCOHERENT_MATCHES) \
+ __PMC_EV(E500, IAC1S_DETECTED) \
+ __PMC_EV(E500, IAC2S_DETECTED) \
+ __PMC_EV(E500, DAC1S_DTECTED) \
+ __PMC_EV(E500, DAC2S_DTECTED) \
+ __PMC_EV(E500, DVT0_DETECTED) \
+ __PMC_EV(E500, DVT1_DETECTED) \
+ __PMC_EV(E500, DVT2_DETECTED) \
+ __PMC_EV(E500, DVT3_DETECTED) \
+ __PMC_EV(E500, DVT4_DETECTED) \
+ __PMC_EV(E500, DVT5_DETECTED) \
+ __PMC_EV(E500, DVT6_DETECTED) \
+ __PMC_EV(E500, DVT7_DETECTED) \
+ __PMC_EV(E500, CYCLES_COMPLETION_STALLED_NEXUS_FIFO_FULL) \
+ __PMC_EV(E500, FPU_DOUBLE_PUMP) \
+ __PMC_EV(E500, FPU_FINISH) \
+ __PMC_EV(E500, FPU_DIVIDE_CYCLES) \
+ __PMC_EV(E500, FPU_DENORM_INPUT_CYCLES) \
+ __PMC_EV(E500, FPU_RESULT_STALL_CYCLES) \
+ __PMC_EV(E500, FPU_FPSCR_FULL_STALL) \
+ __PMC_EV(E500, FPU_PIPE_SYNC_STALLS) \
+ __PMC_EV(E500, FPU_INPUT_DATA_STALLS) \
+ __PMC_EV(E500, DECORATED_LOADS) \
+ __PMC_EV(E500, DECORATED_STORES) \
+ __PMC_EV(E500, LOAD_RETRIES) \
+ __PMC_EV(E500, STWCX_SUCCESSES) \
+ __PMC_EV(E500, STWCX_FAILURES) \
+
+#define PMC_EV_E500_FIRST PMC_EV_E500_CYCLES
+#define PMC_EV_E500_LAST PMC_EV_E500_STWCX_FAILURES
/*
* All known PMC events.
*
@@ -5400,6 +5562,9 @@ __PMC_EV_ALIAS("IMPC_C0H_TRK_REQUEST.ALL", UCP_EVENT_84H_01H)
* 0x11300 0x00FF MIPS 24K events
* 0x11400 0x00FF Octeon events
* 0x11500 0x00FF MIPS 74K events
+ * 0x13000 0x00FF MPC7450 events
+ * 0x13100 0x00FF IBM PPC970 events
+ * 0x13300 0x00FF Freescale e500 events
* 0x14000 0x0100 ARMv7 events
* 0x20000 0x1000 Software events
*/
@@ -5436,6 +5601,8 @@ __PMC_EV_ALIAS("IMPC_C0H_TRK_REQUEST.ALL", UCP_EVENT_84H_01H)
__PMC_EV_PPC7450() \
__PMC_EV_BLOCK(PPC970, 0x13100) \
__PMC_EV_PPC970() \
+ __PMC_EV_BLOCK(E500, 0x13300) \
+ __PMC_EV_E500() \
__PMC_EV_BLOCK(ARMV7, 0x14000) \
__PMC_EV_ARMV7() \
OpenPOWER on IntegriCloud