disp: msm: avoid using spinlock while adding evtlog entry
Add support to use atomic variable instead of spinlog for event log while adding enries. This change will help optimize event log writing time. Change-Id: I83661b85cd76ca738729ac51aa5afd97d162508d Signed-off-by: Samantha Tran <samtran@codeaurora.org>
这个提交包含在:
@@ -58,23 +58,18 @@ bool sde_evtlog_is_enabled(struct sde_dbg_evtlog *evtlog, u32 flag)
|
||||
void sde_evtlog_log(struct sde_dbg_evtlog *evtlog, const char *name, int line,
|
||||
int flag, ...)
|
||||
{
|
||||
unsigned long flags;
|
||||
int i, val = 0;
|
||||
va_list args;
|
||||
struct sde_dbg_evtlog_log *log;
|
||||
u32 index;
|
||||
|
||||
if (!evtlog)
|
||||
if (!evtlog || !sde_evtlog_is_enabled(evtlog, flag) ||
|
||||
_sde_evtlog_is_filtered_no_lock(evtlog, name))
|
||||
return;
|
||||
|
||||
if (!sde_evtlog_is_enabled(evtlog, flag))
|
||||
return;
|
||||
index = abs(atomic_inc_return(&evtlog->curr) % SDE_EVTLOG_ENTRY);
|
||||
|
||||
spin_lock_irqsave(&evtlog->spin_lock, flags);
|
||||
|
||||
if (_sde_evtlog_is_filtered_no_lock(evtlog, name))
|
||||
goto exit;
|
||||
|
||||
log = &evtlog->logs[evtlog->curr];
|
||||
log = &evtlog->logs[index];
|
||||
log->time = local_clock();
|
||||
log->name = name;
|
||||
log->line = line;
|
||||
@@ -93,12 +88,9 @@ void sde_evtlog_log(struct sde_dbg_evtlog *evtlog, const char *name, int line,
|
||||
}
|
||||
va_end(args);
|
||||
log->data_cnt = i;
|
||||
evtlog->curr = (evtlog->curr + 1) % SDE_EVTLOG_ENTRY;
|
||||
evtlog->last++;
|
||||
|
||||
trace_sde_evtlog(name, line, log->data_cnt, log->data);
|
||||
exit:
|
||||
spin_unlock_irqrestore(&evtlog->spin_lock, flags);
|
||||
}
|
||||
|
||||
void sde_reglog_log(u8 blk_id, u32 val, u32 addr)
|
||||
@@ -224,6 +216,7 @@ struct sde_dbg_evtlog *sde_evtlog_init(void)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
spin_lock_init(&evtlog->spin_lock);
|
||||
atomic_set(&evtlog->curr, 0);
|
||||
evtlog->enable = SDE_EVTLOG_DEFAULT_ENABLE;
|
||||
evtlog->dump_mode = SDE_DBG_DEFAULT_DUMP_MODE;
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户