From: Michael C. <mc...@or...> - 2014-08-15 10:42:16
|
Only the EV67 and later CPUs are supported by the kernel performance events. Remove all older Alpha CPU support and update EV67 support to match the kernel implementation. Signed-off-by: Michael Cree <mc...@or...> --- events/Makefile.am | 4 ---- events/alpha/ev4/events | 18 -------------- events/alpha/ev4/unit_masks | 4 ---- events/alpha/ev5/events | 49 --------------------------------------- events/alpha/ev5/unit_masks | 4 ---- events/alpha/ev6/events | 11 --------- events/alpha/ev6/unit_masks | 4 ---- events/alpha/ev67/events | 29 ++++------------------- events/alpha/pca56/events | 2 -- events/alpha/pca56/unit_masks | 3 --- libop/op_cpu_type.c | 31 +++++++++++++++++++++---- libop/op_cpu_type.h | 4 ---- libop/op_events.c | 5 +--- libop/op_hw_config.h | 4 ---- libop/tests/alloc_counter_tests.c | 15 ------------ libop/tests/cpu_type_tests.c | 4 ---- utils/ophelp.c | 4 ---- 17 files changed, 32 insertions(+), 163 deletions(-) delete mode 100644 events/alpha/ev4/events delete mode 100644 events/alpha/ev4/unit_masks delete mode 100644 events/alpha/ev5/events delete mode 100644 events/alpha/ev5/unit_masks delete mode 100644 events/alpha/ev6/events delete mode 100644 events/alpha/ev6/unit_masks delete mode 100644 events/alpha/pca56/events delete mode 100644 events/alpha/pca56/unit_masks diff --git a/events/Makefile.am b/events/Makefile.am index 14531cd..d68f0e8 100644 --- a/events/Makefile.am +++ b/events/Makefile.am @@ -1,9 +1,5 @@ event_files = \ - alpha/ev4/events alpha/ev4/unit_masks \ - alpha/ev5/events alpha/ev5/unit_masks \ alpha/ev67/events alpha/ev67/unit_masks \ - alpha/ev6/events alpha/ev6/unit_masks \ - alpha/pca56/events alpha/pca56/unit_masks \ i386/athlon/events i386/athlon/unit_masks \ i386/core_2/events i386/core_2/unit_masks \ i386/p4/events i386/p4-ht/events \ diff --git a/events/alpha/ev4/events b/events/alpha/ev4/events deleted file mode 100644 index 8b193d1..0000000 --- a/events/alpha/ev4/events +++ /dev/null @@ -1,18 +0,0 @@ -# Alpha EV4 events. -# -event:0x00 counters:0 um:zero minimum:4096 name:ISSUES : Total issues divided by 2 -event:0x02 counters:0 um:zero minimum:4096 name:PIPELINE_DRY : Nothing issued, no valid I-stream data -event:0x04 counters:0 um:zero minimum:4096 name:LOAD_INSNS : All load instructions -event:0x06 counters:0 um:zero minimum:4096 name:PIPELINE_FROZEN : Nothing issued, resource conflict -event:0x08 counters:0 um:zero minimum:4096 name:BRANCH_INSNS : All branches (conditional, unconditional, jsr, hw_rei) -event:0x0a counters:0 um:zero minimum:4096 name:CYCLES : Total cycles -event:0x0b counters:0 um:zero minimum:4096 name:PAL_MODE : Cycles while in PALcode environment -event:0x0c counters:0 um:zero minimum:4096 name:NON_ISSUES : Total nonissues divided by 2 -event:0x10 counters:0 um:zero minimum:256 name:DCACHE_MISSES : Total D-cache misses -event:0x11 counters:0 um:zero minimum:256 name:ICACHE_MISSES : Total I-cache misses -event:0x12 counters:0 um:zero minimum:256 name:DUAL_ISSUE_CYCLES : Cycles of dual issue -event:0x13 counters:0 um:zero minimum:256 name:BRANCH_MISPREDICTS : Branch mispredicts (conditional, jsr, hw_rei) -event:0x14 counters:0 um:zero minimum:256 name:FP_INSNS : FP operate instructions (not br, load, store) -event:0x15 counters:0 um:zero minimum:256 name:INTEGER_OPERATE : Integer operate instructions -event:0x16 counters:0 um:zero minimum:256 name:STORE_INSNS : Store instructions -# There's also EXTERNAL, by which we could monitor the 21066/21068 bus controller. diff --git a/events/alpha/ev4/unit_masks b/events/alpha/ev4/unit_masks deleted file mode 100644 index bc77cc8..0000000 --- a/events/alpha/ev4/unit_masks +++ /dev/null @@ -1,4 +0,0 @@ -# Alpha EV4 possible unit masks -# -name:zero type:mandatory default:0x0 - 0x0 No unit mask diff --git a/events/alpha/ev5/events b/events/alpha/ev5/events deleted file mode 100644 index 709e06a..0000000 --- a/events/alpha/ev5/events +++ /dev/null @@ -1,49 +0,0 @@ -# Alpha EV5 events -# -event:0x00 counters:0,2 um:zero minimum:256 name:CYCLES : Total cycles -event:0x01 counters:0 um:zero minimum:256 name:ISSUES : Total issues -event:0x02 counters:1 um:zero minimum:256 name:NON_ISSUE_CYCLES : Nothing issued, pipeline frozen -event:0x03 counters:1 um:zero minimum:256 name:SPLIT_ISSUE_CYCLES : Some but not all issuable instructions issued -event:0x04 counters:1 um:zero minimum:256 name:PIPELINE_DRY : Nothing issued, pipeline dry -event:0x05 counters:1 um:zero minimum:256 name:REPLAY_TRAP : Replay traps (ldu, wb/maf, litmus test) -event:0x06 counters:1 um:zero minimum:256 name:SINGLE_ISSUE_CYCLES : Single issue cycles -event:0x07 counters:1 um:zero minimum:256 name:DUAL_ISSUE_CYCLES : Dual issue cycles -event:0x08 counters:1 um:zero minimum:256 name:TRIPLE_ISSUE_CYCLES : Triple issue cycles -event:0x09 counters:1 um:zero minimum:256 name:QUAD_ISSUE_CYCLES : Quad issue cycles -event:0x0a counters:1 um:zero minimum:256 name:FLOW_CHANGE : Flow change (meaning depends on counter 2) -# ??? This one's dependent on the value in PCSEL2: If measuring PC_MISPR, -# this is jsr-ret instructions, if measuring BRANCH_MISPREDICTS, this is -# conditional branches, otherwise this is all branch insns, including hw_rei. -event:0x0b counters:1 um:zero minimum:256 name:INTEGER_OPERATE : Integer operate instructions -event:0x0c counters:1 um:zero minimum:256 name:FP_INSNS : FP operate instructions (not br, load, store) -# FIXME: Bug carried over -event:0x0c counters:1 um:zero minimum:256 name:LOAD_INSNS : Load instructions -event:0x0d counters:1 um:zero minimum:256 name:STORE_INSNS : Store instructions -event:0x0e counters:1 um:zero minimum:256 name:ICACHE_ACCESS : Instruction cache access -event:0x0f um:zero minimum:256 name:DCACHE_ACCESS : Data cache access -event:0x10 counters:2 um:zero minimum:256 name:LONG_STALLS : Stalls longer than 15 cycles -event:0x11 counters:2 um:zero minimum:256 name:PC_MISPR : PC mispredicts -event:0x12 counters:2 um:zero minimum:256 name:BRANCH_MISPREDICTS : Branch mispredicts -event:0x13 counters:2 um:zero minimum:256 name:ICACHE_MISSES : Instruction cache misses -event:0x14 counters:2 um:zero minimum:256 name:ITB_MISS : Instruction TLB miss -event:0x15 counters:2 um:zero minimum:256 name:DCACHE_MISSES : Data cache misses -event:0x16 counters:2 um:zero minimum:256 name:DTB_MISS : Data TLB miss -event:0x17 counters:2 um:zero minimum:256 name:LOADS_MERGED : Loads merged in MAF -event:0x18 counters:2 um:zero minimum:256 name:LDU_REPLAYS : LDU replay traps -event:0x19 counters:2 um:zero minimum:256 name:WB_MAF_FULL_REPLAYS : WB/MAF full replay traps -event:0x1a counters:2 um:zero minimum:256 name:MEM_BARRIER : Memory barrier instructions -event:0x1b counters:2 um:zero minimum:256 name:LOAD_LOCKED : LDx/L instructions -event:0x1c counters:1 um:zero minimum:256 name:SCACHE_ACCESS : S-cache access -event:0x1d counters:1 um:zero minimum:256 name:SCACHE_READ : S-cache read -event:0x1e counters:1,2 um:zero minimum:256 name:SCACHE_WRITE : S-cache write -event:0x1f counters:1 um:zero minimum:256 name:SCACHE_VICTIM : S-cache victim -event:0x20 counters:2 um:zero minimum:256 name:SCACHE_MISS : S-cache miss -event:0x21 counters:2 um:zero minimum:256 name:SCACHE_READ_MISS : S-cache read miss -event:0x22 counters:2 um:zero minimum:256 name:SCACHE_WRITE_MISS : S-cache write miss -event:0x23 counters:2 um:zero minimum:256 name:SCACHE_SH_WRITE : S-cache shared writes -event:0x24 counters:1 um:zero minimum:256 name:BCACHE_HIT : B-cache hit -event:0x25 counters:1 um:zero minimum:256 name:BCACHE_VICTIM : B-cache victim -event:0x26 counters:2 um:zero minimum:256 name:BCACHE_MISS : B-cache miss -event:0x27 counters:1 um:zero minimum:256 name:SYS_REQ : System requests -event:0x28 counters:2 um:zero minimum:256 name:SYS_INV : System invalidates -event:0x29 counters:2 um:zero minimum:256 name:SYS_READ_REQ : System read requests diff --git a/events/alpha/ev5/unit_masks b/events/alpha/ev5/unit_masks deleted file mode 100644 index 4f24fa9..0000000 --- a/events/alpha/ev5/unit_masks +++ /dev/null @@ -1,4 +0,0 @@ -# Alpha EV-5 possible unit masks -# -name:zero type:mandatory default:0x0 - 0x0 No unit mask diff --git a/events/alpha/ev6/events b/events/alpha/ev6/events deleted file mode 100644 index 2039cef..0000000 --- a/events/alpha/ev6/events +++ /dev/null @@ -1,11 +0,0 @@ -# Alpha EV6 events -# -event:0x00 counters:0,1 um:zero minimum:500 name:CYCLES : Total cycles -event:0x01 counters:1 um:zero minimum:500 name:RETIRED : Retired instructions -event:0x02 counters:1 um:zero minimum:500 name:COND_BRANCHES : Retired conditional branches -event:0x03 counters:1 um:zero minimum:500 name:BRANCH_MISPREDICTS : Retired branch mispredicts -event:0x04 counters:1 um:zero minimum:500 name:DTB_MISS : Retired DTB single misses * 2 -event:0x05 counters:1 um:zero minimum:500 name:DTB_DD_MISS : Retired DTB double double misses -event:0x06 counters:1 um:zero minimum:500 name:ITB_MISS : Retired ITB misses -event:0x07 counters:1 um:zero minimum:500 name:UNALIGNED_TRAP : Retired unaligned traps -event:0x08 counters:1 um:zero minimum:500 name:REPLAY_TRAP : Replay traps diff --git a/events/alpha/ev6/unit_masks b/events/alpha/ev6/unit_masks deleted file mode 100644 index bbe38c6..0000000 --- a/events/alpha/ev6/unit_masks +++ /dev/null @@ -1,4 +0,0 @@ -# Alpha EV-6 possible unit masks -# -name:zero type:mandatory default:0x0 - 0x0 No unit mask diff --git a/events/alpha/ev67/events b/events/alpha/ev67/events index b603871..6e62383 100644 --- a/events/alpha/ev67/events +++ b/events/alpha/ev67/events @@ -1,27 +1,6 @@ # Alpha EV-67 Events # -event:0x00 counters:0 um:zero minimum:500 name:CYCLES : Total cycles -event:0x01 counters:1 um:zero minimum:500 name:DELAYED_CYCLES : Cycles of delayed retire pointer advance -# FIXME: bug carried over -event:0x00 counters:0,1 um:zero minimum:500 name:RETIRED : Retired instructions -event:0x02 counters:1 um:zero minimum:500 name:BCACHE_MISS : Bcache misses/long probe latency -event:0x03 counters:1 um:zero minimum:500 name:MBOX_REPLAY : Mbox replay traps -# FIXME: all the below used PM_CTR -event:0x04 counters:0 um:zero minimum:500 name:STALLED_0 : PCTR0 triggered; stalled between fetch and map stages -event:0x05 counters:0 um:zero minimum:500 name:TAKEN_0 : PCTR0 triggered; branch was not mispredicted and taken -event:0x06 counters:0 um:zero minimum:500 name:MISPREDICT_0 : PCTR0 triggered; branch was mispredicted -event:0x07 counters:0 um:zero minimum:500 name:ITB_MISS_0 : PCTR0 triggered; ITB miss -event:0x08 counters:0 um:zero minimum:500 name:DTB_MISS_0 : PCTR0 triggered; DTB miss -event:0x09 counters:0 um:zero minimum:500 name:REPLAY_0 : PCTR0 triggered; replay trap -event:0x0a counters:0 um:zero minimum:500 name:LOAD_STORE_0 : PCTR0 triggered; load-store order replay trap -event:0x0b counters:0 um:zero minimum:500 name:ICACHE_MISS_0 : PCTR0 triggered; Icache miss -event:0x0c counters:0 um:zero minimum:500 name:UNALIGNED_0 : PCTR0 triggered; unaligned load/store trap -event:0x0d counters:0 um:zero minimum:500 name:STALLED_1 : PCTR1 triggered; stalled between fetch and map stages -event:0x0e counters:0 um:zero minimum:500 name:TAKEN_1 : PCTR1 triggered; branch was not mispredicted and taken -event:0x0f counters:0 um:zero minimum:500 name:MISPREDICT_1 : PCTR1 triggered; branch was mispredicted -event:0x10 counters:0 um:zero minimum:500 name:ITB_MISS_1 : PCTR1 triggered; ITB miss -event:0x11 counters:0 um:zero minimum:500 name:DTB_MISS_1 : PCTR1 triggered; DTB miss -event:0x12 counters:0 um:zero minimum:500 name:REPLAY_1 : PCTR1 triggered; replay trap -event:0x13 counters:0 um:zero minimum:500 name:LOAD_STORE_1 : PCTR1 triggered; load-store order replay trap -event:0x14 counters:0 um:zero minimum:500 name:ICACHE_MISS_1 : PCTR1 triggered; Icache miss -event:0x15 counters:0 um:zero minimum:500 name:UNALIGNED_1 : PCTR1 triggered; unaligned load/store trap +event:0x01 counters:0,1 um:zero minimum:500 name:CYCLES : Total cycles +event:0x02 counters:0 um:zero minimum:500 name:INSTRUCTIONS : Retired instructions +event:0x03 counters:1 um:zero minimum:500 name:BCACHE_MISS : Bcache misses/long probe latency +event:0x04 counters:1 um:zero minimum:500 name:MBOX_REPLAY : Mbox replay traps diff --git a/events/alpha/pca56/events b/events/alpha/pca56/events deleted file mode 100644 index 334babe..0000000 --- a/events/alpha/pca56/events +++ /dev/null @@ -1,2 +0,0 @@ -# PCA-56 -# FIXME: no events ? What's going on here Falk ? diff --git a/events/alpha/pca56/unit_masks b/events/alpha/pca56/unit_masks deleted file mode 100644 index 2b807b7..0000000 --- a/events/alpha/pca56/unit_masks +++ /dev/null @@ -1,3 +0,0 @@ -# Alpha PCA-56 possible unit masks -# -# FIXME: any events ...? diff --git a/libop/op_cpu_type.c b/libop/op_cpu_type.c index 90fa861..6ce1f13 100644 --- a/libop/op_cpu_type.c +++ b/libop/op_cpu_type.c @@ -49,10 +49,6 @@ static struct cpu_descr const cpu_descrs[MAX_CPU_TYPE] = { { "P4 / Xeon", "i386/p4", CPU_P4, 8 }, { "AMD64 processors", "x86-64/hammer", CPU_HAMMER, 4 }, { "P4 / Xeon with 2 hyper-threads", "i386/p4-ht", CPU_P4_HT2, 4 }, - { "Alpha EV4", "alpha/ev4", CPU_AXP_EV4, 2 }, - { "Alpha EV5", "alpha/ev5", CPU_AXP_EV5, 3 }, - { "Alpha PCA56", "alpha/pca56", CPU_AXP_PCA56, 3 }, - { "Alpha EV6", "alpha/ev6", CPU_AXP_EV6, 2 }, { "Alpha EV67", "alpha/ev67", CPU_AXP_EV67, 20 }, { "Pentium M (P6 core)", "i386/p6_mobile", CPU_P6_MOBILE, 2 }, { "ARM/XScale PMU1", "arm/xscale1", CPU_ARM_XSCALE1, 3 }, @@ -343,6 +339,30 @@ static op_cpu _get_ppc64_cpu_type(void) #endif +static char *alpha_cpu_models[] = { + "EV67", "EV68CB", "EV68AL", "EV68CX", "EV7", "EV79", "EV69", NULL +}; + + +static op_cpu _get_alpha_cpu_type(void) +{ + char *cpu_model; + char **p; + char line[100]; + + cpu_model = _get_cpuinfo_cpu_type(line, 100, "cpu model"); + if (!cpu_model) + return CPU_NO_GOOD; + + for (p = alpha_cpu_models; *p; p++) { + if (strcmp(cpu_model, *p) == 0) + return CPU_AXP_EV67; + } + + return CPU_NO_GOOD; +} + + static op_cpu _get_arm_cpu_type(void) { unsigned long cpuid, vendorid; @@ -668,6 +688,9 @@ static op_cpu __get_cpu_type(void) (strncmp(uname_info.machine, "ppc64le", 7) == 0)) { return _get_ppc64_cpu_type(); } + if (strncmp(uname_info.machine, "alpha", 5) == 0) { + return _get_alpha_cpu_type(); + } if (strncmp(uname_info.machine, "arm", 3) == 0 || strncmp(uname_info.machine, "aarch64", 7) == 0) { return _get_arm_cpu_type(); diff --git a/libop/op_cpu_type.h b/libop/op_cpu_type.h index a65918a..bd8170a 100644 --- a/libop/op_cpu_type.h +++ b/libop/op_cpu_type.h @@ -29,10 +29,6 @@ typedef enum { CPU_P4, /**< Pentium 4 / Xeon series */ CPU_HAMMER, /**< AMD Hammer family */ CPU_P4_HT2, /**< Pentium 4 / Xeon series with 2 hyper-threads */ - CPU_AXP_EV4, /**< Alpha EV4 family */ - CPU_AXP_EV5, /**< Alpha EV5 family */ - CPU_AXP_PCA56, /**< Alpha PCA56 family */ - CPU_AXP_EV6, /**< Alpha EV6 family */ CPU_AXP_EV67, /**< Alpha EV67 family */ CPU_P6_MOBILE, /**< Pentium M series */ CPU_ARM_XSCALE1, /**< ARM XScale 1 */ diff --git a/libop/op_events.c b/libop/op_events.c index d3eee60..8bfd3d2 100644 --- a/libop/op_events.c +++ b/libop/op_events.c @@ -1165,12 +1165,9 @@ void op_default_event(op_cpu cpu_type, struct op_default_event_descr * descr) descr->um = 0x1; break; - case CPU_AXP_EV4: - case CPU_AXP_EV5: - case CPU_AXP_PCA56: - case CPU_AXP_EV6: case CPU_AXP_EV67: descr->name = "CYCLES"; + descr->um = 0x1; break; // we could possibly use the CCNT diff --git a/libop/op_hw_config.h b/libop/op_hw_config.h index 169b36b..5969f1f 100644 --- a/libop/op_hw_config.h +++ b/libop/op_hw_config.h @@ -16,11 +16,7 @@ * use of this variable is for static/local array dimension. Never use it in * loop or in array index access/index checking unless you know what you * made. */ -#ifdef __alpha__ -#define OP_MAX_COUNTERS 20 -#else #define OP_MAX_COUNTERS 8 -#endif /** maximum number of events between interrupts. Counters are 40 bits, but * for convenience we only use 32 bits. The top bit is used for overflow diff --git a/libop/tests/alloc_counter_tests.c b/libop/tests/alloc_counter_tests.c index f14cc0c..d0da7a7 100644 --- a/libop/tests/alloc_counter_tests.c +++ b/libop/tests/alloc_counter_tests.c @@ -18,8 +18,6 @@ #include "op_cpu_type.h" #include "op_events.h" -/* FIXME: alpha description events need 20 but when running test on x86 - * OP_MAX_COUNTERS is 8, so we can't use it */ #define MAX_EVENTS 20 @@ -39,17 +37,6 @@ struct allocated_counter { }; -/* not more than MAX_EVENTS string for all these arrays */ -static char const * const events_alpha_ev4_1[] = { - "ISSUES:4096:0:1:1", - NULL -}; - -static char const * const events_alpha_ev4_2[] = { - "UNKNOWN_EVENT:4096:0:1:1", - NULL -}; - static char const * const events_ppro_1[] = { "CPU_CLK_UNHALTED:4096:0:1:1", NULL @@ -114,8 +101,6 @@ static char const * const events_mips_34k[] = { }; static struct allocated_counter const tests[] = { - { CPU_AXP_EV4, events_alpha_ev4_1, { 0 }, no_failure }, - { CPU_AXP_EV4, events_alpha_ev4_2, { -1 }, fail_to_find_event }, { CPU_PPRO, events_ppro_1, { 0 }, no_failure }, { CPU_PPRO, events_ppro_2, { 0, 1 }, no_failure }, { CPU_PPRO, events_ppro_3, { -1 }, fail_to_alloc_counter }, diff --git a/libop/tests/cpu_type_tests.c b/libop/tests/cpu_type_tests.c index beb0dee..468d351 100644 --- a/libop/tests/cpu_type_tests.c +++ b/libop/tests/cpu_type_tests.c @@ -27,10 +27,6 @@ static struct cpu_type { { "i386/p4", CPU_P4 }, { "x86-64/hammer", CPU_HAMMER }, { "i386/p4-ht", CPU_P4_HT2 }, - { "alpha/ev4", CPU_AXP_EV4 }, - { "alpha/ev5", CPU_AXP_EV5 }, - { "alpha/pca56", CPU_AXP_PCA56 }, - { "alpha/ev6", CPU_AXP_EV6 }, { "alpha/ev67", CPU_AXP_EV67 }, { "tile/tile64", CPU_TILE_TILE64 }, { "tile/tilepro", CPU_TILE_TILEPRO }, diff --git a/utils/ophelp.c b/utils/ophelp.c index b152db7..e38e417 100644 --- a/utils/ophelp.c +++ b/utils/ophelp.c @@ -559,10 +559,6 @@ int main(int argc, char const * argv[]) "This is a limited set of fallback events because oprofile doesn't know your CPU\n"; break; - case CPU_AXP_EV4: - case CPU_AXP_EV5: - case CPU_AXP_PCA56: - case CPU_AXP_EV6: case CPU_AXP_EV67: event_doc = "See Alpha Architecture Reference Manual\n" -- 2.1.0.rc1 |