Thread (17 messages) 17 messages, 3 authors, 2016-04-18

Re: [PATCH V4 3/6] slimbus: Add messaging APIs to slimbus framework

From: Mark Brown <broonie@kernel.org>
Date: 2016-03-05 12:43:24
Also in: linux-arm-msm, lkml

On Sat, Feb 06, 2016 at 11:44:22AM -0700, Sagar Dharia wrote:
+	spin_lock_irqsave(&ctrl->txn_lock, flags);
+	msg = ctrl->tid_tbl[tid];
+	if (msg == NULL || msg->rbuf == NULL) {
+		spin_unlock_irqrestore(&ctrl->txn_lock, flags);
+		dev_err(&ctrl->dev, "Got response to invalid TID:%d, len:%d\n",
+				tid, len);
+		return;
+	}
+	memcpy(msg->rbuf, reply, len);
+	ctrl->tid_tbl[tid] = NULL;
+	if (msg->comp_cb)
+		msg->comp_cb(msg->ctx, 0);
+	spin_unlock_irqrestore(&ctrl->txn_lock, flags);
Do we need to hold the lock for so long (especially with things like the
memcpy())?  As far as I can tell we only need the lock for this:
+	msg = ctrl->tid_tbl[tid];
+	ctrl->tid_tbl[tid] = NULL;
+	if (mc == SLIM_MSG_MC_REQUEST_CHANGE_VALUE ||
+		mc == SLIM_MSG_MC_CHANGE_VALUE ||
+		mc == SLIM_MSG_MC_REQUEST_CLEAR_INFORMATION ||
+		mc == SLIM_MSG_MC_CLEAR_INFORMATION)
+		txn->rl += msg->num_bytes;
A switch statement might be nicer here.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help