[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ZvQ2lnRO/dTyH1g3@hu-bjorande-lv.qualcomm.com>
Date: Wed, 25 Sep 2024 09:13:10 -0700
From: Bjorn Andersson <quic_bjorande@...cinc.com>
To: Deepak Kumar Singh <quic_deesin@...cinc.com>
CC: <andersson@...nel.org>, <quic_clew@...cinc.com>,
<mathieu.poirier@...aro.org>, <linux-kernel@...r.kernel.org>,
<quic_sarannya@...cinc.com>, <linux-arm-msm@...r.kernel.org>,
<linux-remoteproc@...r.kernel.org>, <stable@...r.kernel.org>
Subject: Re: [PATCH V2] rpmsg: glink: Add abort_tx check in intent wait
On Wed, Sep 25, 2024 at 12:53:28PM +0530, Deepak Kumar Singh wrote:
> From: Sarannya S <quic_sarannya@...cinc.com>
>
> On remote susbsystem restart rproc will stop glink subdev which will
"When stopping or restarting a remoteproc the glink subdev stop will
invoke qcom_glink_native_remove(). Any ..."
> trigger qcom_glink_native_remove, any ongoing intent wait should be
Please always have () on function names, to make clear they are indeed
functions.
s/intent wait/wait for intent request/
And I think "can" is a better word than "should" (we can abort the wait
to not waiting for the intents that aren't expected to come).
> aborted from there otherwise this wait delays glink send which potentially
> delays glink channel removal as well. This further introduces delay in ssr
> notification to other remote subsystems from rproc.
>
> Currently qcom_glink_native_remove is not setting channel->intent_received,
This observation is correct, but I don't see a reason why it should. So
express this in terms of the applicable logic (i.e. we have abort_tx to
signal this scenario already, let's use it)
> so any ongoing intent wait is not aborted on remote susbsystem restart.
> abort_tx flag can be used as a condition to abort in such cases.
>
> Adding abort_tx flag check in intent wait, to abort intent wait from
> qcom_glink_native_remove.
More () please.
>
> Fixes: c05dfce0b89e ("rpmsg: glink: Wait for intent, not just request ack")
> Cc: stable@...r.kernel.org
I don't think the current code is broken, just suboptimal. And as such I
don't think this is a bugfix.
Perhaps I'm missing some case here? Otherwise, please drop the Fixes and
Cc...
> Signed-off-by: Sarannya S <quic_sarannya@...cinc.com>
> Signed-off-by: Deepak Kumar Singh <quic_deesin@...cinc.com>
> ---
> drivers/rpmsg/qcom_glink_native.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
> index 82d460ff4777..ff828531c36f 100644
> --- a/drivers/rpmsg/qcom_glink_native.c
> +++ b/drivers/rpmsg/qcom_glink_native.c
> @@ -438,7 +438,6 @@ static void qcom_glink_handle_intent_req_ack(struct qcom_glink *glink,
>
> static void qcom_glink_intent_req_abort(struct glink_channel *channel)
> {
> - WRITE_ONCE(channel->intent_req_result, 0);
> wake_up_all(&channel->intent_req_wq);
> }
>
> @@ -1354,8 +1353,9 @@ static int qcom_glink_request_intent(struct qcom_glink *glink,
> goto unlock;
>
> ret = wait_event_timeout(channel->intent_req_wq,
> - READ_ONCE(channel->intent_req_result) >= 0 &&
> - READ_ONCE(channel->intent_received),
> + (READ_ONCE(channel->intent_req_result) >= 0 &&
> + READ_ONCE(channel->intent_received)) ||
> + glink->abort_tx,
This looks good. But Chris and I talked about his patches posted
yesterday, and it seems like a good idea to differentiate the cases of
aborted and granted = 0.
Chris' patch is fixing a real bug, so that should be backported, so
let's conclude that discussion (with this patch included or in mind).
Regards,
Bjorn
> 10 * HZ);
> if (!ret) {
> dev_err(glink->dev, "intent request timed out\n");
> --
> 2.34.1
>
Powered by blists - more mailing lists