s390/cpum_cf: add IBM z13 counter event names
Add the event names for the IBM z13/z13s specific CPU-MF counters. Also improve the merging of the generic and model specific events so that their sysfs attribute definitions completely reside in memory. Hence, flagging the generic event attribute definitions as initdata too. Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
		
							parent
							
								
									ee699f329a
								
							
						
					
					
						commit
						3fc7acebae
					
				| @ -114,8 +114,64 @@ CPUMF_EVENT_ATTR(cf_zec12, L1I_OFFBOOK_L3_SOURCED_WRITES_IV, 0x00a1); | ||||
| CPUMF_EVENT_ATTR(cf_zec12, TX_NC_TABORT, 0x00b1); | ||||
| CPUMF_EVENT_ATTR(cf_zec12, TX_C_TABORT_NO_SPECIAL, 0x00b2); | ||||
| CPUMF_EVENT_ATTR(cf_zec12, TX_C_TABORT_SPECIAL, 0x00b3); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_WRITES_RO_EXCL, 0x0080); | ||||
| CPUMF_EVENT_ATTR(cf_z13, DTLB1_WRITES, 0x0081); | ||||
| CPUMF_EVENT_ATTR(cf_z13, DTLB1_MISSES, 0x0082); | ||||
| CPUMF_EVENT_ATTR(cf_z13, DTLB1_HPAGE_WRITES, 0x0083); | ||||
| CPUMF_EVENT_ATTR(cf_z13, DTLB1_GPAGE_WRITES, 0x0084); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_L2D_SOURCED_WRITES, 0x0085); | ||||
| CPUMF_EVENT_ATTR(cf_z13, ITLB1_WRITES, 0x0086); | ||||
| CPUMF_EVENT_ATTR(cf_z13, ITLB1_MISSES, 0x0087); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_L2I_SOURCED_WRITES, 0x0088); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TLB2_PTE_WRITES, 0x0089); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TLB2_CRSTE_HPAGE_WRITES, 0x008a); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TLB2_CRSTE_WRITES, 0x008b); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TX_C_TEND, 0x008c); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TX_NC_TEND, 0x008d); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1C_TLB1_MISSES, 0x008f); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES, 0x0090); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES_IV, 0x0091); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_L4_SOURCED_WRITES, 0x0092); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES_IV, 0x0093); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES, 0x0094); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_L4_SOURCED_WRITES, 0x0095); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES_IV, 0x0096); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES, 0x0097); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_SCOL_L4_SOURCED_WRITES, 0x0098); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV, 0x0099); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES, 0x009a); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_FCOL_L4_SOURCED_WRITES, 0x009b); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV, 0x009c); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES, 0x009d); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONNODE_MEM_SOURCED_WRITES, 0x009e); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONDRAWER_MEM_SOURCED_WRITES, 0x009f); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_OFFDRAWER_MEM_SOURCED_WRITES, 0x00a0); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1D_ONCHIP_MEM_SOURCED_WRITES, 0x00a1); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES, 0x00a2); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES_IV, 0x00a3); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_L4_SOURCED_WRITES, 0x00a4); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES_IV, 0x00a5); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES, 0x00a6); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_L4_SOURCED_WRITES, 0x00a7); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES_IV, 0x00a8); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES, 0x00a9); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_SCOL_L4_SOURCED_WRITES, 0x00aa); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV, 0x00ab); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES, 0x00ac); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_FCOL_L4_SOURCED_WRITES, 0x00ad); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV, 0x00ae); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES, 0x00af); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONNODE_MEM_SOURCED_WRITES, 0x00b0); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONDRAWER_MEM_SOURCED_WRITES, 0x00b1); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_OFFDRAWER_MEM_SOURCED_WRITES, 0x00b2); | ||||
| CPUMF_EVENT_ATTR(cf_z13, L1I_ONCHIP_MEM_SOURCED_WRITES, 0x00b3); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TX_NC_TABORT, 0x00da); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TX_C_TABORT_NO_SPECIAL, 0x00db); | ||||
| CPUMF_EVENT_ATTR(cf_z13, TX_C_TABORT_SPECIAL, 0x00dc); | ||||
| CPUMF_EVENT_ATTR(cf_z13, MT_DIAG_CYCLES_ONE_THR_ACTIVE, 0x01c0); | ||||
| CPUMF_EVENT_ATTR(cf_z13, MT_DIAG_CYCLES_TWO_THR_ACTIVE, 0x01c1); | ||||
| 
 | ||||
