Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7c7bd0d4 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: msm: sde: avoid using spinlock for register log"

parents aa52bf2d 6b4a148d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -156,11 +156,10 @@ struct sde_dbg_reglog {
	u32 first;
	u32 last;
	u32 last_dump;
	u32 curr;
	atomic64_t curr;
	u32 next;
	u32 enable;
	u32 enable_mask;
	spinlock_t spin_lock;
};

extern struct sde_dbg_reglog *sde_dbg_base_reglog;
+4 −9
Original line number Diff line number Diff line
@@ -103,27 +103,22 @@ void sde_evtlog_log(struct sde_dbg_evtlog *evtlog, const char *name, int line,

void sde_reglog_log(u8 blk_id, u32 val, u32 addr)
{
	unsigned long flags;
	struct sde_dbg_reglog_log *log;
	struct sde_dbg_reglog *reglog = sde_dbg_base_reglog;
	int index;

	if (!reglog)
		return;

	spin_lock_irqsave(&reglog->spin_lock, flags);

	log = &reglog->logs[reglog->curr];
	index = abs(atomic64_inc_return(&reglog->curr) % SDE_REGLOG_ENTRY);

	log = &reglog->logs[index];
	log->blk_id = blk_id;
	log->val = val;
	log->addr = addr;
	log->time = local_clock();
	log->pid = current->pid;

	reglog->curr = (reglog->curr + 1) % SDE_REGLOG_ENTRY;
	reglog->last++;

	spin_unlock_irqrestore(&reglog->spin_lock, flags);
}

/* always dump the last entries which are not dumped yet */
@@ -244,7 +239,7 @@ struct sde_dbg_reglog *sde_reglog_init(void)
	if (!reglog)
		return ERR_PTR(-ENOMEM);

	spin_lock_init(&reglog->spin_lock);
	atomic64_set(&reglog->curr, 0);

	return reglog;
}