CPUMF_EVENT_ATTR(cf_fvn3, PROBLEM_STATE_INSTRUCTIONS, 0x0021);
 CPUMF_EVENT_ATTR(cf_fvn3, L1D_DIR_WRITES, 0x0004);
 CPUMF_EVENT_ATTR(cf_fvn3, L1D_PENALTY_CYCLES, 0x0005);
-CPUMF_EVENT_ATTR(cf_svn_generic, PRNG_FUNCTIONS, 0x0040);
-CPUMF_EVENT_ATTR(cf_svn_generic, PRNG_CYCLES, 0x0041);
-CPUMF_EVENT_ATTR(cf_svn_generic, PRNG_BLOCKED_FUNCTIONS, 0x0042);
-CPUMF_EVENT_ATTR(cf_svn_generic, PRNG_BLOCKED_CYCLES, 0x0043);
-CPUMF_EVENT_ATTR(cf_svn_generic, SHA_FUNCTIONS, 0x0044);
-CPUMF_EVENT_ATTR(cf_svn_generic, SHA_CYCLES, 0x0045);
-CPUMF_EVENT_ATTR(cf_svn_generic, SHA_BLOCKED_FUNCTIONS, 0x0046);
-CPUMF_EVENT_ATTR(cf_svn_generic, SHA_BLOCKED_CYCLES, 0x0047);
-CPUMF_EVENT_ATTR(cf_svn_generic, DEA_FUNCTIONS, 0x0048);
-CPUMF_EVENT_ATTR(cf_svn_generic, DEA_CYCLES, 0x0049);
-CPUMF_EVENT_ATTR(cf_svn_generic, DEA_BLOCKED_FUNCTIONS, 0x004a);
-CPUMF_EVENT_ATTR(cf_svn_generic, DEA_BLOCKED_CYCLES, 0x004b);
-CPUMF_EVENT_ATTR(cf_svn_generic, AES_FUNCTIONS, 0x004c);
-CPUMF_EVENT_ATTR(cf_svn_generic, AES_CYCLES, 0x004d);
-CPUMF_EVENT_ATTR(cf_svn_generic, AES_BLOCKED_FUNCTIONS, 0x004e);
-CPUMF_EVENT_ATTR(cf_svn_generic, AES_BLOCKED_CYCLES, 0x004f);
+CPUMF_EVENT_ATTR(cf_svn_12345, PRNG_FUNCTIONS, 0x0040);
+CPUMF_EVENT_ATTR(cf_svn_12345, PRNG_CYCLES, 0x0041);
+CPUMF_EVENT_ATTR(cf_svn_12345, PRNG_BLOCKED_FUNCTIONS, 0x0042);
+CPUMF_EVENT_ATTR(cf_svn_12345, PRNG_BLOCKED_CYCLES, 0x0043);
+CPUMF_EVENT_ATTR(cf_svn_12345, SHA_FUNCTIONS, 0x0044);
+CPUMF_EVENT_ATTR(cf_svn_12345, SHA_CYCLES, 0x0045);
+CPUMF_EVENT_ATTR(cf_svn_12345, SHA_BLOCKED_FUNCTIONS, 0x0046);
+CPUMF_EVENT_ATTR(cf_svn_12345, SHA_BLOCKED_CYCLES, 0x0047);
+CPUMF_EVENT_ATTR(cf_svn_12345, DEA_FUNCTIONS, 0x0048);
+CPUMF_EVENT_ATTR(cf_svn_12345, DEA_CYCLES, 0x0049);
+CPUMF_EVENT_ATTR(cf_svn_12345, DEA_BLOCKED_FUNCTIONS, 0x004a);
+CPUMF_EVENT_ATTR(cf_svn_12345, DEA_BLOCKED_CYCLES, 0x004b);
+CPUMF_EVENT_ATTR(cf_svn_12345, AES_FUNCTIONS, 0x004c);
+CPUMF_EVENT_ATTR(cf_svn_12345, AES_CYCLES, 0x004d);
+CPUMF_EVENT_ATTR(cf_svn_12345, AES_BLOCKED_FUNCTIONS, 0x004e);
+CPUMF_EVENT_ATTR(cf_svn_12345, AES_BLOCKED_CYCLES, 0x004f);
+CPUMF_EVENT_ATTR(cf_svn_6, ECC_FUNCTION_COUNT, 0x0050);
+CPUMF_EVENT_ATTR(cf_svn_6, ECC_CYCLES_COUNT, 0x0051);
+CPUMF_EVENT_ATTR(cf_svn_6, ECC_BLOCKED_FUNCTION_COUNT, 0x0052);
+CPUMF_EVENT_ATTR(cf_svn_6, ECC_BLOCKED_CYCLES_COUNT, 0x0053);
 CPUMF_EVENT_ATTR(cf_z10, L1I_L2_SOURCED_WRITES, 0x0080);
 CPUMF_EVENT_ATTR(cf_z10, L1D_L2_SOURCED_WRITES, 0x0081);
 CPUMF_EVENT_ATTR(cf_z10, L1I_L3_LOCAL_WRITES, 0x0082);
        NULL,
 };
 
-static struct attribute *cpumcf_svn_generic_pmu_event_attr[] __initdata = {
-       CPUMF_EVENT_PTR(cf_svn_generic, PRNG_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, PRNG_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, PRNG_BLOCKED_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, PRNG_BLOCKED_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, SHA_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, SHA_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, SHA_BLOCKED_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, SHA_BLOCKED_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, DEA_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, DEA_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, DEA_BLOCKED_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, DEA_BLOCKED_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, AES_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, AES_CYCLES),
-       CPUMF_EVENT_PTR(cf_svn_generic, AES_BLOCKED_FUNCTIONS),
-       CPUMF_EVENT_PTR(cf_svn_generic, AES_BLOCKED_CYCLES),
+static struct attribute *cpumcf_svn_12345_pmu_event_attr[] __initdata = {
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_BLOCKED_CYCLES),
+       NULL,
+};
+
+static struct attribute *cpumcf_svn_6_pmu_event_attr[] __initdata = {
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, PRNG_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, SHA_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, DEA_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_BLOCKED_FUNCTIONS),
+       CPUMF_EVENT_PTR(cf_svn_12345, AES_BLOCKED_CYCLES),
+       CPUMF_EVENT_PTR(cf_svn_6, ECC_FUNCTION_COUNT),
+       CPUMF_EVENT_PTR(cf_svn_6, ECC_CYCLES_COUNT),
+       CPUMF_EVENT_PTR(cf_svn_6, ECC_BLOCKED_FUNCTION_COUNT),
+       CPUMF_EVENT_PTR(cf_svn_6, ECC_BLOCKED_CYCLES_COUNT),
        NULL,
 };
 
        default:
                cfvn = none;
        }
-       csvn = cpumcf_svn_generic_pmu_event_attr;
+
+       /* Determine version specific crypto set */
+       switch (ci.csvn) {
+       case 1 ... 5:
+               csvn = cpumcf_svn_12345_pmu_event_attr;
+               break;
+       case 6:
+               csvn = cpumcf_svn_6_pmu_event_attr;
+               break;
+       default:
+               csvn = none;
+       }
 
        /* Determine model-specific counter set(s) */
        get_cpu_id(&cpu_id);