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

Commit 9d099b50 authored by Chris Lew's avatar Chris Lew
Browse files

mailbox: msm_qmp: Enhance debug logging



There are an increasing amount of reports where the tx timeout is
being asserted. Add logging to mark the enter and exit of the qmp
worker thread in ipc logs to correlate with the rx interrupts.

Change-Id: Ie24ab7ac761b16abfeeef78bbb3907e781b6f79d
Signed-off-by: default avatarChris Lew <clew@codeaurora.org>
parent 8543fd31
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -215,6 +215,8 @@ struct qmp_device {
 */
static void send_irq(struct qmp_device *mdev)
{
	int ret;

	/*
	 * Any data associated with this event must be visable to the remote
	 * before the interrupt is triggered
@@ -222,8 +224,11 @@ static void send_irq(struct qmp_device *mdev)
	wmb();

	if (mdev->mbox_chan) {
		mbox_send_message(mdev->mbox_chan, NULL);
		ret = mbox_send_message(mdev->mbox_chan, NULL);
		mbox_client_txdone(mdev->mbox_chan, 0);

		if (ret < 0)
			QMP_ERR(mdev->ilc, "failed to trigger ipcc irq %d\n", ret);
	} else {
		writel_relaxed(mdev->irq_mask, mdev->tx_irq_reg);
	}
@@ -527,6 +532,7 @@ static irqreturn_t qmp_irq_handler(int irq, void *priv)

	kthread_queue_work(&mdev->kworker, &mdev->kwork);
	mdev->rx_irq_count++;
	QMP_INFO(mdev->ilc, "Queued rx worker count:%d\n", mdev->rx_irq_count);

	return IRQ_HANDLED;
}
@@ -542,9 +548,12 @@ static void __qmp_rx_worker(struct qmp_mbox *mbox)
	struct qmp_device *mdev = mbox->mdev;
	unsigned long flags;

	QMP_INFO(mdev->ilc, "Enter rx worker state:%d\n", mbox->local_state);
	memcpy_fromio(&desc, mbox->desc, sizeof(desc));
	if (desc.magic != QMP_MAGIC)
	if (desc.magic != QMP_MAGIC) {
		QMP_ERR(mdev->ilc, "wrong magic 0x:%x\n", desc.magic);
		return;
	}

	mutex_lock(&mbox->state_lock);
	switch (mbox->local_state) {
@@ -660,6 +669,7 @@ static void __qmp_rx_worker(struct qmp_mbox *mbox)
	default:
		QMP_ERR(mdev->ilc, "Local Channel State corrupted\n");
	}
	QMP_INFO(mdev->ilc, "Exit rx worker state:%d\n", mbox->local_state);
	mutex_unlock(&mbox->state_lock);
}