Re: [PATCH] Update Alpha EV67 CPU support and remove all other Alpha CPU support

Maynard Johnson <[email protected]>
Newsgroups gmane.linux.oprofile
Message-ID <[email protected]>
On 08/15/2014 05:39 AM, Michael Cree wrote:
> 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.
> 
Michael,
As you mentioned in your other posting (preceding this patch posting), testing this
patch with operf fails with "perf_event_open failed with Operation not permitted".
Looking through kernel code in arch/alpha/kernel/perf_events.c, the only EPERM I 
see is where it checks if any mode exclusion is done.  And in fact, we do automatically
exclude hypervisor because oprofile post-processing tools and ocount have no support
for showing/not showing hypervisor counts.  So I think it's a good bet that this is
what's causing your failure.  Normally, I would want to ensure a patch actually *works*
before committing it, but I really want to get the 1.0 release candidate out today,
so I'll take a chance.  If you still have problems, we'll fix them post-RC1, and I'll
have to do an RC2.  Not a big deal.

So, the upshot is I committed this patch upstream.  Thanks much for your efforts!

-Maynard
> Signed-off-by: Michael Cree <[email protected]>
> ---
>  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"
> 


------------------------------------------------------------------------------
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.