From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bjorn Andersson Subject: Re: [PATCH] rpmsg: qcom_smd: Access APCS through mailbox framework Date: Wed, 6 Dec 2017 11:02:32 -0800 Message-ID: <20171206190232.GR28761@minitux> References: <20171116070842.6362-1-bjorn.andersson@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mail-pf0-f174.google.com ([209.85.192.174]:44433 "EHLO mail-pf0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751718AbdLFTCg (ORCPT ); Wed, 6 Dec 2017 14:02:36 -0500 Received: by mail-pf0-f174.google.com with SMTP id m26so2708749pfj.11 for ; Wed, 06 Dec 2017 11:02:36 -0800 (PST) Content-Disposition: inline In-Reply-To: Sender: linux-arm-msm-owner@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org To: Jitendra Sharma Cc: Ohad Ben-Cohen , linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org On Wed 06 Dec 04:08 PST 2017, Jitendra Sharma wrote: > Hi Bjorn, > Hi Jitendra, > On 11/16/2017 12:38 PM, Bjorn Andersson wrote: [..] > > @@ -365,7 +371,12 @@ static void qcom_smd_signal_channel(struct qcom_smd_channel *channel) > > { > > struct qcom_smd_edge *edge = channel->edge; > > - regmap_write(edge->ipc_regmap, edge->ipc_offset, BIT(edge->ipc_bit)); > > + if (edge->mbox_chan) { > > + mbox_send_message(edge->mbox_chan, NULL); > mbox_send_message could fail. So return value should be checked qcom_apcs_ipc_send_data() can't fail, so the case when mbox_send_message() would fail is if more than MBOX_TX_QUEUE_LEN (20) callers that has managed to put their data in the queue but not yet execute msg_submit(). As each bit in the APCS IPC register is modelled as it's own mailbox channel this error case would mean that as mbox_send_message() returns with an error there will soon be 20 callers entering qcom_apcs_ipc_send_data() and trigger this very bit. When this happens mbox_send_message() will print an error in the log, so there's no point in having the caller also print an error. When it comes to dealing with a failing call to mbox_send_message() we have already posted the message in the FIFO, so we have no way to abort the transmission, as such the only way to deal with this is to either retry or ignore the problem; and the mailbox queue will ensure that we retry 20 times. Regards, Bjorn