x86, perf: P4 PMU - Fix typos in comments and style cleanup
This patch: - fixes typos in comments and clarifies the text - renames obscure p4_event_alias::original and ::alter members to ::original and ::alternative as appropriate - drops parenthesis from the return of p4_get_alias_event() No functional changes. Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Link: http://lkml.kernel.org/r/20110721160625.GX7492@sun Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									baf040a0d1
								
							
						
					
					
						commit
						f53173e47d
					
				| @ -133,7 +133,7 @@ | ||||
| 
 | ||||
| /*
 | ||||
|  * In case of event aliasing we need to preserve some | ||||
|  * caller bits otherwise the mapping won't be complete. | ||||
|  * caller bits, otherwise the mapping won't be complete. | ||||
|  */ | ||||
| #define P4_CONFIG_EVENT_ALIAS_MASK			  \ | ||||
| 	(p4_config_pack_escr(P4_CONFIG_MASK_ESCR)	| \ | ||||
|  | ||||
| @ -571,35 +571,34 @@ static __initconst const u64 p4_hw_cache_event_ids | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  * Because of Netburst being quite restricted in now | ||||
|  * many same events can run simultaneously, we use | ||||
|  * event aliases, ie different events which have the | ||||
|  * same functionallity but use non-intersected resources | ||||
|  * (ESCR/CCCR/couter registers). This allow us to run | ||||
|  * two or more semi-same events together. It is done | ||||
|  * transparently to a user space. | ||||
|  * Because of Netburst being quite restricted in how many | ||||
|  * identical events may run simultaneously, we introduce event aliases, | ||||
|  * ie the different events which have the same functionality but | ||||
|  * utilize non-intersected resources (ESCR/CCCR/counter registers). | ||||
|  * | ||||
|  * Never set any cusom internal bits such as P4_CONFIG_HT, | ||||
|  * This allow us to relax restrictions a bit and run two or more | ||||
|  * identical events together. | ||||
|  * | ||||
|  * Never set any custom internal bits such as P4_CONFIG_HT, | ||||
|  * P4_CONFIG_ALIASABLE or bits for P4_PEBS_METRIC, they are | ||||
|  * either up-to-dated automatically either not appliable | ||||
|  * at all. | ||||
|  * | ||||
|  * And be really carefull choosing aliases! | ||||
|  * either up to date automatically or not applicable at all. | ||||
|  */ | ||||
| struct p4_event_alias { | ||||
| 	u64 orig; | ||||
| 	u64 alter; | ||||
| 	u64 original; | ||||
| 	u64 alternative; | ||||
| } p4_event_aliases[] = { | ||||
| 	{ | ||||
| 		/*
 | ||||
| 		 * Non-halted cycles can be substituted with | ||||
| 		 * non-sleeping cycles (see Intel SDM Vol3b for | ||||
| 		 * details). | ||||
| 		 * Non-halted cycles can be substituted with non-sleeping cycles (see | ||||
| 		 * Intel SDM Vol3b for details). We need this alias to be able | ||||
| 		 * to run nmi-watchdog and 'perf top' (or any other user space tool | ||||
| 		 * which is interested in running PERF_COUNT_HW_CPU_CYCLES) | ||||
| 		 * simultaneously. | ||||
| 		 */ | ||||
| 	.orig	= | ||||
| 	.original	= | ||||
| 		p4_config_pack_escr(P4_ESCR_EVENT(P4_EVENT_GLOBAL_POWER_EVENTS)		| | ||||
| 				    P4_ESCR_EMASK_BIT(P4_EVENT_GLOBAL_POWER_EVENTS, RUNNING)), | ||||
| 	.alter	= | ||||
| 	.alternative	= | ||||
| 		p4_config_pack_escr(P4_ESCR_EVENT(P4_EVENT_EXECUTION_EVENT)		| | ||||
| 				    P4_ESCR_EMASK_BIT(P4_EVENT_EXECUTION_EVENT, NBOGUS0)| | ||||
| 				    P4_ESCR_EMASK_BIT(P4_EVENT_EXECUTION_EVENT, NBOGUS1)| | ||||
| @ -620,25 +619,21 @@ static u64 p4_get_alias_event(u64 config) | ||||
| 	int i; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Probably we're lucky and don't have to do | ||||
| 	 * matching over all config bits. | ||||
| 	 * Only event with special mark is allowed, | ||||
| 	 * we're to be sure it didn't come as malformed | ||||
| 	 * RAW event. | ||||
| 	 */ | ||||
| 	if (!(config & P4_CONFIG_ALIASABLE)) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	config_match = config & P4_CONFIG_EVENT_ALIAS_MASK; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * If an event was previously swapped to the alter config | ||||
| 	 * we should swap it back otherwise contnention on registers | ||||
| 	 * will return back. | ||||
| 	 */ | ||||
| 	for (i = 0; i < ARRAY_SIZE(p4_event_aliases); i++) { | ||||
| 		if (config_match == p4_event_aliases[i].orig) { | ||||
| 			config_match = p4_event_aliases[i].alter; | ||||
| 		if (config_match == p4_event_aliases[i].original) { | ||||
| 			config_match = p4_event_aliases[i].alternative; | ||||
| 			break; | ||||
| 		} else if (config_match == p4_event_aliases[i].alter) { | ||||
| 			config_match = p4_event_aliases[i].orig; | ||||
| 		} else if (config_match == p4_event_aliases[i].alternative) { | ||||
| 			config_match = p4_event_aliases[i].original; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| @ -646,8 +641,7 @@ static u64 p4_get_alias_event(u64 config) | ||||
| 	if (i >= ARRAY_SIZE(p4_event_aliases)) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	return config_match | | ||||
| 		(config & P4_CONFIG_EVENT_ALIAS_IMMUTABLE_BITS); | ||||
| 	return config_match | (config & P4_CONFIG_EVENT_ALIAS_IMMUTABLE_BITS); | ||||
| } | ||||
| 
 | ||||
| static u64 p4_general_events[PERF_COUNT_HW_MAX] = { | ||||
| @ -1229,9 +1223,9 @@ static int p4_pmu_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign | ||||
| 
 | ||||
| again: | ||||
| 		/*
 | ||||
| 		 * Aliases are swappable so we may hit circular | ||||
| 		 * lock if both original config and alias need | ||||
| 		 * resources (MSR registers) which already busy. | ||||
| 		 * It's possible to hit a circular lock | ||||
| 		 * between original and alternative events | ||||
| 		 * if both are scheduled already. | ||||
| 		 */ | ||||
| 		if (pass > 2) | ||||
| 			goto done; | ||||
| @ -1251,7 +1245,7 @@ again: | ||||
| 		cntr_idx = p4_next_cntr(thread, used_mask, bind); | ||||
| 		if (cntr_idx == -1 || test_bit(escr_idx, escr_mask)) { | ||||
| 			/*
 | ||||
| 			 * Probably an event alias is still available. | ||||
| 			 * Check whether an event alias is still available. | ||||
| 			 */ | ||||
| 			config_alias = p4_get_alias_event(hwc->config); | ||||
| 			if (!config_alias) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user