drm/msm: enable counter trace

Trace counter is not properly showing up on trace as is. Replace it with
proper format by refactoring existing trace to be more generic.

Bug: 119295905
Change-Id: I50abb593cd67c10ceed115380ac0e9d2177f0963
Signed-off-by: Adrian Salido <salidoa@google.com>
(cherry picked from commit 89ac1949eaa1524e4e2bbd2ad8c8b6513ae594dd)
Signed-off-by: Christopher Braga <cbraga@codeaurora.org>
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
This commit is contained in:
Adrian Salido
2019-07-08 09:34:20 -07:00
committed by Lakshmi Narayana Kalavala
parent 216abbf9fa
commit 1bb14cd806
2 changed files with 15 additions and 26 deletions

View File

@@ -135,37 +135,22 @@ TRACE_EVENT(sde_encoder_underrun,
); );
TRACE_EVENT(tracing_mark_write, TRACE_EVENT(tracing_mark_write,
TP_PROTO(int pid, const char *name, bool trace_begin), TP_PROTO(char trace_type, int pid, const char *name, int value),
TP_ARGS(pid, name, trace_begin), TP_ARGS(trace_type, pid, name, value),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(char, trace_type)
__field(int, pid) __field(int, pid)
__string(trace_name, name) __string(trace_name, name)
__field(bool, trace_begin)
),
TP_fast_assign(
__entry->pid = pid;
__assign_str(trace_name, name);
__entry->trace_begin = trace_begin;
),
TP_printk("%s|%d|%s", __entry->trace_begin ? "B" : "E",
__entry->pid, __get_str(trace_name))
)
TRACE_EVENT(sde_trace_counter,
TP_PROTO(int pid, char *name, int value),
TP_ARGS(pid, name, value),
TP_STRUCT__entry(
__field(int, pid)
__string(counter_name, name)
__field(int, value) __field(int, value)
), ),
TP_fast_assign( TP_fast_assign(
__entry->pid = current->tgid; __entry->trace_type = trace_type;
__assign_str(counter_name, name); __entry->pid = pid;
__assign_str(trace_name, name);
__entry->value = value; __entry->value = value;
), ),
TP_printk("%d|%s|%d", __entry->pid, TP_printk("%c|%d|%s|%d", __entry->trace_type,
__get_str(counter_name), __entry->value) __entry->pid, __get_str(trace_name), __entry->value)
) )
#define SDE_TRACE_EVTLOG_SIZE 15 #define SDE_TRACE_EVTLOG_SIZE 15
@@ -415,12 +400,14 @@ TRACE_EVENT(sde_perf_uidle_status,
) )
); );
#define SDE_ATRACE_END(name) trace_tracing_mark_write(current->tgid, name, 0) #define SDE_ATRACE_END(name) \
#define SDE_ATRACE_BEGIN(name) trace_tracing_mark_write(current->tgid, name, 1) trace_tracing_mark_write('E', current->tgid, name, 0)
#define SDE_ATRACE_BEGIN(name) \
trace_tracing_mark_write('B', current->tgid, name, 0)
#define SDE_ATRACE_FUNC() SDE_ATRACE_BEGIN(__func__) #define SDE_ATRACE_FUNC() SDE_ATRACE_BEGIN(__func__)
#define SDE_ATRACE_INT(name, value) \ #define SDE_ATRACE_INT(name, value) \
trace_sde_trace_counter(current->tgid, name, value) trace_tracing_mark_write('C', current->tgid, name, value)
#endif /* _SDE_TRACE_H_ */ #endif /* _SDE_TRACE_H_ */

View File

@@ -22,6 +22,7 @@
#include <drm/drm_irq.h> #include <drm/drm_irq.h>
#include "sde_rsc_priv.h" #include "sde_rsc_priv.h"
#include "sde_dbg.h" #include "sde_dbg.h"
#include "sde_trace.h"
#define SDE_RSC_DRV_DBG_NAME "sde_rsc_drv" #define SDE_RSC_DRV_DBG_NAME "sde_rsc_drv"
#define SDE_RSC_WRAPPER_DBG_NAME "sde_rsc_wrapper" #define SDE_RSC_WRAPPER_DBG_NAME "sde_rsc_wrapper"
@@ -871,6 +872,7 @@ int sde_rsc_client_state_update(struct sde_rsc_client *caller_client,
} }
pr_debug("state switch successfully complete: %d\n", state); pr_debug("state switch successfully complete: %d\n", state);
SDE_ATRACE_INT("rsc_state", state);
rsc->current_state = state; rsc->current_state = state;
SDE_EVT32(caller_client->id, caller_client->current_state, SDE_EVT32(caller_client->id, caller_client->current_state,
state, rsc->current_state, SDE_EVTLOG_FUNC_EXIT); state, rsc->current_state, SDE_EVTLOG_FUNC_EXIT);