Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4112910pxf; Tue, 16 Mar 2021 06:11:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyG7r48+6vBfUDw96XK1JjfXMzCcyzE+d/2TBDjzDSnDhF/mC8V3ufW58j/2ev2Sgo9Hx9Y X-Received: by 2002:a17:906:5d05:: with SMTP id g5mr29130221ejt.489.1615900259948; Tue, 16 Mar 2021 06:10:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615900259; cv=none; d=google.com; s=arc-20160816; b=zYThoBq9QKnsGnb/RFG6ArVUhUvwzo6TwiWMmM2GGOfOIWpZsGW7XvjyJwv26/Sjnk Oqm81gOoCpOysqMwJJt4keKgp/NnTblfz3rCl55jzrywm8m/1/rGl8Ux/IPGU8XGBsWK q65yQknLdaJFqjYeFilv04TjpxPs/0YQ9/mqS1c3Noo1fMizXjbuSAPAtI1rLzYDR9Cm 8WWcjHkWeQ5h8vDw2M0anbKVm7XaqYh/5f8ig46gKQKB3bPlYfE+P1Qvrx6ZHkyrp4YY vr4ePWaZs7RamAKa/zi+NpP7hFTWr0BrCIjGLRXFqv78uIVkEeUZViBen45kJlHsbgtr nyUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=sq0aKBuHdwW/nOfuOJWOVsVvDF01fsFJpD2nAbMcEpc=; b=ce1gtk93eW1bqSxrohuPZ2yyzqjPKYt3+ix//3WlTme4cp4H8+8R4I2d7VsvAk/Ehi fs+eIVZ1H9gqb8sZ9ZPNX+AC3F7lC5ExbRgMCHWSjuxcd/5JTy0Us5skCmARP8CJJryT ZMp3F0nYGdnLtdWiOwn8ZNrXMzfuoXdrIM0Uz96aLqEsHoJfbLX9sYeK8mXg1+BdTcvS lOwLfATrks0zqI9zYvwlciFhpLzKLXw4nWMBl79fjV9t/nyHub7DpkzrIEsgxZTFalmC IFVvTEUFmeLqG0frTK9GWM5YKcVnXFkS2Auw58GQfnWysfkGBZB/LmJDcby6skRtueUh 5eDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ipe1xG3i; 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; 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 gt40si3050965ejc.577.2021.03.16.06.10.37; Tue, 16 Mar 2021 06:10:59 -0700 (PDT) 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=@linaro.org header.s=google header.b=ipe1xG3i; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229838AbhCPGPG (ORCPT + 99 others); Tue, 16 Mar 2021 02:15:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230467AbhCPGOj (ORCPT ); Tue, 16 Mar 2021 02:14:39 -0400 Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com [IPv6:2607:f8b0:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C64CC061756 for ; Mon, 15 Mar 2021 23:14:39 -0700 (PDT) Received: by mail-pg1-x534.google.com with SMTP id v14so14990185pgq.2 for ; Mon, 15 Mar 2021 23:14:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=sq0aKBuHdwW/nOfuOJWOVsVvDF01fsFJpD2nAbMcEpc=; b=ipe1xG3iscsMJZsHqMMcXVPiil9KsEDf1dWlWVhKsFYA+fy+4x7j0K1bJEBd9nUzE0 PAv5gpEwZdyerwmrPYpX5lTrn10xVRLjq8DPk2zbU3xaJ2AglDi5JJrNioq80lU27oWD ohBTGvxHW10AL3BTbBQccJBhdLD18CyA89pOWpLra2pRZEYVFGJDZBb1ewwbderWwuQN AgEqs180pjV8CxC0/Rj+L6ihz+B0EnDSXg7cI3a6rsubfEgA96lVBTyizq+6MfMQaGDz Hcl6w6w/YVdjr0wikSAR9sRvItI7R6NuPsel4mmLm4CXwszLPRfG909wfqKeSMxhcRO5 88hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=sq0aKBuHdwW/nOfuOJWOVsVvDF01fsFJpD2nAbMcEpc=; b=Q6F2ommw8o7WPDm69Hucrtkc6cjl8/DLYUy06BTQ3qUutVZbJi0ZFvBgAFoZd4pMeT O6SVNzuQddUAk3u6+UGlKIcBAykpbC3lzuzxZuHLQgfe51lRl9NmR9c5Qc6tZk6wjJWN 9OUb7Q59Dktp7NbohuwREV5PG4ccYiFss8zpwFfZSQaeXAzW8y8YeC0I2KyCum/Uocnq wjTeXhl51Pa8PDFji1MHdXSaX7kQ40eYG2F3XS0+9Uvf0AKU6qjuMppBaMzA6UgkKUzn SWGPLlcvlTz5l1+VKktG5a0Ges4B4Cc4ZpuqOpNQg5aFmWlWRHEDk9Yk3aMUuWCPjjft Qp8g== X-Gm-Message-State: AOAM532RVQE85AnzBSMmnWbBeFWqs+MYccm+85wv0Q2JxVirpqrH6nML KzJ12wGdN1RLk9mC94ohTj1B X-Received: by 2002:a63:f558:: with SMTP id e24mr2600370pgk.153.1615875278492; Mon, 15 Mar 2021 23:14:38 -0700 (PDT) Received: from thinkpad ([103.66.79.72]) by smtp.gmail.com with ESMTPSA id v18sm16039362pfn.117.2021.03.15.23.14.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 23:14:37 -0700 (PDT) Date: Tue, 16 Mar 2021 11:44:33 +0530 From: Manivannan Sadhasivam To: Jeffrey Hugo Cc: hemantk@codeaurora.org, bbhatt@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 RESEND] bus: mhi: core: Wait for ready state after reset Message-ID: <20210316061433.GG1798@thinkpad> References: <1615408918-7242-1-git-send-email-jhugo@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1615408918-7242-1-git-send-email-jhugo@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 10, 2021 at 01:41:58PM -0700, Jeffrey Hugo wrote: > After the device has signaled the end of reset by clearing the reset bit, > it will automatically reinit MHI and the internal device structures. Once > That is done, the device will signal it has entered the ready state. > > Signaling the ready state involves sending an interrupt (MSI) to the host > which might cause IOMMU faults if it occurs at the wrong time. > > If the controller is being powered down, and possibly removed, then the > reset flow would only wait for the end of reset. At which point, the host > and device would start a race. The host may complete its reset work, and > remove the interrupt handler, which would cause the interrupt to be > disabled in the IOMMU. If that occurs before the device signals the ready > state, then the IOMMU will fault since it blocked an interrupt. While > harmless, the fault would appear like a serious issue has occurred so let's > silence it by making sure the device hits the ready state before the host > completes its reset processing. > > Signed-off-by: Jeffrey Hugo > --- > drivers/bus/mhi/core/pm.c | 17 ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c > index adb0e80..414da4f 100644 > --- a/drivers/bus/mhi/core/pm.c > +++ b/drivers/bus/mhi/core/pm.c > @@ -467,7 +467,7 @@ 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; > + u32 in_reset = -1, ready = 0; > unsigned long timeout = msecs_to_jiffies(mhi_cntrl->timeout_ms); > > dev_dbg(dev, "Triggering MHI Reset in device\n"); > @@ -490,6 +490,21 @@ static void mhi_pm_disable_transition(struct mhi_controller *mhi_cntrl) > * hence re-program it > */ > mhi_write_reg(mhi_cntrl, mhi_cntrl->bhi, BHI_INTVEC, 0); > + > + if (!MHI_IN_PBL(mhi_get_exec_env(mhi_cntrl))) { > + /* wait for ready to be set */ > + ret = wait_event_timeout(mhi_cntrl->state_event, > + mhi_read_reg_field(mhi_cntrl, > + mhi_cntrl->regs, > + MHISTATUS, > + MHISTATUS_READY_MASK, > + MHISTATUS_READY_SHIFT, > + &ready) > + || ready, timeout); > + if (!ret || !ready) > + dev_warn(dev, > + "Device failed to enter READY state\n"); Wouldn't dev_err be more appropriate here provided that we might get IOMMU fault anytime soon? Thanks, Mani > + } > } > > dev_dbg(dev, > -- > Qualcomm Technologies, Inc. is a member of the > Code Aurora Forum, a Linux Foundation Collaborative Project. >