202 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			202 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *
 | |
|  * (C) COPYRIGHT 2014 ARM Limited. All rights reserved.
 | |
|  *
 | |
|  * This program is free software and is provided to you under the terms of the
 | |
|  * GNU General Public License version 2 as published by the Free Software
 | |
|  * Foundation, and any use by you of this program is subject to the terms
 | |
|  * of such GNU licence.
 | |
|  *
 | |
|  * A copy of the licence is included with the program, and can also be obtained
 | |
|  * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 | |
|  * Boston, MA  02110-1301, USA.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #if !defined(_TRACE_MALI_KBASE_H) || defined(TRACE_HEADER_MULTI_READ)
 | |
| #define _TRACE_MALI_KBASE_H
 | |
| 
 | |
| #undef TRACE_SYSTEM
 | |
| #define TRACE_SYSTEM mali
 | |
| 
 | |
| #include <linux/tracepoint.h>
 | |
| 
 | |
| DECLARE_EVENT_CLASS(mali_slot_template,
 | |
| 	TP_PROTO(int jobslot, unsigned int info_val),
 | |
| 	TP_ARGS(jobslot, info_val),
 | |
| 	TP_STRUCT__entry(
 | |
| 		__field(unsigned int, jobslot)
 | |
| 		__field(unsigned int, info_val)
 | |
| 	),
 | |
| 	TP_fast_assign(
 | |
| 		__entry->jobslot = jobslot;
 | |
| 		__entry->info_val = info_val;
 | |
| 	),
 | |
| 	TP_printk("jobslot=%u info=%u", __entry->jobslot, __entry->info_val)
 | |
| );
 | |
| 
 | |
| #define DEFINE_MALI_SLOT_EVENT(name) \
 | |
| DEFINE_EVENT(mali_slot_template, mali_##name, \
 | |
| 	TP_PROTO(int jobslot, unsigned int info_val), \
 | |
| 	TP_ARGS(jobslot, info_val))
 | |
| DEFINE_MALI_SLOT_EVENT(JM_SUBMIT);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_JOB_DONE);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_UPDATE_HEAD);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_CHECK_HEAD);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP_0);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP_1);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP_0);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP_1);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_SLOT_SOFT_OR_HARD_STOP);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_SLOT_EVICT);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_BEGIN_RESET_WORKER);
 | |
| DEFINE_MALI_SLOT_EVENT(JM_END_RESET_WORKER);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_AFFINITY_SUBMIT_TO_BLOCKED);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_AFFINITY_CURRENT);
 | |
| DEFINE_MALI_SLOT_EVENT(JD_DONE_TRY_RUN_NEXT_JOB);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REQUEST_CORES_FAILED);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REGISTER_INUSE_FAILED);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_AFFINITY_WOULD_VIOLATE);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_JOB_DONE_TRY_RUN_NEXT_JOB);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_JOB_DONE_RETRY_NEEDED);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_POLICY_DEQUEUE_JOB);
 | |
| DEFINE_MALI_SLOT_EVENT(JS_POLICY_DEQUEUE_JOB_IRQ);
 | |
| #undef DEFINE_MALI_SLOT_EVENT
 | |
| 
 | |
| DECLARE_EVENT_CLASS(mali_refcount_template,
 | |
| 	TP_PROTO(int refcount, unsigned int info_val),
 | |
| 	TP_ARGS(refcount, info_val),
 | |
| 	TP_STRUCT__entry(
 | |
| 		__field(unsigned int, refcount)
 | |
| 		__field(unsigned int, info_val)
 | |
| 	),
 | |
| 	TP_fast_assign(
 | |
| 		__entry->refcount = refcount;
 | |
| 		__entry->info_val = info_val;
 | |
| 	),
 | |
| 	TP_printk("refcount=%u info=%u", __entry->refcount, __entry->info_val)
 | |
| );
 | |
| 
 | |
| #define DEFINE_MALI_REFCOUNT_EVENT(name) \
 | |
| DEFINE_EVENT(mali_refcount_template, mali_##name, \
 | |
| 	TP_PROTO(int refcount, unsigned int info_val), \
 | |
| 	TP_ARGS(refcount, info_val))
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_RETAIN_CTX_NOLOCK);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_ADD_JOB);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_REMOVE_JOB);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_RETAIN_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_RELEASE_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_TRY_SCHEDULE_HEAD_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_INIT_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_TERM_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_ENQUEUE_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_DEQUEUE_HEAD_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_TRY_EVICT_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_RUNPOOL_ADD_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_RUNPOOL_REMOVE_CTX);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_FOREACH_CTX_JOBS);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(PM_CONTEXT_ACTIVE);
 | |
| DEFINE_MALI_REFCOUNT_EVENT(PM_CONTEXT_IDLE);
 | |
| #undef DEFINE_MALI_REFCOUNT_EVENT
 | |
| 
 | |
| DECLARE_EVENT_CLASS(mali_add_template,
 | |
| 	TP_PROTO(int gpu_addr, unsigned int info_val),
 | |
| 	TP_ARGS(gpu_addr, info_val),
 | |
| 	TP_STRUCT__entry(
 | |
| 		__field(unsigned int, gpu_addr)
 | |
| 		__field(unsigned int, info_val)
 | |
| 	),
 | |
| 	TP_fast_assign(
 | |
| 		__entry->gpu_addr = gpu_addr;
 | |
| 		__entry->info_val = info_val;
 | |
| 	),
 | |
| 	TP_printk("gpu_addr=%u info=%u", __entry->gpu_addr, __entry->info_val)
 | |
| );
 | |
| 
 | |
| #define DEFINE_MALI_ADD_EVENT(name) \
 | |
