1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2c7168325SHendrik Brueckner /*
3c7168325SHendrik Brueckner  * Perf PMU sysfs events attributes for available CPU-measurement counters
4c7168325SHendrik Brueckner  *
5c7168325SHendrik Brueckner  */
6c7168325SHendrik Brueckner 
7c7168325SHendrik Brueckner #include <linux/slab.h>
8c7168325SHendrik Brueckner #include <linux/perf_event.h>
9c7168325SHendrik Brueckner 
10c7168325SHendrik Brueckner 
11c7168325SHendrik Brueckner /* BEGIN: CPUM_CF COUNTER DEFINITIONS =================================== */
12c7168325SHendrik Brueckner 
13c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, CPU_CYCLES, 0x0000);
14c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, INSTRUCTIONS, 0x0001);
15c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, L1I_DIR_WRITES, 0x0002);
16c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, L1I_PENALTY_CYCLES, 0x0003);
17c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PROBLEM_STATE_CPU_CYCLES, 0x0020);
18c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PROBLEM_STATE_INSTRUCTIONS, 0x0021);
19c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PROBLEM_STATE_L1I_DIR_WRITES, 0x0022);
20c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PROBLEM_STATE_L1I_PENALTY_CYCLES, 0x0023);
21c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PROBLEM_STATE_L1D_DIR_WRITES, 0x0024);
22c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PROBLEM_STATE_L1D_PENALTY_CYCLES, 0x0025);
23c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, L1D_DIR_WRITES, 0x0004);
24c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, L1D_PENALTY_CYCLES, 0x0005);
25c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PRNG_FUNCTIONS, 0x0040);
26c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PRNG_CYCLES, 0x0041);
27c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PRNG_BLOCKED_FUNCTIONS, 0x0042);
28c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, PRNG_BLOCKED_CYCLES, 0x0043);
29c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, SHA_FUNCTIONS, 0x0044);
30c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, SHA_CYCLES, 0x0045);
31c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, SHA_BLOCKED_FUNCTIONS, 0x0046);
32c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, SHA_BLOCKED_CYCLES, 0x0047);
33c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, DEA_FUNCTIONS, 0x0048);
34c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, DEA_CYCLES, 0x0049);
35c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, DEA_BLOCKED_FUNCTIONS, 0x004a);
36c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, DEA_BLOCKED_CYCLES, 0x004b);
37c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, AES_FUNCTIONS, 0x004c);
38c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, AES_CYCLES, 0x004d);
39c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, AES_BLOCKED_FUNCTIONS, 0x004e);
40c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf, AES_BLOCKED_CYCLES, 0x004f);
41c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1I_L2_SOURCED_WRITES, 0x0080);
42c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1D_L2_SOURCED_WRITES, 0x0081);
43c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1I_L3_LOCAL_WRITES, 0x0082);
44c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1D_L3_LOCAL_WRITES, 0x0083);
45c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1I_L3_REMOTE_WRITES, 0x0084);
46c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1D_L3_REMOTE_WRITES, 0x0085);
47c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1D_LMEM_SOURCED_WRITES, 0x0086);
48c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1I_LMEM_SOURCED_WRITES, 0x0087);
49c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1D_RO_EXCL_WRITES, 0x0088);
50c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L1I_CACHELINE_INVALIDATES, 0x0089);
51c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, ITLB1_WRITES, 0x008a);
52c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, DTLB1_WRITES, 0x008b);
53c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, TLB2_PTE_WRITES, 0x008c);
54c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, TLB2_CRSTE_WRITES, 0x008d);
55c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, TLB2_CRSTE_HPAGE_WRITES, 0x008e);
56c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, ITLB1_MISSES, 0x0091);
57c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, DTLB1_MISSES, 0x0092);
58c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z10, L2C_STORES_SENT, 0x0093);
59c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_L2_SOURCED_WRITES, 0x0080);
60c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_L2_SOURCED_WRITES, 0x0081);
61c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, DTLB1_MISSES, 0x0082);
62c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, ITLB1_MISSES, 0x0083);
63c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L2C_STORES_SENT, 0x0085);
64c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_OFFBOOK_L3_SOURCED_WRITES, 0x0086);
65c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_ONBOOK_L4_SOURCED_WRITES, 0x0087);
66c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_ONBOOK_L4_SOURCED_WRITES, 0x0088);
67c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_RO_EXCL_WRITES, 0x0089);
68c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_OFFBOOK_L4_SOURCED_WRITES, 0x008a);
69c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_OFFBOOK_L4_SOURCED_WRITES, 0x008b);
70c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, DTLB1_HPAGE_WRITES, 0x008c);
71c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_LMEM_SOURCED_WRITES, 0x008d);
72c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_LMEM_SOURCED_WRITES, 0x008e);
73c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_OFFBOOK_L3_SOURCED_WRITES, 0x008f);
74c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, DTLB1_WRITES, 0x0090);
75c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, ITLB1_WRITES, 0x0091);
76c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, TLB2_PTE_WRITES, 0x0092);
77c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, TLB2_CRSTE_HPAGE_WRITES, 0x0093);
78c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, TLB2_CRSTE_WRITES, 0x0094);
79c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_ONCHIP_L3_SOURCED_WRITES, 0x0096);
80c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1D_OFFCHIP_L3_SOURCED_WRITES, 0x0098);
81c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_ONCHIP_L3_SOURCED_WRITES, 0x0099);
82c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_z196, L1I_OFFCHIP_L3_SOURCED_WRITES, 0x009b);
83c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, DTLB1_MISSES, 0x0080);
84c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, ITLB1_MISSES, 0x0081);
85c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_L2I_SOURCED_WRITES, 0x0082);
86c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_L2I_SOURCED_WRITES, 0x0083);
87c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_L2D_SOURCED_WRITES, 0x0084);
88c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, DTLB1_WRITES, 0x0085);
89c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_LMEM_SOURCED_WRITES, 0x0087);
90c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_LMEM_SOURCED_WRITES, 0x0089);
91c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_RO_EXCL_WRITES, 0x008a);
92c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, DTLB1_HPAGE_WRITES, 0x008b);
93c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, ITLB1_WRITES, 0x008c);
94c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TLB2_PTE_WRITES, 0x008d);
95c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TLB2_CRSTE_HPAGE_WRITES, 0x008e);
96c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TLB2_CRSTE_WRITES, 0x008f);
97c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_ONCHIP_L3_SOURCED_WRITES, 0x0090);
98c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_OFFCHIP_L3_SOURCED_WRITES, 0x0091);
99c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_OFFBOOK_L3_SOURCED_WRITES, 0x0092);
100c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_ONBOOK_L4_SOURCED_WRITES, 0x0093);
101c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_OFFBOOK_L4_SOURCED_WRITES, 0x0094);
102c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TX_NC_TEND, 0x0095);
103c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_ONCHIP_L3_SOURCED_WRITES_IV, 0x0096);
104c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_OFFCHIP_L3_SOURCED_WRITES_IV, 0x0097);
105c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1D_OFFBOOK_L3_SOURCED_WRITES_IV, 0x0098);
106c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_ONCHIP_L3_SOURCED_WRITES, 0x0099);
107c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_OFFCHIP_L3_SOURCED_WRITES, 0x009a);
108c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_OFFBOOK_L3_SOURCED_WRITES, 0x009b);
109c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_ONBOOK_L4_SOURCED_WRITES, 0x009c);
110c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_OFFBOOK_L4_SOURCED_WRITES, 0x009d);
111c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TX_C_TEND, 0x009e);
112c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_ONCHIP_L3_SOURCED_WRITES_IV, 0x009f);
113c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_OFFCHIP_L3_SOURCED_WRITES_IV, 0x00a0);
114c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, L1I_OFFBOOK_L3_SOURCED_WRITES_IV, 0x00a1);
115c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TX_NC_TABORT, 0x00b1);
116c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TX_C_TABORT_NO_SPECIAL, 0x00b2);
117c7168325SHendrik Brueckner CPUMF_EVENT_ATTR(cf_zec12, TX_C_TABORT_SPECIAL, 0x00b3);
1183fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_WRITES_RO_EXCL, 0x0080);
1193fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, DTLB1_WRITES, 0x0081);
1203fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, DTLB1_MISSES, 0x0082);
1213fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, DTLB1_HPAGE_WRITES, 0x0083);
1223fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, DTLB1_GPAGE_WRITES, 0x0084);
1233fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_L2D_SOURCED_WRITES, 0x0085);
1243fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, ITLB1_WRITES, 0x0086);
1253fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, ITLB1_MISSES, 0x0087);
1263fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_L2I_SOURCED_WRITES, 0x0088);
1273fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TLB2_PTE_WRITES, 0x0089);
1283fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TLB2_CRSTE_HPAGE_WRITES, 0x008a);
1293fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TLB2_CRSTE_WRITES, 0x008b);
1303fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TX_C_TEND, 0x008c);
1313fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TX_NC_TEND, 0x008d);
1323fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1C_TLB1_MISSES, 0x008f);
1333fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES, 0x0090);
1343fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES_IV, 0x0091);
1353fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_L4_SOURCED_WRITES, 0x0092);
1363fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES_IV, 0x0093);
1373fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES, 0x0094);
1383fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_L4_SOURCED_WRITES, 0x0095);
1393fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES_IV, 0x0096);
1403fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES, 0x0097);
1413fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_SCOL_L4_SOURCED_WRITES, 0x0098);
1423fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV, 0x0099);
1433fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES, 0x009a);
1443fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_FCOL_L4_SOURCED_WRITES, 0x009b);
1453fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV, 0x009c);
1463fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES, 0x009d);
1473fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_MEM_SOURCED_WRITES, 0x009e);
1483fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_MEM_SOURCED_WRITES, 0x009f);
1493fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_MEM_SOURCED_WRITES, 0x00a0);
1503fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1D_ONCHIP_MEM_SOURCED_WRITES, 0x00a1);
1513fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES, 0x00a2);
1523fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES_IV, 0x00a3);
1533fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_L4_SOURCED_WRITES, 0x00a4);
1543fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES_IV, 0x00a5);
1553fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES, 0x00a6);
1563fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_L4_SOURCED_WRITES, 0x00a7);
1573fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES_IV, 0x00a8);
1583fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES, 0x00a9);
1593fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_SCOL_L4_SOURCED_WRITES, 0x00aa);
1603fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV, 0x00ab);
1613fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES, 0x00ac);
1623fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_FCOL_L4_SOURCED_WRITES, 0x00ad);
1633fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV, 0x00ae);
1643fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES, 0x00af);
1653fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_MEM_SOURCED_WRITES, 0x00b0);
1663fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_MEM_SOURCED_WRITES, 0x00b1);
1673fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_MEM_SOURCED_WRITES, 0x00b2);
1683fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, L1I_ONCHIP_MEM_SOURCED_WRITES, 0x00b3);
1693fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TX_NC_TABORT, 0x00da);
1703fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TX_C_TABORT_NO_SPECIAL, 0x00db);
1713fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, TX_C_TABORT_SPECIAL, 0x00dc);
1723fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, MT_DIAG_CYCLES_ONE_THR_ACTIVE, 0x01c0);
1733fc7acebSHendrik Brueckner CPUMF_EVENT_ATTR(cf_z13, MT_DIAG_CYCLES_TWO_THR_ACTIVE, 0x01c1);
174c7168325SHendrik Brueckner 
1753fc7acebSHendrik Brueckner static struct attribute *cpumcf_pmu_event_attr[] __initdata = {
176c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, CPU_CYCLES),
177c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, INSTRUCTIONS),
178c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, L1I_DIR_WRITES),
179c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, L1I_PENALTY_CYCLES),
180c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PROBLEM_STATE_CPU_CYCLES),
181c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PROBLEM_STATE_INSTRUCTIONS),
182c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PROBLEM_STATE_L1I_DIR_WRITES),
183c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PROBLEM_STATE_L1I_PENALTY_CYCLES),
184c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PROBLEM_STATE_L1D_DIR_WRITES),
185c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PROBLEM_STATE_L1D_PENALTY_CYCLES),
186c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, L1D_DIR_WRITES),
187c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, L1D_PENALTY_CYCLES),
188c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PRNG_FUNCTIONS),
189c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PRNG_CYCLES),
190c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PRNG_BLOCKED_FUNCTIONS),
191c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, PRNG_BLOCKED_CYCLES),
192c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, SHA_FUNCTIONS),
193c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, SHA_CYCLES),
194c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, SHA_BLOCKED_FUNCTIONS),
195c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, SHA_BLOCKED_CYCLES),
196c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, DEA_FUNCTIONS),
197c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, DEA_CYCLES),
198c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, DEA_BLOCKED_FUNCTIONS),
199c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, DEA_BLOCKED_CYCLES),
200c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, AES_FUNCTIONS),
201c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, AES_CYCLES),
202c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, AES_BLOCKED_FUNCTIONS),
203c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf, AES_BLOCKED_CYCLES),
204c7168325SHendrik Brueckner 	NULL,
205c7168325SHendrik Brueckner };
206c7168325SHendrik Brueckner 
207c7168325SHendrik Brueckner static struct attribute *cpumcf_z10_pmu_event_attr[] __initdata = {
208c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1I_L2_SOURCED_WRITES),
209c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1D_L2_SOURCED_WRITES),
210c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1I_L3_LOCAL_WRITES),
211c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1D_L3_LOCAL_WRITES),
212c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1I_L3_REMOTE_WRITES),
213c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1D_L3_REMOTE_WRITES),
214c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1D_LMEM_SOURCED_WRITES),
215c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1I_LMEM_SOURCED_WRITES),
216c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1D_RO_EXCL_WRITES),
217c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L1I_CACHELINE_INVALIDATES),
218c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, ITLB1_WRITES),
219c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, DTLB1_WRITES),
220c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, TLB2_PTE_WRITES),
221c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, TLB2_CRSTE_WRITES),
222c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, TLB2_CRSTE_HPAGE_WRITES),
223c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, ITLB1_MISSES),
224c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, DTLB1_MISSES),
225c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z10, L2C_STORES_SENT),
226c7168325SHendrik Brueckner 	NULL,
227c7168325SHendrik Brueckner };
228c7168325SHendrik Brueckner 
229c7168325SHendrik Brueckner static struct attribute *cpumcf_z196_pmu_event_attr[] __initdata = {
230c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_L2_SOURCED_WRITES),
231c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_L2_SOURCED_WRITES),
232c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, DTLB1_MISSES),
233c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, ITLB1_MISSES),
234c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L2C_STORES_SENT),
235c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_OFFBOOK_L3_SOURCED_WRITES),
236c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_ONBOOK_L4_SOURCED_WRITES),
237c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_ONBOOK_L4_SOURCED_WRITES),
238c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_RO_EXCL_WRITES),
239c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_OFFBOOK_L4_SOURCED_WRITES),
240c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_OFFBOOK_L4_SOURCED_WRITES),
241c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, DTLB1_HPAGE_WRITES),
242c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_LMEM_SOURCED_WRITES),
243c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_LMEM_SOURCED_WRITES),
244c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_OFFBOOK_L3_SOURCED_WRITES),
245c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, DTLB1_WRITES),
246c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, ITLB1_WRITES),
247c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, TLB2_PTE_WRITES),
248c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, TLB2_CRSTE_HPAGE_WRITES),
249c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, TLB2_CRSTE_WRITES),
250c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_ONCHIP_L3_SOURCED_WRITES),
251c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1D_OFFCHIP_L3_SOURCED_WRITES),
252c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_ONCHIP_L3_SOURCED_WRITES),
253c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z196, L1I_OFFCHIP_L3_SOURCED_WRITES),
254c7168325SHendrik Brueckner 	NULL,
255c7168325SHendrik Brueckner };
256c7168325SHendrik Brueckner 
257c7168325SHendrik Brueckner static struct attribute *cpumcf_zec12_pmu_event_attr[] __initdata = {
258c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, DTLB1_MISSES),
259c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, ITLB1_MISSES),
260c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_L2I_SOURCED_WRITES),
261c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_L2I_SOURCED_WRITES),
262c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_L2D_SOURCED_WRITES),
263c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, DTLB1_WRITES),
264c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_LMEM_SOURCED_WRITES),
265c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_LMEM_SOURCED_WRITES),
266c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_RO_EXCL_WRITES),
267c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, DTLB1_HPAGE_WRITES),
268c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, ITLB1_WRITES),
269c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TLB2_PTE_WRITES),
270c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TLB2_CRSTE_HPAGE_WRITES),
271c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TLB2_CRSTE_WRITES),
272c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_ONCHIP_L3_SOURCED_WRITES),
273c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_OFFCHIP_L3_SOURCED_WRITES),
274c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_OFFBOOK_L3_SOURCED_WRITES),
275c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_ONBOOK_L4_SOURCED_WRITES),
276c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_OFFBOOK_L4_SOURCED_WRITES),
277c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TX_NC_TEND),
278c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_ONCHIP_L3_SOURCED_WRITES_IV),
279c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_OFFCHIP_L3_SOURCED_WRITES_IV),
280c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1D_OFFBOOK_L3_SOURCED_WRITES_IV),
281c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_ONCHIP_L3_SOURCED_WRITES),
282c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_OFFCHIP_L3_SOURCED_WRITES),
283c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_OFFBOOK_L3_SOURCED_WRITES),
284c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_ONBOOK_L4_SOURCED_WRITES),
285c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_OFFBOOK_L4_SOURCED_WRITES),
286c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TX_C_TEND),
287c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_ONCHIP_L3_SOURCED_WRITES_IV),
288c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_OFFCHIP_L3_SOURCED_WRITES_IV),
289c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, L1I_OFFBOOK_L3_SOURCED_WRITES_IV),
290c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TX_NC_TABORT),
291c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TX_C_TABORT_NO_SPECIAL),
292c7168325SHendrik Brueckner 	CPUMF_EVENT_PTR(cf_zec12, TX_C_TABORT_SPECIAL),
293c7168325SHendrik Brueckner 	NULL,
294c7168325SHendrik Brueckner };
295c7168325SHendrik Brueckner 
2963fc7acebSHendrik Brueckner static struct attribute *cpumcf_z13_pmu_event_attr[] __initdata = {
2973fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_WRITES_RO_EXCL),
2983fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, DTLB1_WRITES),
2993fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, DTLB1_MISSES),
3003fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, DTLB1_HPAGE_WRITES),
3013fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, DTLB1_GPAGE_WRITES),
3023fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_L2D_SOURCED_WRITES),
3033fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, ITLB1_WRITES),
3043fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, ITLB1_MISSES),
3053fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_L2I_SOURCED_WRITES),
3063fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TLB2_PTE_WRITES),
3073fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TLB2_CRSTE_HPAGE_WRITES),
3083fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TLB2_CRSTE_WRITES),
3093fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TX_C_TEND),
3103fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TX_NC_TEND),
3113fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1C_TLB1_MISSES),
3123fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES),
3133fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES_IV),
3143fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_L4_SOURCED_WRITES),
3153fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES_IV),
3163fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES),
3173fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_L4_SOURCED_WRITES),
3183fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES_IV),
3193fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES),
3203fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_SCOL_L4_SOURCED_WRITES),
3213fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV),
3223fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES),
3233fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_FCOL_L4_SOURCED_WRITES),
3243fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV),
3253fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES),
3263fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_MEM_SOURCED_WRITES),
3273fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_MEM_SOURCED_WRITES),
3283fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_MEM_SOURCED_WRITES),
3293fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1D_ONCHIP_MEM_SOURCED_WRITES),
3303fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES),
3313fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES_IV),
3323fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_L4_SOURCED_WRITES),
3333fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES_IV),
3343fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES),
3353fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_L4_SOURCED_WRITES),
3363fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES_IV),
3373fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES),
3383fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_SCOL_L4_SOURCED_WRITES),
3393fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV),
3403fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES),
3413fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_FCOL_L4_SOURCED_WRITES),
3423fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV),
3433fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES),
3443fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_MEM_SOURCED_WRITES),
3453fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_MEM_SOURCED_WRITES),
3463fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_MEM_SOURCED_WRITES),
3473fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, L1I_ONCHIP_MEM_SOURCED_WRITES),
3483fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TX_NC_TABORT),
3493fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TX_C_TABORT_NO_SPECIAL),
3503fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, TX_C_TABORT_SPECIAL),
3513fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, MT_DIAG_CYCLES_ONE_THR_ACTIVE),
3523fc7acebSHendrik Brueckner 	CPUMF_EVENT_PTR(cf_z13, MT_DIAG_CYCLES_TWO_THR_ACTIVE),
3533fc7acebSHendrik Brueckner 	NULL,
3543fc7acebSHendrik Brueckner };
3553fc7acebSHendrik Brueckner 
356c7168325SHendrik Brueckner /* END: CPUM_CF COUNTER DEFINITIONS ===================================== */
357c7168325SHendrik Brueckner 
35866a49784SHendrik Brueckner static struct attribute_group cpumcf_pmu_events_group = {
359c7168325SHendrik Brueckner 	.name = "events",
360c7168325SHendrik Brueckner };
361c7168325SHendrik Brueckner 
362c7168325SHendrik Brueckner PMU_FORMAT_ATTR(event, "config:0-63");
363c7168325SHendrik Brueckner 
36466a49784SHendrik Brueckner static struct attribute *cpumcf_pmu_format_attr[] = {
365c7168325SHendrik Brueckner 	&format_attr_event.attr,
366c7168325SHendrik Brueckner 	NULL,
367c7168325SHendrik Brueckner };
368c7168325SHendrik Brueckner 
36966a49784SHendrik Brueckner static struct attribute_group cpumcf_pmu_format_group = {
370c7168325SHendrik Brueckner 	.name = "format",
37166a49784SHendrik Brueckner 	.attrs = cpumcf_pmu_format_attr,
372c7168325SHendrik Brueckner };
373c7168325SHendrik Brueckner 
37466a49784SHendrik Brueckner static const struct attribute_group *cpumcf_pmu_attr_groups[] = {
37566a49784SHendrik Brueckner 	&cpumcf_pmu_events_group,
37666a49784SHendrik Brueckner 	&cpumcf_pmu_format_group,
377c7168325SHendrik Brueckner 	NULL,
378c7168325SHendrik Brueckner };
379c7168325SHendrik Brueckner 
380c7168325SHendrik Brueckner 
381c7168325SHendrik Brueckner static __init struct attribute **merge_attr(struct attribute **a,
382c7168325SHendrik Brueckner 					    struct attribute **b)
383c7168325SHendrik Brueckner {
384c7168325SHendrik Brueckner 	struct attribute **new;
385c7168325SHendrik Brueckner 	int j, i;
386c7168325SHendrik Brueckner 
387c7168325SHendrik Brueckner 	for (j = 0; a[j]; j++)
388c7168325SHendrik Brueckner 		;
389c7168325SHendrik Brueckner 	for (i = 0; b[i]; i++)
390c7168325SHendrik Brueckner 		j++;
391c7168325SHendrik Brueckner 	j++;
392c7168325SHendrik Brueckner 
393c7168325SHendrik Brueckner 	new = kmalloc(sizeof(struct attribute *) * j, GFP_KERNEL);
394c7168325SHendrik Brueckner 	if (!new)
395c7168325SHendrik Brueckner 		return NULL;
396c7168325SHendrik Brueckner 	j = 0;
397c7168325SHendrik Brueckner 	for (i = 0; a[i]; i++)
398c7168325SHendrik Brueckner 		new[j++] = a[i];
399c7168325SHendrik Brueckner 	for (i = 0; b[i]; i++)
400c7168325SHendrik Brueckner 		new[j++] = b[i];
401c7168325SHendrik Brueckner 	new[j] = NULL;
402c7168325SHendrik Brueckner 
403c7168325SHendrik Brueckner 	return new;
404c7168325SHendrik Brueckner }
405c7168325SHendrik Brueckner 
406c7168325SHendrik Brueckner __init const struct attribute_group **cpumf_cf_event_group(void)
407c7168325SHendrik Brueckner {
408c7168325SHendrik Brueckner 	struct attribute **combined, **model;
4093fc7acebSHendrik Brueckner 	struct attribute *none[] = { NULL };
410c7168325SHendrik Brueckner 	struct cpuid cpu_id;
411c7168325SHendrik Brueckner 
412c7168325SHendrik Brueckner 	get_cpu_id(&cpu_id);
413c7168325SHendrik Brueckner 	switch (cpu_id.machine) {
414c7168325SHendrik Brueckner 	case 0x2097:
415c7168325SHendrik Brueckner 	case 0x2098:
416c7168325SHendrik Brueckner 		model = cpumcf_z10_pmu_event_attr;
417c7168325SHendrik Brueckner 		break;
418c7168325SHendrik Brueckner 	case 0x2817:
419c7168325SHendrik Brueckner 	case 0x2818:
420c7168325SHendrik Brueckner 		model = cpumcf_z196_pmu_event_attr;
421c7168325SHendrik Brueckner 		break;
422c7168325SHendrik Brueckner 	case 0x2827:
423c7168325SHendrik Brueckner 	case 0x2828:
424c7168325SHendrik Brueckner 		model = cpumcf_zec12_pmu_event_attr;
425c7168325SHendrik Brueckner 		break;
4263fc7acebSHendrik Brueckner 	case 0x2964:
4273fc7acebSHendrik Brueckner 	case 0x2965:
4283fc7acebSHendrik Brueckner 		model = cpumcf_z13_pmu_event_attr;
4293fc7acebSHendrik Brueckner 		break;
430c7168325SHendrik Brueckner 	default:
4313fc7acebSHendrik Brueckner 		model = none;
432c7168325SHendrik Brueckner 		break;
4330b925159SHeiko Carstens 	}
434c7168325SHendrik Brueckner 
435c7168325SHendrik Brueckner 	combined = merge_attr(cpumcf_pmu_event_attr, model);
436c7168325SHendrik Brueckner 	if (combined)
43766a49784SHendrik Brueckner 		cpumcf_pmu_events_group.attrs = combined;
43866a49784SHendrik Brueckner 	return cpumcf_pmu_attr_groups;
439c7168325SHendrik Brueckner }
440