Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp261998ybx; Mon, 4 Nov 2019 20:01:28 -0800 (PST) X-Google-Smtp-Source: APXvYqwOFYWsi4PQ7ppZvA84fbxkJYCNKDwtcvRxjT+Gw3tx/9EZZW6GMYiDeYfD47pue3pa+4uM X-Received: by 2002:a17:906:958b:: with SMTP id r11mr9310461ejx.332.1572926488861; Mon, 04 Nov 2019 20:01:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572926488; cv=none; d=google.com; s=arc-20160816; b=IkSbA3/tiZDTTCDmXNdhI61F/OLW3b/v3C9sNjECwtizKVrZ2T+6o7AMSQTlp9jkj2 DXYBV8T+fs0e1nDH8jVsSoYMsanukPGeB1A4luIOrojq/bm3/mFmmk3vB5cgNMl7fbys WMhBUbW8O7IeuXhvcv1JquIQy9OCBCXko/+rW1LC/ZgZbvGvWspKiXj9JM0B0q80IfRE r99XHol8gTZY9ER2UwKHyaPTcqhRfa6vClpzcWKJKYyTEsnzQ8XgQ9uDL0ZYFCZsHGnf R5N1JS8+QtjzlOUWuZI8jb9feS3y/a0iJk+L5looOnnXqWhIk4yokH5klpgOEJJaUdqd PHpQ== 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=IUS/siexDWKYE8vvcFJA+n53fmS+aq+VQUXa/RYnAqk=; b=gRNF7Yo8PWTZM17mzUdh7eNECjKRJYn8tIvcEk6RLaSmEZc3mo3pCpW3TemDt3NWCB w7OOXlYBj8crtjqiIt+AFqCJ3QBRTtUTrbVMeRc9bcNxXcaNOxYAltuFk1Tr5cCovYFy Yl1tlEiW6CATLi9WRLxz37fN27ugjE4xT4iQtvxdIQNKtKvpAcFwKosrm7WHj5LpWROm O0niXFRoX3HSJts4/H1QabXqPEhIi12pSAhGiuFO5uH+KVCY4YKDDA5CMRhiUvfD93Kb CDc59I+JQkIxeiQnUpMCn6IO4+93F2MQSeryFz7hznJ1a7uPnHPJvAm7bZ8Aclmqm7rZ k1YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=F2jsnNgC; dkim=pass header.i=@codeaurora.org header.s=default header.b=aiCyrBeN; 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 r5si10686134edi.349.2019.11.04.20.01.05; Mon, 04 Nov 2019 20:01: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=F2jsnNgC; dkim=pass header.i=@codeaurora.org header.s=default header.b=aiCyrBeN; 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 S1730435AbfKEEAZ (ORCPT + 99 others); Mon, 4 Nov 2019 23:00:25 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:34308 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730017AbfKEEAY (ORCPT ); Mon, 4 Nov 2019 23:00:24 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id A675260EE2; Tue, 5 Nov 2019 04:00:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572926423; bh=9wd/SNKdJgzdMez2m/ydyczwe4kRopp2y+JbvFH5OOM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=F2jsnNgCvW/uXxGSgLqsI4M1m5Nfd8wxZRjzwSIGi8BmIVhKz0dRuG8gPKJo4O2Qo nZBx9fZN3kACPjYF3/kxwnp6U6CAFB3aOaTt8fiVcafFlBoOMawEmKn7sS/RNXvli/ 5g5RbDjsUhRrOqwZCeanSqLq4MwJQIz1kvYGfexg= 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 A80CA60E1C; Tue, 5 Nov 2019 04:00:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1572926422; bh=9wd/SNKdJgzdMez2m/ydyczwe4kRopp2y+JbvFH5OOM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aiCyrBeNG3rr5E/WgOeG87+BLV2jpDaF8YL/k0uZ5AfgFIglWc+g7FslB0prOhQUL PBmHwHbxTkIfiHAFEkhtzp379/8PbULbiQ9Z9XciJcahShVRF8dg7xym8G0b3jw5Aw Y1ZGODbwSwU1UyFzu6JWRsyINuoPckFYATd3xT10= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org A80CA60E1C 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" , Tomas Winkler , Stanley Chu , Bean Huo , Venkat Gopalakrishnan , Subhash Jadavani , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v3 3/7] scsi: ufs: Fix up auto hibern8 enablement Date: Mon, 4 Nov 2019 19:57:11 -0800 Message-Id: <1572926236-720-4-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1572926236-720-1-git-send-email-cang@codeaurora.org> References: <1572926236-720-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 | 17 +++++++++++------ drivers/scsi/ufs/ufshcd.c | 12 ++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index 969a36b..6c2f19e 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -126,13 +126,18 @@ static void ufshcd_auto_hibern8_update(struct ufs_hba *hba, u32 ahit) return; spin_lock_irqsave(hba->host->host_lock, flags); - if (hba->ahit == ahit) - goto out_unlock; - hba->ahit = ahit; - if (!pm_runtime_suspended(hba->dev)) - ufshcd_writel(hba, hba->ahit, REG_AUTO_HIBERNATE_IDLE_TIMER); -out_unlock: + if (hba->ahit != ahit) + hba->ahit = ahit; spin_unlock_irqrestore(hba->host->host_lock, flags); + if (!pm_runtime_suspended(hba->dev)) { + pm_runtime_get_sync(hba->dev); + ufshcd_hold(hba, false); + spin_lock_irqsave(hba->host->host_lock, flags); + ufshcd_writel(hba, hba->ahit, REG_AUTO_HIBERNATE_IDLE_TIMER); + spin_unlock_irqrestore(hba->host->host_lock, flags); + ufshcd_release(hba); + pm_runtime_put(hba->dev); + } } /* Convert Auto-Hibernate Idle Timer register value to microseconds */ 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