Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp83854pxu; Wed, 2 Dec 2020 15:46:33 -0800 (PST) X-Google-Smtp-Source: ABdhPJxfUFxyjwnAMSEWI/DGkWbFGluBntBFugQVZ7MKcGvv82UBJI1M9g7wKe/JzH4/nYmPsGuq X-Received: by 2002:a50:bf4a:: with SMTP id g10mr422552edk.288.1606952793446; Wed, 02 Dec 2020 15:46:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606952793; cv=none; d=google.com; s=arc-20160816; b=MgZra7ZYDsvUo/Eo41kTsznN3yPI3KMS5fAkTASKwDq15t29Rl4q4X4WUfvgEnMm33 iZs1/8LKwLehrQbgOOOVmhqYykAY6qwCU+V3rAnoZW9aqXKzVUfJ5RGSykOPiiiZRyll SG5LXhm1BZ3L7xAQ8IpHJtON6qFtU2zqUjwJH/4/wOA7LM29LOc/65SxKYCeNPrrHS6Q 8FQ1Sb+8wEEbDwa4WEJ+nJ4IRJh+r48C3merhPZodyIxcfWL7irMrpEJt7kz478aAKIw rwm3Pfs7OtXC/4XuXn9AYzsrXSPTJsprzQ5Y3FRhuGaBGYlDERtDbXBZxsuPQt8Wj8Ms O4qw== 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=DZXaikanm41KFQVGUsB6LrRiWWff5TixI1kkjmw4uWc=; b=kl/iSPwmb7KtOVK2t85IkG5xMMKciy7ST/obOD6+M2vohQkrgiykcyV5/3JedP3y1J I3wkbahEhFvaapPtRaww+yvRkfp9eU/B3npZmawpXVbpEXQZie5crxUrfUGb1jPFSJx8 P9JXdfLtsbm2k+e/LlSYwdz6TEVwCB9u/9BlcCeUeGkBQNQXbcJBXgXwQukyG/u4w+G3 MeBnIemaf1P6ajehy906GCb0Nm/WJ9VolkQn89vJs7DidXHqX5zPY5BW5hDGazgfVSfl aG6hO9NhG7HXM6NtaHW1kuRPoMtULRF0Y9yOcrGa9xfE1L/DDrUPNctSjpv2ann9RB/+ wVKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=QYd631Hc; 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 g15si80645ejx.708.2020.12.02.15.46.10; Wed, 02 Dec 2020 15:46:33 -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=QYd631Hc; 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 S2387595AbgLBXmK (ORCPT + 99 others); Wed, 2 Dec 2020 18:42:10 -0500 Received: from m42-5.mailgun.net ([69.72.42.5]:14789 "EHLO m42-5.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387539AbgLBXmK (ORCPT ); Wed, 2 Dec 2020 18:42:10 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1606952511; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=DZXaikanm41KFQVGUsB6LrRiWWff5TixI1kkjmw4uWc=; b=QYd631HcKGHSl2UKOI/lrsXFNBmjAw8F6miIupRX9I9P6ArEed2nxzSzn15jqp+x7l8cxaP/ mTmzYA8qWZ5r97y+f7QhqxVE+M7kcYwTHd+EBgGLdMb//EdsNRQvWSmcaVAnLyEQylipeFj6 Eylao8f+c7XBnL443QNBT3lRefM= X-Mailgun-Sending-Ip: 69.72.42.5 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-n03.prod.us-west-2.postgun.com with SMTP id 5fc826048d03b22a5a679b99 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 02 Dec 2020 23:40:52 GMT Sender: bbhatt=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 2AAACC43464; Wed, 2 Dec 2020 23:40:52 +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 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 53A66C433ED; Wed, 2 Dec 2020 23:40:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 53A66C433ED 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, hemantk@codeaurora.org Cc: linux-arm-msm@vger.kernel.org, loic.poulain@linaro.org, jhugo@codeaurora.org, linux-kernel@vger.kernel.org, Bhaumik Bhatt Subject: [PATCH v3 5/7] bus: mhi: core: Check execution environment for channel before issuing reset Date: Wed, 2 Dec 2020 15:40:36 -0800 Message-Id: <1606952438-15321-6-git-send-email-bbhatt@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1606952438-15321-1-git-send-email-bbhatt@codeaurora.org> References: <1606952438-15321-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. Signed-off-by: Bhaumik Bhatt --- drivers/bus/mhi/core/main.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c index 2e4b34a..40d15ef 100644 --- a/drivers/bus/mhi/core/main.c +++ b/drivers/bus/mhi/core/main.c @@ -1320,11 +1320,24 @@ static void __mhi_unprepare_channel(struct mhi_controller *mhi_cntrl, /* no more processing events for this channel */ mutex_lock(&mhi_chan->mutex); + if (!(BIT(mhi_cntrl->ee) & mhi_chan->ee_mask)) { + dev_err(dev, + "Current EE: %s Required EE Mask: 0x%x for chan: %s\n", + TO_MHI_EXEC_STR(mhi_cntrl->ee), mhi_chan->ee_mask, + mhi_chan->name); + goto exit_unprepare_channel; + } + ret = mhi_update_channel_state(mhi_cntrl, mhi_chan, MHI_CH_STATE_TYPE_RESET); if (ret) dev_err(dev, "Failed to reset channel, still resetting\n"); +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