From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752248AbdLFTCi (ORCPT ); Wed, 6 Dec 2017 14:02:38 -0500 Received: from mail-pf0-f180.google.com ([209.85.192.180]:43432 "EHLO mail-pf0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751208AbdLFTCg (ORCPT ); Wed, 6 Dec 2017 14:02:36 -0500 X-Google-Smtp-Source: AGs4zMbu9WHhAx9O5AIX/2BO+J4/jS/0p9BUUC8QE35QCGsLi1HALdKiMjr+7EHHuzCDl+6RFH9TFQ== Date: Wed, 6 Dec 2017 11:02:32 -0800 From: Bjorn Andersson To: Jitendra Sharma Cc: Ohad Ben-Cohen , linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: Re: [PATCH] rpmsg: qcom_smd: Access APCS through mailbox framework Message-ID: <20171206190232.GR28761@minitux> References: <20171116070842.6362-1-bjorn.andersson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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