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