2017-12-01 05:29:47 +03:00
/*
* Copyright 2017 Advanced Micro Devices , Inc .
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* THE COPYRIGHT HOLDER ( S ) OR AUTHOR ( S ) BE LIABLE FOR ANY CLAIM , DAMAGES OR
* OTHER LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE ,
* ARISING FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE .
*
*/
2015-09-07 11:06:53 +03:00
# if !defined(_GPU_SCHED_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
# define _GPU_SCHED_TRACE_H_
# include <linux/stringify.h>
# include <linux/types.h>
# include <linux/tracepoint.h>
# include <drm/drmP.h>
# undef TRACE_SYSTEM
2017-12-06 19:49:39 +03:00
# define TRACE_SYSTEM gpu_scheduler
# define TRACE_INCLUDE_FILE gpu_scheduler_trace
2015-09-07 11:06:53 +03:00
2017-12-06 19:49:39 +03:00
TRACE_EVENT ( drm_sched_job ,
TP_PROTO ( struct drm_sched_job * sched_job , struct drm_sched_entity * entity ) ,
2017-10-24 20:30:16 +03:00
TP_ARGS ( sched_job , entity ) ,
2015-09-07 11:06:53 +03:00
TP_STRUCT__entry (
2017-12-06 19:49:39 +03:00
__field ( struct drm_sched_entity * , entity )
2016-10-25 15:00:45 +03:00
__field ( struct dma_fence * , fence )
2015-09-08 21:22:31 +03:00
__field ( const char * , name )
2017-06-13 23:12:38 +03:00
__field ( uint64_t , id )
2015-09-07 11:06:53 +03:00
__field ( u32 , job_count )
__field ( int , hw_job_count )
) ,
TP_fast_assign (
2017-10-24 20:30:16 +03:00
__entry - > entity = entity ;
2017-06-13 23:12:38 +03:00
__entry - > id = sched_job - > id ;
2016-05-20 13:53:52 +03:00
__entry - > fence = & sched_job - > s_fence - > finished ;
2015-09-08 21:22:31 +03:00
__entry - > name = sched_job - > sched - > name ;
2017-10-24 20:30:16 +03:00
__entry - > job_count = spsc_queue_count ( & entity - > job_queue ) ;
2015-09-07 11:06:53 +03:00
__entry - > hw_job_count = atomic_read (
& sched_job - > sched - > hw_rq_count ) ;
) ,
2017-06-13 23:12:38 +03:00
TP_printk ( " entity=%p, id=%llu, fence=%p, ring=%s, job count:%u, hw job count:%d " ,
__entry - > entity , __entry - > id ,
__entry - > fence , __entry - > name ,
2015-11-11 09:56:00 +03:00
__entry - > job_count , __entry - > hw_job_count )
2015-09-07 11:06:53 +03:00
) ;
2015-11-11 09:56:00 +03:00
2017-12-06 19:49:39 +03:00
TRACE_EVENT ( drm_sched_process_job ,
TP_PROTO ( struct drm_sched_fence * fence ) ,
2015-11-11 09:56:00 +03:00
TP_ARGS ( fence ) ,
TP_STRUCT__entry (
2016-10-25 15:00:45 +03:00
__field ( struct dma_fence * , fence )
2015-11-11 09:56:00 +03:00
) ,
TP_fast_assign (
2016-05-20 13:53:52 +03:00
__entry - > fence = & fence - > finished ;
2015-11-11 09:56:00 +03:00
) ,
TP_printk ( " fence=%p signaled " , __entry - > fence )
) ;
2015-09-07 11:06:53 +03:00
# endif
/* This part must be outside protection */
# undef TRACE_INCLUDE_PATH
# define TRACE_INCLUDE_PATH .
# include <trace/define_trace.h>