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>
这个提交包含在:
Samantha Tran
2021-07-02 09:48:43 -07:00
父节点 dec0bb3812
当前提交 ae94f07d6e
修改 3 个文件,包含 8 行新增15 行删除

查看文件

@@ -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;