Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1589849pxb; Thu, 4 Feb 2021 17:50:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJyRHWMbnHwSa3jJM5W5DTIUP/W6Vz5DGyzHyKqooQXRmo66ZnACVpso8/ZiIqPAB/diahyr X-Received: by 2002:a17:906:178d:: with SMTP id t13mr1770144eje.455.1612489805237; Thu, 04 Feb 2021 17:50:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612489805; cv=none; d=google.com; s=arc-20160816; b=SMWmWCtxn2KSoA8pCy7i/Ju2tyvgkWl3nQ7UpxaEQFth7ez/5ZVbyz5CtoRMbFMbFs KvxSTngB6hxI4Mlo71eH9IZCHnihe/QyklYSkp30CbZPF5e+6vruO4m+r3rjHV36alqP XwAJUWpwjBrUVNrTEbE3d7n2d8C8q4AIZATAvRoMRiRYDHjklt9GkI4rW/GV4VsjKyj5 lslHMyo8ZodGsDpnsSg26gmTCKJPOv0RMtlb+iqMROKbuZbL/bCAMvPBnd07IizpCRnT 8z9MTTg/FMkrcivFzIEN1ALKEyocowPKcYiECJsSGjogtY9tyfTuOzdBoN1ZBeiOolfv hGig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dmarc-filter:sender:dkim-signature; bh=tlu7PWAMGVt9HqTkQiUIvlC9WqfOxu6gg/Q4MJVA5eE=; b=GcjzDPlva0DwwsB3Z+MKGjMVfWuu1VU2Y2wZrJSPxdQrE6mpQL9IDnzFijPLI1ddv9 dH43/IFvP7v10D0f/p4CveTeuyPuUSS3P/GcXVbN9m3iOVktQ1hYDkFQh/c/Xwo3YO2x HlfGRg4eCynF/KbCNrkO02q50+0TRqELH0z3f1DJ18YTmUXlVgapdW7NqfQU1E/MzIAA hR9NjTCen8WVNnB9UTup+rX+POq9uk0Fg6Tb/HMuhkgAYdJoFbsl95w+u2gr9aoycmMS 18Y6QNkHxxYdKEOyH9eLmQT3f3Cpt4UIY+7LFh+oB+IyRBwfocWP2LY6A4SygufnN4A1 uKfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b="X/Dr8Via"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i4si4419427edg.119.2021.02.04.17.49.41; Thu, 04 Feb 2021 17:50:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b="X/Dr8Via"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240209AbhBDUdo (ORCPT + 99 others); Thu, 4 Feb 2021 15:33:44 -0500 Received: from so15.mailgun.net ([198.61.254.15]:64880 "EHLO so15.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240146AbhBDU3N (ORCPT ); Thu, 4 Feb 2021 15:29:13 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1612470534; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=tlu7PWAMGVt9HqTkQiUIvlC9WqfOxu6gg/Q4MJVA5eE=; b=X/Dr8ViaDa48K27ojQYKxHKFxZF93cXbBWMB3fEy22lrq7X4USCYLzQV2QKoHuHuFA6Eqefl F5Z2RHE3cxEBm5irzw+8tK1dFsg8JfvIorF5LLIQSwsfrEiNuINNB7BBJ/QSQAeAbBfcE6Ph hMyEHIkaPrfVDWfCEq20KGRTeXc= X-Mailgun-Sending-Ip: 198.61.254.15 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n06.prod.us-west-2.postgun.com with SMTP id 601c58e08e43a988b7525f80 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Thu, 04 Feb 2021 20:28:16 GMT Sender: bbhatt=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 9A992C43463; Thu, 4 Feb 2021 20:28:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from malabar-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: bbhatt) by smtp.codeaurora.org (Postfix) with ESMTPSA id D31D0C43464; Thu, 4 Feb 2021 20:28:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org D31D0C43464 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=bbhatt@codeaurora.org From: Bhaumik Bhatt To: manivannan.sadhasivam@linaro.org Cc: linux-arm-msm@vger.kernel.org, hemantk@codeaurora.org, jhugo@codeaurora.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, Bhaumik Bhatt Subject: [PATCH v6 5/8] bus: mhi: core: Check channel execution environment before issuing reset Date: Thu, 4 Feb 2021 12:28:03 -0800 Message-Id: <1612470486-10440-6-git-send-email-bbhatt@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1612470486-10440-1-git-send-email-bbhatt@codeaurora.org> References: <1612470486-10440-1-git-send-email-bbhatt@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A client can attempt to unprepare certain channels for transfer even after the execution environment they are supposed to run in has changed. In the event that happens, the device need not be notified of the reset and the host can proceed with clean up for the channel context and memory allocated for it on the host as the device will no longer be able to respond to such a request. Signed-off-by: Bhaumik Bhatt Reviewed-by: Hemant Kumar --- drivers/bus/mhi/core/main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c index 2f6fdb2..f511e3a 100644 --- a/drivers/bus/mhi/core/main.c +++ b/drivers/bus/mhi/core/main.c @@ -1283,6 +1283,12 @@ static void __mhi_unprepare_channel(struct mhi_controller *mhi_cntrl, mutex_lock(&mhi_chan->mutex); + if (!(BIT(mhi_cntrl->ee) & mhi_chan->ee_mask)) { + dev_dbg(dev, "Current EE: %s Required EE Mask: 0x%x\n", + TO_MHI_EXEC_STR(mhi_cntrl->ee), mhi_chan->ee_mask); + goto exit_unprepare_channel; + } + /* no more processing events for this channel */ ret = mhi_update_channel_state(mhi_cntrl, mhi_chan, MHI_CH_STATE_TYPE_RESET); @@ -1290,6 +1296,11 @@ static void __mhi_unprepare_channel(struct mhi_controller *mhi_cntrl, dev_err(dev, "%d: Failed to reset channel, still resetting\n", mhi_chan->chan); +exit_unprepare_channel: + write_lock_irq(&mhi_chan->lock); + mhi_chan->ch_state = MHI_CH_STATE_DISABLED; + write_unlock_irq(&mhi_chan->lock); + if (!mhi_chan->offload_ch) { mhi_reset_chan(mhi_cntrl, mhi_chan); mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project