From patchwork Mon Jun 21 16:16:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 464520 Delivered-To: patch@linaro.org Received: by 2002:a05:6638:102:0:0:0:0 with SMTP id x2csp2738034jao; Mon, 21 Jun 2021 09:16:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwTdxUo6L8p+LSj6UtH6V/tzik2OOkyFY0/7eABxHyXr7S87g9jGEqT1aqJGZU9pLsQK28v X-Received: by 2002:a17:907:1611:: with SMTP id hb17mr12383981ejc.450.1624292197296; Mon, 21 Jun 2021 09:16:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624292197; cv=none; d=google.com; s=arc-20160816; b=MuJq6SJmwcqla4SgzMK1bSMZrR08COZqAXmi8PQcvguDqpQROWFqBAAVq5hFoN1RXJ 9b7Q3vuUcZRJhewEq/STmgXMRdEAnSoGk68wdy9zoSyDjOkIuGZO5LY8q3H8G8zPQxqE N4o0QVvDw4JikyfAz17nxEuo5Opc5TJCIebVCtXAH/vCMszIrMtM2cThZM5SY3sFmJMp eqPN/LFOiUbFWwuOSy8cWhWkPBQ+b08Jq7BsaddheRzbWVoXgDxvtIM1HDCAPwiFdWRS 8LYNMujixQpe4gzgVTMunCPwKMioyYrYoZ8aO4B2GIqqw3jFejTHoY8NxnZ2lhYBP0cj wrZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=LL5t3H80yxVqcOP2FCE0oHwI5menyXESZwHRdH8Og6c=; b=wesW70vvOIPz1HXmRo1FHDlw4HjTDoufERgdNFfF8v8x6fBdVd/Cv2MEeEj/iV5Isy 7vOR4vQTiPhUvQdcbCZFlTarHLEfBwUY5dX0MTJ+AZ91uObDiX2/N1X8s+c8PQaYYpzv LsrCfdr9IQ1lqeBvb0+d+DRq+YuINWbbGsAGQgc96yFi1ihq9tfRxOn4g+JcC09fwmkL wqs/+8Do3FuYj+YMPRWXLsRZBe50EwOHC9kpXwwkA2cHNN6PLoAZNMs5jyj+YgYvQsPk UmWQ5Lrmu6tmLDjnZzn8RcibFHKVbZYudwDGa9b7q4VUSjatQxOs4qZHWAzeiYcSqjRI Qh3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dxFfFblI; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g2si12616428edb.593.2021.06.21.09.16.37; Mon, 21 Jun 2021 09:16:37 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=@linaro.org header.s=google header.b=dxFfFblI; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230290AbhFUQSt (ORCPT + 12 others); Mon, 21 Jun 2021 12:18:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230056AbhFUQSs (ORCPT ); Mon, 21 Jun 2021 12:18:48 -0400 Received: from mail-pg1-x52c.google.com (mail-pg1-x52c.google.com [IPv6:2607:f8b0:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2080C061574 for ; Mon, 21 Jun 2021 09:16:34 -0700 (PDT) Received: by mail-pg1-x52c.google.com with SMTP id v7so14576440pgl.2 for ; Mon, 21 Jun 2021 09:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LL5t3H80yxVqcOP2FCE0oHwI5menyXESZwHRdH8Og6c=; b=dxFfFblIQ6U/Rla6caaO+KOyc4wsi6jn+qr1Embb7mlr3z+aaC9Kjnh0DPT9prslHT lxcfdQII69wpZqDMOk05ocxRuVS8dZSflAY5zXeFtNCcms4dWQuzw3I8CGe+XhLnBt1t NgK1KWB4p2/FqR9f05xWn7MF3atfzMzY4Tny6EmlPXuSThWtfSphb4IaXZt7Ff3Jr5ke pdfOtEd1flvVDonA6tbtEa4IU+w3KqWZguSuTpyPyXKZgV7zeURCL1dyzkXeofWCkpiD 8ota8+jOf52NXwsWNPBnssKu5XqoBaLTOjd9WUjBW6IeDi/59VKhwluD1RFftzCzz1M4 BsAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LL5t3H80yxVqcOP2FCE0oHwI5menyXESZwHRdH8Og6c=; b=uPkALHnDiGEUxPgBqx87s1cSTFF6TQcR8V7Ibc6ESfura9PwxlJ6RmfaMl+v+2mDY+ jCWBXPgD0jt7VCSqposy2OCh1VrgJZ7DZwhchW11e16/mno+dmPk781wx71tqqJl0yVk sSf2FK99jd4VzO6hC0JVtzjODJRScoragekQCN8VO1qMu0r2qoHgU9AcUeSgQ5fHirQ3 7MI/6+N3ccxAqXVfSsjWmidgKfGNWU6mFUOMEBo3qNgLd4B9HA2P9VSHUixwNSdfBb6o vGg+jMq2NkllLiqBbeDtfHTWrWdXyMs69WdPDqr0d5ejeGfLehk0I4z3ka24L3jcYtsj s3Cg== X-Gm-Message-State: AOAM530z/V6VjDWz6VryjCB2U3aB8CfjbSl2PhZq38QSX+5YpJd8VM8N ykRVkjYADV23ONjtFKNqdmYv X-Received: by 2002:a63:5553:: with SMTP id f19mr24178169pgm.419.1624292194215; Mon, 21 Jun 2021 09:16:34 -0700 (PDT) Received: from localhost.localdomain ([120.138.13.116]) by smtp.gmail.com with ESMTPSA id k88sm10734730pjk.15.2021.06.21.09.16.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 09:16:33 -0700 (PDT) From: Manivannan Sadhasivam To: gregkh@linuxfoundation.org Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, stable@vger.kernel.org, Manivannan Sadhasivam , Jeffrey Hugo Subject: [PATCH 1/8] bus: mhi: core: Validate channel ID when processing command completions Date: Mon, 21 Jun 2021 21:46:09 +0530 Message-Id: <20210621161616.77524-2-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> References: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Bhaumik Bhatt MHI reads the channel ID from the event ring element sent by the device which can be any value between 0 and 255. In order to prevent any out of bound accesses, add a check against the maximum number of channels supported by the controller and those channels not configured yet so as to skip processing of that event ring element. Cc: stable@vger.kernel.org Fixes: 1d3173a3bae7 ("bus: mhi: core: Add support for processing events from client device") Signed-off-by: Bhaumik Bhatt Reviewed-by: Hemant Kumar Reviewed-by: Manivannan Sadhasivam Reviewed-by: Jeffrey Hugo Link: https://lore.kernel.org/r/1619481538-4435-1-git-send-email-bbhatt@codeaurora.org Signed-off-by: Manivannan Sadhasivam --- drivers/bus/mhi/core/main.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) -- 2.25.1 diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c index 22acde118bc3..ed07421c4870 100644 --- a/drivers/bus/mhi/core/main.c +++ b/drivers/bus/mhi/core/main.c @@ -773,11 +773,16 @@ static void mhi_process_cmd_completion(struct mhi_controller *mhi_cntrl, cmd_pkt = mhi_to_virtual(mhi_ring, ptr); chan = MHI_TRE_GET_CMD_CHID(cmd_pkt); - mhi_chan = &mhi_cntrl->mhi_chan[chan]; - write_lock_bh(&mhi_chan->lock); - mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre); - complete(&mhi_chan->completion); - write_unlock_bh(&mhi_chan->lock); + WARN_ON(chan >= mhi_cntrl->max_chan); + + if (chan < mhi_cntrl->max_chan && + mhi_cntrl->mhi_chan[chan].configured) { + mhi_chan = &mhi_cntrl->mhi_chan[chan]; + write_lock_bh(&mhi_chan->lock); + mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre); + complete(&mhi_chan->completion); + write_unlock_bh(&mhi_chan->lock); + } mhi_del_ring_element(mhi_cntrl, mhi_ring); } From patchwork Mon Jun 21 16:16:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 464521 Delivered-To: patch@linaro.org Received: by 2002:a05:6638:102:0:0:0:0 with SMTP id x2csp2738085jao; Mon, 21 Jun 2021 09:16:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwp7OpDjpz530KNVSxOM9aJB6NzhpPZMmAx6jSeol5YLgxShpzj84ITT3ApS7gGDwrSSeoH X-Received: by 2002:a05:6402:1911:: with SMTP id e17mr22596981edz.62.1624292200702; Mon, 21 Jun 2021 09:16:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624292200; cv=none; d=google.com; s=arc-20160816; b=anz0m7X5Ayhzv4znJRIv5zSy5cQMIZ3utKObFHn9XL41YIneNBfHAQs7y4TMPLhYtD w2io5qnCZTCTFYzeBYGVzOsD/Oj+WbTqGDPbr3GVdhdH9hw1vRQa07woo0SHRdC6TmJQ EA0CtNnhxPsCc8hmS4tgidk474k8Wo+6BeEw0CM4gIIFYqtK7tJma/yM5Rh86oR0SQXZ Xtb+vk2AxG4h2aIymh2oi2eIsaQ9HuKZLJeohovTi6n4xFbDCUSxEY7KAyiEzdvqqd2E 2a5A1Pa17nIuc/mnUoRSSVp02YMd+b/XlL+ewI3/1D5YMPDPKnyPBQmRtFnJDJfXBHko 2+xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=N7LBMmECFFSW8LKo0Z6mYB/q0IYHCWA9jmYx2xIVnOU=; b=FAdeBbfqamsDADMK9qQpaBmpefCf/C3laDqDoGkCbW4mEYdwoQ5BnKAQxPX+KcDvmr JIoxEa+9WNPcj4CSgBC5XnzozKf6+JeEhCKTTgv52lJABdskbhH3XXlvUbH6OK0lVuVs I+ERWxdJWf9JbiMvfg1Uo2YiC4lZwomADW2nar+DCLUNkFnb/qSWI4EQmCZpYxGC2+JX rznX4Ka4WrOdxjhxMULbjqqsBlGykQ+hvi4q7wK2LT1V1QuW1zB5v8t2Ixt2siEKkfgh /7xDrm5LFdpxS8fnyJhoJlKtYSEZEXd+XhyAJqWcClBdCpkMRRWBtuOGmN1Xeygu7GAD 6Khw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="icEvD/Xm"; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g2si12616428edb.593.2021.06.21.09.16.40; Mon, 21 Jun 2021 09:16:40 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=@linaro.org header.s=google header.b="icEvD/Xm"; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230327AbhFUQSx (ORCPT + 12 others); Mon, 21 Jun 2021 12:18:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55154 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230304AbhFUQSx (ORCPT ); Mon, 21 Jun 2021 12:18:53 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E71CC061766 for ; Mon, 21 Jun 2021 09:16:38 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id m15-20020a17090a5a4fb029016f385ffad0so335543pji.0 for ; Mon, 21 Jun 2021 09:16:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N7LBMmECFFSW8LKo0Z6mYB/q0IYHCWA9jmYx2xIVnOU=; b=icEvD/Xm7mIt2f74nwT+ZHu6MKsdzMyLiVsH7dBywgGt8gTcMIft6SRt3H0EWEzaFK 24fdKXB8XJcvHl6pfLkga+21EVBdM253Y6PlVZBDKFk5Ou1y3N8pofFg6Zys5PN3P2bo mFl+03t20ExY5k1jfzwgCZlZgPOPaLv5R5Gl7+Rf/IOZgZhgMidbfvwBhabA/W0ZCz5r uL6AIAmHmrfSe8siqZbzO4iYo3OYgmWY1XNOpRbp94bI4papIVrg2f5J/gZGLNmnavUB HwcSU1sz5Hj+fbb30rmduyqP/fiFrVw73EHS/5qXGzZjFXEMClMLMFTZLAPs9gdVdXwz pv+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N7LBMmECFFSW8LKo0Z6mYB/q0IYHCWA9jmYx2xIVnOU=; b=Ooyq+D6p3cIidpEtaSoLoF70REDIh+lwhdS3k8QfYT0tkV0ToUYCdjKI9kPW/bU+70 afzHy8X4QeynrmUywpWBZYBerjxIxm/mVVh25IV2QSSljfSphTcnN+9+jdS42482fxCP 7xEmac2bPF+c0kf/ycfPrRQvt0Ro+kWDrengOA+eH2dAPyT8MK28dganrrsAE/dqsijO ZD6tA/iNbRnInxZl9teh6rdkHgyABfrF4U6obYC0vtArr9hF1YSMZFwHKDtwvEq5eEPj DWHuBkRAG+/SToT1xlPLFI+5LyFVK19bJEw5lmyHi2VRP+mldytoK6BlnS+mWfwViXeK PRyg== X-Gm-Message-State: AOAM530U3e4JwKCGYK1Tu3rV4dwmZWo5GTbAB8xSkSAWHiwe2MVH5k36 MD3zL7WKJW8Mlp38yEy7KHQT X-Received: by 2002:a17:902:a70c:b029:118:7b47:e5bf with SMTP id w12-20020a170902a70cb02901187b47e5bfmr18726450plq.9.1624292197969; Mon, 21 Jun 2021 09:16:37 -0700 (PDT) Received: from localhost.localdomain ([120.138.13.116]) by smtp.gmail.com with ESMTPSA id k88sm10734730pjk.15.2021.06.21.09.16.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 09:16:37 -0700 (PDT) From: Manivannan Sadhasivam To: gregkh@linuxfoundation.org Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, stable@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 2/8] bus: mhi: core: Fix power down latency Date: Mon, 21 Jun 2021 21:46:10 +0530 Message-Id: <20210621161616.77524-3-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> References: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Loic Poulain On graceful power-down/disable transition, when an MHI reset is performed, the MHI device loses its context, including interrupt configuration. However, the current implementation is waiting for event(irq) driven state change to confirm reset has been completed, which never happens, and causes reset timeout, leading to unexpected high latency of the mhi_power_down procedure (up to 45 seconds). Fix that by moving to the recently introduced poll_reg_field method, waiting for the reset bit to be cleared, in the same way as the power_on procedure. Cc: stable@vger.kernel.org Fixes: a6e2e3522f29 ("bus: mhi: core: Add support for PM state transitions") Signed-off-by: Loic Poulain Reviewed-by: Bhaumik Bhatt Reviewed-by: Manivannan Sadhasivam Reviewed-by: Hemant Kumar Link: https://lore.kernel.org/r/1620029090-8975-1-git-send-email-loic.poulain@linaro.org Signed-off-by: Manivannan Sadhasivam --- drivers/bus/mhi/core/pm.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) -- 2.25.1 diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c index e2e59a341fef..704a5e225097 100644 --- a/drivers/bus/mhi/core/pm.c +++ b/drivers/bus/mhi/core/pm.c @@ -465,23 +465,15 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl) /* Trigger MHI RESET so that the device will not access host memory */ if (!MHI_PM_IN_FATAL_STATE(mhi_cntrl->pm_state)) { - u32 in_reset = -1; - unsigned long timeout = msecs_to_jiffies(mhi_cntrl->timeout_ms); - dev_dbg(dev, "Triggering MHI Reset in device\n"); mhi_set_mhi_state(mhi_cntrl, MHI_STATE_RESET); /* Wait for the reset bit to be cleared by the device */ - ret = wait_event_timeout(mhi_cntrl->state_event, - mhi_read_reg_field(mhi_cntrl, - mhi_cntrl->regs, - MHICTRL, - MHICTRL_RESET_MASK, - MHICTRL_RESET_SHIFT, - &in_reset) || - !in_reset, timeout); - if (!ret || in_reset) - dev_err(dev, "Device failed to exit MHI Reset state\n"); + ret = mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL, + MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 0, + 25000); + if (ret) + dev_err(dev, "Device failed to clear MHI Reset\n"); /* * Device will clear BHI_INTVEC as a part of RESET processing, From patchwork Mon Jun 21 16:16:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 465139 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 374CEC48BC2 for ; Mon, 21 Jun 2021 16:16:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1B79861261 for ; Mon, 21 Jun 2021 16:16:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230296AbhFUQTA (ORCPT ); Mon, 21 Jun 2021 12:19:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230379AbhFUQS4 (ORCPT ); Mon, 21 Jun 2021 12:18:56 -0400 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CC43C061767 for ; Mon, 21 Jun 2021 09:16:42 -0700 (PDT) Received: by mail-pl1-x634.google.com with SMTP id f10so6717661plg.0 for ; Mon, 21 Jun 2021 09:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VPrk83BZDsAH7WUMF1d2R72wMyUpeMl+U7nePSbVVRA=; b=huDSOvIlbSyFl9E2MCyw66RCSWecg0r7QPcTGiCt0NK4S7jvku4/XR+MTXiBUCzC5D XGj4uCnF5BujyrWbUXka34ykWiTdvqr9WO/vJBeUwh75OJ+aS1ROoNYCDs4a+U2YfPZz 2UqLN2zEd3Kozrmu/p0Lv0stjUyEGF77QmierNm8sgt3GAr6bCLnV9NODBT62uwVnU4w J4I/ibufHSE8yw90Eri1Rpz7iXTXnBIvoXpWR+Kh107IAHREzrxjzPxvjtIXPsMoXtCW KTpWsvnxx9+AXULJBY8gPv2ElINNGF1V/Oevr7pu2gA4A17hGafpqUwhtCTYnm5OtH+g e+TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VPrk83BZDsAH7WUMF1d2R72wMyUpeMl+U7nePSbVVRA=; b=FkwJfbIeymBftGcRvPX4K2mrL6Bea1Hz+DJXatVyrOmEAWifFW8GXbDkGq6fHzxA4C +B7q5xNrzjhJ08mdKsiXr4BehLo6b5+FNxG3thzipfTV3GLItQ1/xui7P67LdGYlRd7V qnOg4a44M2dkj7bgr/dmkzmiUc4QF6lLRG45fV77AV+VfnKWzVxIL2WGhH6a5sMcdmnw o4jta2oTyXgySmzBoJYKWm79OlEeWmuAxL/2O7oegzNeXzc/7on0+Dim0rkUBpia1845 jH+6bjC19zRF143xtE9InKKETgGLe7vofowXYf0E30KSuNJ6l/LE66iHMbECLkHJ4Wim vAyQ== X-Gm-Message-State: AOAM533uF0zzd1GZ2XUHEq9Iuj0KpAfvJapAB5M23cQekaIMV5wx8ZBN P8QJl5sQxr4LgcJTSj7++gAV X-Google-Smtp-Source: ABdhPJwGz3BRSZL+r+HThpxcq72wbUjc7FO3g6EMwm0YD9d2NABfB6OWr5M5R9yMSW/nwTuZydG6rQ== X-Received: by 2002:a17:90a:8c4:: with SMTP id 4mr38123055pjn.82.1624292202003; Mon, 21 Jun 2021 09:16:42 -0700 (PDT) Received: from localhost.localdomain ([120.138.13.116]) by smtp.gmail.com with ESMTPSA id k88sm10734730pjk.15.2021.06.21.09.16.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 09:16:41 -0700 (PDT) From: Manivannan Sadhasivam To: gregkh@linuxfoundation.org Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, Baochen Qiang , stable@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 3/8] bus: mhi: Wait for M2 state during system resume Date: Mon, 21 Jun 2021 21:46:11 +0530 Message-Id: <20210621161616.77524-4-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> References: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Baochen Qiang During system resume, MHI host triggers M3->M0 transition and then waits for target device to enter M0 state. Once done, the device queues a state change event into ctrl event ring and notifies MHI host by raising an interrupt, where a tasklet is scheduled to process this event. In most cases, the tasklet is served timely and wait operation succeeds. However, there are cases where CPU is busy and cannot serve this tasklet for some time. Once delay goes long enough, the device moves itself to M1 state and also interrupts MHI host after inserting a new state change event to ctrl ring. Later when CPU finally has time to process the ring, there will be two events: 1. For M3->M0 event, which is the first event to be processed queued first. The tasklet handler serves the event, updates device state to M0 and wakes up the task. 2. For M0->M1 event, which is processed later, the tasklet handler triggers M1->M2 transition and updates device state to M2 directly, then wakes up the MHI host (if it is still sleeping on this wait queue). Note that although MHI host has been woken up while processing the first event, it may still has no chance to run before the second event is processed. In other words, MHI host has to keep waiting till timeout causing the M0 state to be missed. kernel log here: ... Apr 15 01:45:14 test-NUC8i7HVK kernel: [ 4247.911251] mhi 0000:06:00.0: Entered with PM state: M3, MHI state: M3 Apr 15 01:45:14 test-NUC8i7HVK kernel: [ 4247.917762] mhi 0000:06:00.0: State change event to state: M0 Apr 15 01:45:14 test-NUC8i7HVK kernel: [ 4247.917767] mhi 0000:06:00.0: State change event to state: M1 Apr 15 01:45:14 test-NUC8i7HVK kernel: [ 4338.788231] mhi 0000:06:00.0: Did not enter M0 state, MHI state: M2, PM state: M2 ... Fix this issue by simply adding M2 as a valid state for resume. Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1 Cc: stable@vger.kernel.org Fixes: 0c6b20a1d720 ("bus: mhi: core: Add support for MHI suspend and resume") Signed-off-by: Baochen Qiang Reviewed-by: Hemant Kumar Reviewed-by: Manivannan Sadhasivam Link: https://lore.kernel.org/r/20210524040312.14409-1-bqiang@codeaurora.org [mani: slightly massaged the commit message] Signed-off-by: Manivannan Sadhasivam --- drivers/bus/mhi/core/pm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c index 704a5e225097..bbf6cd04861e 100644 --- a/drivers/bus/mhi/core/pm.c +++ b/drivers/bus/mhi/core/pm.c @@ -926,6 +926,7 @@ int mhi_pm_resume(struct mhi_controller *mhi_cntrl) ret = wait_event_timeout(mhi_cntrl->state_event, mhi_cntrl->dev_state == MHI_STATE_M0 || + mhi_cntrl->dev_state == MHI_STATE_M2 || MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state), msecs_to_jiffies(mhi_cntrl->timeout_ms)); From patchwork Mon Jun 21 16:16:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 464524 Delivered-To: patch@linaro.org Received: by 2002:a05:6638:102:0:0:0:0 with SMTP id x2csp2738394jao; Mon, 21 Jun 2021 09:16:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwmzAtFumskTlmagCirlO7Cndp6Q7k7gXxRbgzwoSNN2cr1c75AdGs5BLHH0urHZCNYcTa+ X-Received: by 2002:aa7:d853:: with SMTP id f19mr22518659eds.1.1624292219215; Mon, 21 Jun 2021 09:16:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624292219; cv=none; d=google.com; s=arc-20160816; b=GWtNjl0jrurA+BPZroqNkFvM2twIEGd3fglrW43qye/rqAC5SS1mgduYuS52fff7iV AwYG6ZoWd/bnKwZyQi97/mdqdtmKPFEb+FD0FzgU1rKgntlpkUlkEiX+QaH5pmceMjvk HNooIEzY18OxolvXv/v4GxCF7W9Kx9lYifWOYJLRbR0SsVSJXRuGDvi5fJMxU192HVKp dbjaapE/T6tCsADXKCaN6B3P+9MzHtmwCAyE4wDU6NfrGwAfV+gJUaUMQcUxH70Rw1d1 7q1mt6DAN4IWdXD3H60zJNZXDAO6bxixfTHSGkvWTJVO0eFpr36GB9Jg7jebCr8VIcZU ZWbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=l7439q0QWn/sG+k50g0pQMNG6HMcUnXDSIhGmcRTE7w=; b=XzBncOgnl/N/d03qTtbyVSSHDYqBF6psiU/VpthzIDyMWAvV4Ed86HmJ6Eldf11/Tn RQRVr8Xxi+OICKbxiqop5TR1lKdPdqLdTFBx0CkUznGPpBCy5N8XJeZ7Ywrcojr+2OBm IFBUbLyhXjpQ+bUsEwqR/Pb9FqYfRx3WIXenmLfLxQ4vZyevYY+EYALFAmui9JJqZUfz v+ZEvlCXMyQyReIkhIKej33N1omZzu99FBFXCC9ESk8QOwLMcusKoCOLQ+476KiP4jyO YVTUGMdjGc6mfw6KauJsB0jMKUSGtdHXFzNVMcCPFZ/Is9EV4hwDuOLYpwHaARq98e7q 7iGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=blOPIW+F; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m13si18028443edr.209.2021.06.21.09.16.58; Mon, 21 Jun 2021 09:16:59 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=@linaro.org header.s=google header.b=blOPIW+F; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230409AbhFUQTG (ORCPT + 12 others); Mon, 21 Jun 2021 12:19:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230415AbhFUQTE (ORCPT ); Mon, 21 Jun 2021 12:19:04 -0400 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6CF6C061768 for ; Mon, 21 Jun 2021 09:16:50 -0700 (PDT) Received: by mail-pl1-x62f.google.com with SMTP id b3so1195668plg.2 for ; Mon, 21 Jun 2021 09:16:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=l7439q0QWn/sG+k50g0pQMNG6HMcUnXDSIhGmcRTE7w=; b=blOPIW+F55KF4vlpfyGyUepsN7A0d5NO8oKuJvzEvkFQKPLB/wz89k1Uy9pv5Ov7NX 1Vca/9nHQ0HGQoUfEBhap5lLqp20Ich8fjBocMBFaUryg2XxjR5NpYYJCXIfOq0Mlw+n n1gPtq9LCIwX4MMTF1JC/3Zbbakwdf80LI44fR0VG3m5/Hgt1K4sf2oV2WED+68fOSUu mfmXXUUmqzBiyS3DWi5xe7icBCDdd+ClhD9rqXqCMBaxYRUHM+VgJHiVw/ykrUAZsBUk kljweNsyb0taSE18dIllx4T8oLqEA8ZHKUuWz4naFGsi4bKnJxlITD9JNVhks2QZLwIQ jbVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=l7439q0QWn/sG+k50g0pQMNG6HMcUnXDSIhGmcRTE7w=; b=e7rTpDemzg6UaakO26zFt9UQi6M5Y4tnCj9j6vu0fRokagneDn++7NYA0kMwM5s7VR H32bLrCfpxLPfSMYdFFYUECo3mJV7RptpYCcpz8i0hIE99iIOkNJ6NzjN9gN7xq1zrex purFLeV9G4wrdZ2Ea7wASrbkNqRCSrEp3YqERTNQNo0V0Ceo6IIDmFN184vpDkOnzNAR tIrfp6KYqGMVxAEe1pQFR5X8IYUVOeaXUgqzKitxP8YEcMP544BSg70EmIwClZsK0Axq pamP6KxdAeh9EDf1rx+H07BBc1xHWI/N07k9lbwajaJ10LLcbZal3nTFe02ZU7+RVSzN 6EYA== X-Gm-Message-State: AOAM533/bV7Mvk81kmmsjMfibwwuhOWPOWIlM+7BFwVOFy2YuBQXBuKy xxf1DDt2xAd/2k3dH3eBdhNG X-Received: by 2002:a17:90b:3886:: with SMTP id mu6mr14319816pjb.112.1624292210136; Mon, 21 Jun 2021 09:16:50 -0700 (PDT) Received: from localhost.localdomain ([120.138.13.116]) by smtp.gmail.com with ESMTPSA id k88sm10734730pjk.15.2021.06.21.09.16.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 09:16:49 -0700 (PDT) From: Manivannan Sadhasivam To: gregkh@linuxfoundation.org Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, Christophe JAILLET , stable@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 5/8] bus: mhi: pci-generic: Add missing 'pci_disable_pcie_error_reporting()' calls Date: Mon, 21 Jun 2021 21:46:13 +0530 Message-Id: <20210621161616.77524-6-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> References: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Christophe JAILLET If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it must be undone by a corresponding 'pci_disable_pcie_error_reporting()' call Add the missing call in the error handling path of the probe and in the remove function. Cc: Fixes: b012ee6bfe2a ("mhi: pci_generic: Add PCI error handlers") Signed-off-by: Christophe JAILLET Reviewed-by: Manivannan Sadhasivam Link: https://lore.kernel.org/r/f70c14701f4922d67e717633c91b6c481b59f298.1623445348.git.christophe.jaillet@wanadoo.fr Signed-off-by: Manivannan Sadhasivam --- drivers/bus/mhi/pci_generic.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -- 2.25.1 diff --git a/drivers/bus/mhi/pci_generic.c b/drivers/bus/mhi/pci_generic.c index 7c810f02a2ef..d84b74396c6a 100644 --- a/drivers/bus/mhi/pci_generic.c +++ b/drivers/bus/mhi/pci_generic.c @@ -665,7 +665,7 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) err = mhi_register_controller(mhi_cntrl, mhi_cntrl_config); if (err) - return err; + goto err_disable_reporting; /* MHI bus does not power up the controller by default */ err = mhi_prepare_for_power_up(mhi_cntrl); @@ -699,6 +699,8 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) mhi_unprepare_after_power_down(mhi_cntrl); err_unregister: mhi_unregister_controller(mhi_cntrl); +err_disable_reporting: + pci_disable_pcie_error_reporting(pdev); return err; } @@ -721,6 +723,7 @@ static void mhi_pci_remove(struct pci_dev *pdev) pm_runtime_get_noresume(&pdev->dev); mhi_unregister_controller(mhi_cntrl); + pci_disable_pcie_error_reporting(pdev); } static void mhi_pci_shutdown(struct pci_dev *pdev) From patchwork Mon Jun 21 16:16:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 464526 Delivered-To: patch@linaro.org Received: by 2002:a05:6638:102:0:0:0:0 with SMTP id x2csp2738470jao; Mon, 21 Jun 2021 09:17:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxkMzXGl3VNVZbqhsUzKdN/O4+xF+Ii6bm5aqGOX4xBtuAL5ru0jfr3qObtIN0mckqB4be6 X-Received: by 2002:a05:6402:402:: with SMTP id q2mr22039496edv.239.1624292223454; Mon, 21 Jun 2021 09:17:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624292223; cv=none; d=google.com; s=arc-20160816; b=lyMA8E9nL2tWOtM9SqhGYWM+KHe40dvY/MoAc9hWWAtUfWIYaA4GisDMWe7qb6atBP zCoEfjO2iBnUrCqc4vWKOfM+x48kjvgBUIWz6PhYdYgKN8m2BPra2YLfVlvNSSAIa5NC eB1cjpu7VCg/LUlNmmPt+ajLyPWnWA93kGS/r+Vtwr43Wj5pPbZsLfy0QFNYEQmsQQpC nUy/hH2oQeKxH7eQNOPE327+qaLJBnC7+IBlO7y/Ngq2AytiXlL9NaS90Y4+RHszMS8q MJZQExbt2irh2bPmM3hoqvdtDWKyfO2NETlS3ToWNYq5VHm3NAovq9kbTR3GU43ub2vD eclg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RTHZO4ku4j5vDvD/bzt1UBNEgDqw9PSCh2QcJgfEprc=; b=Xe/+1+c93EyvS1RJE9NMwFa7sQZIe9/4Fc1bHsqRBvCT/HMsLJgUNGN9jp7v1XKJR1 o6giLAX5WiCXFwXR3ygzNav8rxVH/nma+HUKHQ/QwS7CQsU355txVmmmwo6uUxoL8ZsM vxnIJloVKj7us7QlIoa3T/3lK+BgbFaXDpKTr/gi1c+HWnHlwOEoACJiATKi6ybSR2Ei h4KuI0BV24+IN7pQvPVQtBlqa5eR2euGNiE12T588jfp2y4ThSdZGCO07KIYg3WV/EN4 Oj2Ox2c5sLBHQbH2jUbjR7vHdXyl8sagYc1aO8uVhzHmQ2cE3tDs/VdYCkbKlPkqPCMO PqOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=xRbg6j4k; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m13si18028443edr.209.2021.06.21.09.17.03; Mon, 21 Jun 2021 09:17:03 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-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=@linaro.org header.s=google header.b=xRbg6j4k; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230325AbhFUQTO (ORCPT + 12 others); Mon, 21 Jun 2021 12:19:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230454AbhFUQTN (ORCPT ); Mon, 21 Jun 2021 12:19:13 -0400 Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 174AFC061574 for ; Mon, 21 Jun 2021 09:16:58 -0700 (PDT) Received: by mail-pg1-x535.google.com with SMTP id t13so2765615pgu.11 for ; Mon, 21 Jun 2021 09:16:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RTHZO4ku4j5vDvD/bzt1UBNEgDqw9PSCh2QcJgfEprc=; b=xRbg6j4kh1I6iFqd35sh2Ji+qOCOySFPrihg0LzUvR2WU8l2qcc4J4V4Nss0y7Y3uY y2Q82B1ij+6s8QYIbGu5iFXv2MXEnJM++xON+qdtKlVzSWQzNuAlvbaQHncWU6/Kn1rb Ee8RGzJd6+Hh6/Xe0ntM0Wu/rzUnyXtBTr6tt7yaycQRLz658p5AonwH2xvR8G5y0TZe HwvzyDEuvv8UPdqLVDmVKKIzqTjKkgyMFOIaFZPIf7KoRyKGvH1T39sc96YTQU1Rsi3F kkzcxcKjRBZtGlpzI3hRnuYrtNEELAf+GkXYyIF9GGAwbkjUeaBtE7XVIw02/ciCpF1i abGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RTHZO4ku4j5vDvD/bzt1UBNEgDqw9PSCh2QcJgfEprc=; b=KWyzlM21nRHf2XnT6SWtN505bgr/fHvQSX+iW+fOKL91AqLCYYhT8qY/zo+Oa5qw+D 2LmD3C4fEgvTqH+uRZ9kf6pK1I1gQcLZTavQYi+I9AY2URD+G8qVhXgYTc+DaS1J2eGC JlMjYdeMO4AAHIvNJWVb1HidgfXdZKrorpk9NNIZoQ7JY/ffrB1TOSilrbRzgk5s1xGm 2ZamE3H4F2Y+EcWVr/DyCbn64Wq8An7PvGfYKUxL27i/KDbcXakCBoy3MHDNBfrS460S KVClCekM7hiyy5RZPadxeCQc67owFubwphlcb17uSks8za+v1F8+vnTQuwGLov8YiCg2 zG6g== X-Gm-Message-State: AOAM530nr8NI0rix8fUBlLs07dVBPy8KbzUjHDMlLNpsWaHHXz9/RwkJ Rt1mDIzVFNLpHis5zdtyhyby X-Received: by 2002:a05:6a00:1983:b029:2fe:bc09:3042 with SMTP id d3-20020a056a001983b02902febc093042mr20630098pfl.72.1624292217533; Mon, 21 Jun 2021 09:16:57 -0700 (PDT) Received: from localhost.localdomain ([120.138.13.116]) by smtp.gmail.com with ESMTPSA id k88sm10734730pjk.15.2021.06.21.09.16.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 09:16:56 -0700 (PDT) From: Manivannan Sadhasivam To: gregkh@linuxfoundation.org Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, loic.poulain@linaro.org, stable@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH 7/8] bus: mhi: pci_generic: Apply no-op for wake using sideband wake boolean Date: Mon, 21 Jun 2021 21:46:15 +0530 Message-Id: <20210621161616.77524-8-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> References: <20210621161616.77524-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Bhaumik Bhatt Devices such as SDX24 do not have the provision for inband wake doorbell in the form of channel 127 and instead have a sideband GPIO for it. Newer devices such as SDX55 or SDX65 support inband wake method by default. Ensure the functionality is used based on this such that device wake stays held when a client driver uses mhi_device_get() API or the equivalent debugfs entry. Cc: stable@vger.kernel.org Fixes: e3e5e6508fc1 ("bus: mhi: pci_generic: No-Op for device_wake operations") Signed-off-by: Bhaumik Bhatt Reviewed-by: Manivannan Sadhasivam Link: https://lore.kernel.org/r/1624053302-22470-1-git-send-email-bbhatt@codeaurora.org Signed-off-by: Manivannan Sadhasivam --- drivers/bus/mhi/pci_generic.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) -- 2.25.1 diff --git a/drivers/bus/mhi/pci_generic.c b/drivers/bus/mhi/pci_generic.c index d84b74396c6a..eb9263bd1bd8 100644 --- a/drivers/bus/mhi/pci_generic.c +++ b/drivers/bus/mhi/pci_generic.c @@ -32,6 +32,8 @@ * @edl: emergency download mode firmware path (if any) * @bar_num: PCI base address register to use for MHI MMIO register space * @dma_data_width: DMA transfer word size (32 or 64 bits) + * @sideband_wake: Devices using dedicated sideband GPIO for wakeup instead + * of inband wake support (such as sdx24) */ struct mhi_pci_dev_info { const struct mhi_controller_config *config; @@ -40,6 +42,7 @@ struct mhi_pci_dev_info { const char *edl; unsigned int bar_num; unsigned int dma_data_width; + bool sideband_wake; }; #define MHI_CHANNEL_CONFIG_UL(ch_num, ch_name, el_count, ev_ring) \ @@ -242,7 +245,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = { .edl = "qcom/sdx65m/edl.mbn", .config = &modem_qcom_v1_mhiv_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = false }; static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = { @@ -251,7 +255,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx55_info = { .edl = "qcom/sdx55m/edl.mbn", .config = &modem_qcom_v1_mhiv_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = false }; static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = { @@ -259,7 +264,8 @@ static const struct mhi_pci_dev_info mhi_qcom_sdx24_info = { .edl = "qcom/prog_firehose_sdx24.mbn", .config = &modem_qcom_v1_mhiv_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = true }; static const struct mhi_channel_config mhi_quectel_em1xx_channels[] = { @@ -301,7 +307,8 @@ static const struct mhi_pci_dev_info mhi_quectel_em1xx_info = { .edl = "qcom/prog_firehose_sdx24.mbn", .config = &modem_quectel_em1xx_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = true }; static const struct mhi_channel_config mhi_foxconn_sdx55_channels[] = { @@ -339,7 +346,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = { .edl = "qcom/sdx55m/edl.mbn", .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, - .dma_data_width = 32 + .dma_data_width = 32, + .sideband_wake = false }; static const struct pci_device_id mhi_pci_id_table[] = { @@ -640,9 +648,12 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) mhi_cntrl->status_cb = mhi_pci_status_cb; mhi_cntrl->runtime_get = mhi_pci_runtime_get; mhi_cntrl->runtime_put = mhi_pci_runtime_put; - mhi_cntrl->wake_get = mhi_pci_wake_get_nop; - mhi_cntrl->wake_put = mhi_pci_wake_put_nop; - mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop; + + if (info->sideband_wake) { + mhi_cntrl->wake_get = mhi_pci_wake_get_nop; + mhi_cntrl->wake_put = mhi_pci_wake_put_nop; + mhi_cntrl->wake_toggle = mhi_pci_wake_toggle_nop; + } err = mhi_pci_claim(mhi_cntrl, info->bar_num, DMA_BIT_MASK(info->dma_data_width)); if (err)