| static struct attribute *cpumcf_pmu_event_attr[] = { | ||||
| static struct attribute *cpumcf_pmu_event_attr[] __initdata = { | ||||
| 	CPUMF_EVENT_PTR(cf, CPU_CYCLES), | ||||
| 	CPUMF_EVENT_PTR(cf, INSTRUCTIONS), | ||||
| 	CPUMF_EVENT_PTR(cf, L1I_DIR_WRITES), | ||||
| @ -236,11 +292,70 @@ static struct attribute *cpumcf_zec12_pmu_event_attr[] __initdata = { | ||||
| 	NULL, | ||||
| }; | ||||
| 
 | ||||
| static struct attribute *cpumcf_z13_pmu_event_attr[] __initdata = { | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_WRITES_RO_EXCL), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, DTLB1_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, DTLB1_MISSES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, DTLB1_HPAGE_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, DTLB1_GPAGE_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_L2D_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, ITLB1_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, ITLB1_MISSES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_L2I_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TLB2_PTE_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TLB2_CRSTE_HPAGE_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TLB2_CRSTE_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TX_C_TEND), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TX_NC_TEND), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1C_TLB1_MISSES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONCHIP_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_SCOL_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_SCOL_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_FCOL_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_FCOL_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONNODE_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONDRAWER_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_OFFDRAWER_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1D_ONCHIP_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONCHIP_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_SCOL_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_SCOL_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_FCOL_L4_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES_IV), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_FCOL_L3_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONNODE_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONDRAWER_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_OFFDRAWER_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, L1I_ONCHIP_MEM_SOURCED_WRITES), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TX_NC_TABORT), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TX_C_TABORT_NO_SPECIAL), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, TX_C_TABORT_SPECIAL), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, MT_DIAG_CYCLES_ONE_THR_ACTIVE), | ||||
| 	CPUMF_EVENT_PTR(cf_z13, MT_DIAG_CYCLES_TWO_THR_ACTIVE), | ||||
| 	NULL, | ||||
| }; | ||||
| 
 | ||||
| /* END: CPUM_CF COUNTER DEFINITIONS ===================================== */ | ||||
| 
 | ||||
| static struct attribute_group cpumsf_pmu_events_group = { | ||||
| 	.name = "events", | ||||
| 	.attrs = cpumcf_pmu_event_attr, | ||||
| }; | ||||
| 
 | ||||
| PMU_FORMAT_ATTR(event, "config:0-63"); | ||||
| @ -290,6 +405,7 @@ static __init struct attribute **merge_attr(struct attribute **a, | ||||
| __init const struct attribute_group **cpumf_cf_event_group(void) | ||||
| { | ||||
| 	struct attribute **combined, **model; | ||||
| 	struct attribute *none[] = { NULL }; | ||||
| 	struct cpuid cpu_id; | ||||
| 
 | ||||
| 	get_cpu_id(&cpu_id); | ||||
| @ -306,17 +422,17 @@ __init const struct attribute_group **cpumf_cf_event_group(void) | ||||
| 	case 0x2828: | ||||
| 		model = cpumcf_zec12_pmu_event_attr; | ||||
| 		break; | ||||
| 	case 0x2964: | ||||
| 	case 0x2965: | ||||
| 		model = cpumcf_z13_pmu_event_attr; | ||||
| 		break; | ||||
| 	default: | ||||
| 		model = NULL; | ||||
| 		model = none; | ||||
| 		break; | ||||
| 	} | ||||
| 
 | ||||
| 	if (!model) | ||||
| 		goto out; | ||||
| 
 | ||||
| 	combined = merge_attr(cpumcf_pmu_event_attr, model); | ||||
| 	if (combined) | ||||
| 		cpumsf_pmu_events_group.attrs = combined; | ||||
| out: | ||||
| 	return cpumsf_pmu_attr_groups; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user