|
@@ -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,
|
|
void sde_evtlog_log(struct sde_dbg_evtlog *evtlog, const char *name, int line,
|
|
int flag, ...)
|
|
int flag, ...)
|
|
{
|
|
{
|
|
- unsigned long flags;
|
|
|
|
int i, val = 0;
|
|
int i, val = 0;
|
|
va_list args;
|
|
va_list args;
|
|
struct sde_dbg_evtlog_log *log;
|
|
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;
|
|
return;
|
|
|
|
|
|
- if (!sde_evtlog_is_enabled(evtlog, flag))
|
|
|
|
- return;
|
|
|
|
-
|
|
|
|
- spin_lock_irqsave(&evtlog->spin_lock, flags);
|
|
|
|
|
|
+ index = abs(atomic_inc_return(&evtlog->curr) % SDE_EVTLOG_ENTRY);
|
|
|
|
|
|
- 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->time = local_clock();
|
|
log->name = name;
|
|
log->name = name;
|
|
log->line = line;
|
|
log->line = line;
|
|
@@ -93,12 +88,9 @@ void sde_evtlog_log(struct sde_dbg_evtlog *evtlog, const char *name, int line,
|
|
}
|
|
}
|
|
va_end(args);
|
|
va_end(args);
|
|
log->data_cnt = i;
|
|
log->data_cnt = i;
|
|
- evtlog->curr = (evtlog->curr + 1) % SDE_EVTLOG_ENTRY;
|
|
|
|
evtlog->last++;
|
|
evtlog->last++;
|
|
|
|
|
|
trace_sde_evtlog(name, line, log->data_cnt, log->data);
|
|
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)
|
|
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);
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
spin_lock_init(&evtlog->spin_lock);
|
|
spin_lock_init(&evtlog->spin_lock);
|
|
|
|
+ atomic_set(&evtlog->curr, 0);
|
|
evtlog->enable = SDE_EVTLOG_DEFAULT_ENABLE;
|
|
evtlog->enable = SDE_EVTLOG_DEFAULT_ENABLE;
|
|
evtlog->dump_mode = SDE_DBG_DEFAULT_DUMP_MODE;
|
|
evtlog->dump_mode = SDE_DBG_DEFAULT_DUMP_MODE;
|
|
|
|
|