Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp3383456ybx; Sun, 3 Nov 2019 17:37:28 -0800 (PST) X-Google-Smtp-Source: APXvYqzqCHfOQL1LOM88znDlBRBEU/gSJ0nLQIev5wNOSKUux17RGQXOGtA+fWSU0Gq0S+/rEubg X-Received: by 2002:a50:fc18:: with SMTP id i24mr26332794edr.42.1572831448038; Sun, 03 Nov 2019 17:37:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572831448; cv=none; d=google.com; s=arc-20160816; b=JvyNfXJPNjkcr8a8ZwXRk4CgUwMO7CpgNf5EOdVTze7SRrMShrVoh3NXDRrE4yGMZn ibP1vQxkyJLQ8gMqUD6Xe+ZpPtC0arlKcL9zEsC3OPZsZeiuOkXnzGq4nT3SjffB/WfU FTCnLy9lrUI7JXHhMOOq1BNztufYEskwyVr4tcOR2wqK2oo8hYtZN34bZC8dLVEHaZb0 mXNgzCHb27106NhPcH56v8JdQcRf0QNzFjebMUw9gQIebUHkmj7/DMpoq5POK6J7MmBP XL59r/mqaZ0YSUfZodoMg5rGGRQrM90lRWwJm1/sQTEBghoti1Mlww+Fo5LKQAES7xdp 6j9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:dkim-signature:dkim-signature; bh=DAW1S3B9D0CyyobtP+D5/0ppFFq9Uy/GWsPb45nLYGc=; b=T7V+R+MPV/2weNdG9RL1wW1+JVTt4P685xjECaWz09FxLbuBTD6nrCPi//QV18HYi0 OqAMYRzf3XDtSfqD98DdOxm83h6K9fLUKtvcUNvDn1Smk8vt3YgA4dTWawtrRIz+v7d/ A7EmDd3SG8fd0VBhO90DZ3QIoISeDMHJVrmDLmsKqTAvtt4Y+e48KJuTiBgus9juTst2 NX5Z2CNqU1DlOnMWebdHSRjx0xDVts3u1w61ZI7gvDEy8LtIF0CSLE/e+1h9zuJ+s8Re PgDmVPzJRI+ZE4EZOZbTVKSybQHHy0OxxTtkRHJNYVfpcjP7fvs4E67pZ0N2VAd+swdo 3KSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=XadaUhc4; dkim=pass header.i=@codeaurora.org header.s=default header.b=bu2omNz8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p22si9142817eja.204.2019.11.03.17.37.05; Sun, 03 Nov 2019 17:37:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=XadaUhc4; dkim=pass header.i=@codeaurora.org header.s=default header.b=bu2omNz8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728454AbfKDBgY (ORCPT + 99 others); Sun, 3 Nov 2019 20:36:24 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:43442 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728288AbfKDBgX (ORCPT ); Sun, 3 Nov 2019 20:36:23 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 67A6860F61; Mon, 4 Nov 2019 01:36:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572831383; bh=836Jc857UfXfWP4BPIMMn9j23njKiaDe8BLCZ1+/Llw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XadaUhc4uTks096YHsm0/VGYty4+awPyv4qqY/PsnwVIBctCvxD3pwvQ9FlVGWNft 9DhCOOZeYNlEJyCGLSocX+XPh8TPyU175/VWNE4nc8KA7BO8ZISP/r+OBiwoTQaUDz Z72fSorSeYzrHJuEzH62BS+KtpWHU5XfPiaGDWVU= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_INVALID,DKIM_SIGNED,SPF_NONE autolearn=no autolearn_force=no version=3.4.0 Received: from pacamara-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: cang@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id A7A2D60EE3; Mon, 4 Nov 2019 01:36:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572831382; bh=836Jc857UfXfWP4BPIMMn9j23njKiaDe8BLCZ1+/Llw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bu2omNz8BwYXW5c7sXwHV9yUwjClfAn0uxYmtitsRPAebszMqWJaKVkTNPT5pKhdW J0pD1Iq+HddaY9XKQxEvk9HmCzr2CR4HbEMbpCQq9y2sDKKY4nRqZ5317MDLjHTsv3 4PecI9+IC6R56r1rSoI6u2Ad+GjMxZcieAJt9mZ0= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org A7A2D60EE3 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=cang@codeaurora.org From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, rnayak@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, saravanak@google.com, salyzyn@google.com, cang@codeaurora.org Cc: Alim Akhtar , Avri Altman , Pedro Sousa , "James E.J. Bottomley" , "Martin K. Petersen" , Stanley Chu , Bean Huo , Tomas Winkler , Venkat Gopalakrishnan , Subhash Jadavani , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 3/7] scsi: ufs: Fix up auto hibern8 enablement Date: Sun, 3 Nov 2019 17:35:58 -0800 Message-Id: <1572831362-22779-4-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1572831362-22779-1-git-send-email-cang@codeaurora.org> References: <1572831362-22779-1-git-send-email-cang@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fix up possible unclocked register access to auto hibern8 register in resume path and through sysfs entry. Meanwhile, enable auto hibern8 only after device is fully initialized in probe path. Signed-off-by: Can Guo --- drivers/scsi/ufs/ufs-sysfs.c | 5 ++++- drivers/scsi/ufs/ufshcd.c | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index 969a36b..de124f4 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -129,8 +129,11 @@ static void ufshcd_auto_hibern8_update(struct ufs_hba *hba, u32 ahit) if (hba->ahit == ahit) goto out_unlock; hba->ahit = ahit; - if (!pm_runtime_suspended(hba->dev)) + if (!pm_runtime_suspended(hba->dev)) { + ufshcd_hold(hba, false); ufshcd_writel(hba, hba->ahit, REG_AUTO_HIBERNATE_IDLE_TIMER); + ufshcd_release(hba); + } out_unlock: spin_unlock_irqrestore(hba->host->host_lock, flags); } diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 525f8e6..f12f5a7 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -6892,9 +6892,6 @@ static int ufshcd_probe_hba(struct ufs_hba *hba) /* UniPro link is active now */ ufshcd_set_link_active(hba); - /* Enable Auto-Hibernate if configured */ - ufshcd_auto_hibern8_enable(hba); - ret = ufshcd_verify_dev_init(hba); if (ret) goto out; @@ -6945,6 +6942,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba) /* set the state as operational after switching to desired gear */ hba->ufshcd_state = UFSHCD_STATE_OPERATIONAL; + /* Enable Auto-Hibernate if configured */ + ufshcd_auto_hibern8_enable(hba); + /* * If we are in error handling context or in power management callbacks * context, no need to scan the host @@ -7962,12 +7962,12 @@ static int ufshcd_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op) if (hba->clk_scaling.is_allowed) ufshcd_resume_clkscaling(hba); - /* Schedule clock gating in case of no access to UFS device yet */ - ufshcd_release(hba); - /* Enable Auto-Hibernate if configured */ ufshcd_auto_hibern8_enable(hba); + /* Schedule clock gating in case of no access to UFS device yet */ + ufshcd_release(hba); + goto out; set_old_link_state: -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project