| DEFINE_EVENT(mali_add_template, mali_##name, \
 | |
| 	TP_PROTO(int gpu_addr, unsigned int info_val), \
 | |
| 	TP_ARGS(gpu_addr, info_val))
 | |
| DEFINE_MALI_ADD_EVENT(CORE_CTX_DESTROY);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_CTX_HWINSTR_TERM);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ_CLEAR);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ_DONE);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_SOFT_RESET);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_HARD_RESET);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_PRFCNT_SAMPLE);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_PRFCNT_CLEAR);
 | |
| DEFINE_MALI_ADD_EVENT(CORE_GPU_CLEAN_INV_CACHES);
 | |
| DEFINE_MALI_ADD_EVENT(JD_DONE_WORKER);
 | |
| DEFINE_MALI_ADD_EVENT(JD_DONE_WORKER_END);
 | |
| DEFINE_MALI_ADD_EVENT(JD_CANCEL_WORKER);
 | |
| DEFINE_MALI_ADD_EVENT(JD_DONE);
 | |
| DEFINE_MALI_ADD_EVENT(JD_CANCEL);
 | |
| DEFINE_MALI_ADD_EVENT(JD_ZAP_CONTEXT);
 | |
| DEFINE_MALI_ADD_EVENT(JM_IRQ);
 | |
| DEFINE_MALI_ADD_EVENT(JM_IRQ_END);
 | |
| DEFINE_MALI_ADD_EVENT(JM_FLUSH_WORKQS);
 | |
| DEFINE_MALI_ADD_EVENT(JM_FLUSH_WORKQS_DONE);
 | |
| DEFINE_MALI_ADD_EVENT(JM_ZAP_NON_SCHEDULED);
 | |
| DEFINE_MALI_ADD_EVENT(JM_ZAP_SCHEDULED);
 | |
| DEFINE_MALI_ADD_EVENT(JM_ZAP_DONE);
 | |
| DEFINE_MALI_ADD_EVENT(JM_SUBMIT_AFTER_RESET);
 | |
| DEFINE_MALI_ADD_EVENT(JM_JOB_COMPLETE);
 | |
| DEFINE_MALI_ADD_EVENT(JS_FAST_START_EVICTS_CTX);
 | |
| DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_ON_RUNPOOL);
 | |
| DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_OFF_RUNPOOL);
 | |
| DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_ON_CTX);
 | |
| DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_OFF_CTX);
 | |
| DEFINE_MALI_ADD_EVENT(JS_POLICY_TIMER_END);
 | |
| DEFINE_MALI_ADD_EVENT(JS_POLICY_TIMER_START);
 | |
| DEFINE_MALI_ADD_EVENT(JS_POLICY_ENQUEUE_JOB);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_DESIRED);
 | |
| DEFINE_MALI_ADD_EVENT(PM_JOB_SUBMIT_AFTER_POWERING_UP);
 | |
| DEFINE_MALI_ADD_EVENT(PM_JOB_SUBMIT_AFTER_POWERED_UP);
 | |
| DEFINE_MALI_ADD_EVENT(PM_PWRON);
 | |
| DEFINE_MALI_ADD_EVENT(PM_PWRON_TILER);
 | |
| DEFINE_MALI_ADD_EVENT(PM_PWRON_L2);
 | |
| DEFINE_MALI_ADD_EVENT(PM_PWROFF);
 | |
| DEFINE_MALI_ADD_EVENT(PM_PWROFF_TILER);
 | |
| DEFINE_MALI_ADD_EVENT(PM_PWROFF_L2);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED_TILER);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED_L2);
 | |
| DEFINE_MALI_ADD_EVENT(PM_DESIRED_REACHED);
 | |
| DEFINE_MALI_ADD_EVENT(PM_DESIRED_REACHED_TILER);
 | |
| DEFINE_MALI_ADD_EVENT(PM_UNREQUEST_CHANGE_SHADER_NEEDED);
 | |
| DEFINE_MALI_ADD_EVENT(PM_REQUEST_CHANGE_SHADER_NEEDED);
 | |
| DEFINE_MALI_ADD_EVENT(PM_REGISTER_CHANGE_SHADER_NEEDED);
 | |
| DEFINE_MALI_ADD_EVENT(PM_REGISTER_CHANGE_SHADER_INUSE);
 | |
| DEFINE_MALI_ADD_EVENT(PM_RELEASE_CHANGE_SHADER_INUSE);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_AVAILABLE);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_AVAILABLE_TILER);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_AVAILABLE);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_AVAILABLE_TILER);
 | |
| DEFINE_MALI_ADD_EVENT(PM_GPU_ON);
 | |
| DEFINE_MALI_ADD_EVENT(PM_GPU_OFF);
 | |
| DEFINE_MALI_ADD_EVENT(PM_SET_POLICY);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CURRENT_POLICY_INIT);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CURRENT_POLICY_TERM);
 | |
| DEFINE_MALI_ADD_EVENT(PM_CA_SET_POLICY);
 | |
| DEFINE_MALI_ADD_EVENT(PM_WAKE_WAITERS);
 | |
| #undef DEFINE_MALI_ADD_EVENT
 | |
| 
 | |
| #endif /* _TRACE_MALI_KBASE_H */
 | |
| 
 | |
| #undef TRACE_INCLUDE_PATH
 | |
| #undef linux
 | |
| #define TRACE_INCLUDE_PATH .
 | |
| #undef TRACE_INCLUDE_FILE
 | |
| #define TRACE_INCLUDE_FILE mali_linux_kbase_trace
 | |
| 
 | |
| /* This part must be outside protection */
 | |
| #include <trace/define_trace.h>
 |