From patchwork Mon Apr 26 02:24:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Can Guo X-Patchwork-Id: 12223651 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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 24D2BC433B4 for ; Mon, 26 Apr 2021 02:26:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E3D9F60FE9 for ; Mon, 26 Apr 2021 02:26:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231608AbhDZC13 (ORCPT ); Sun, 25 Apr 2021 22:27:29 -0400 Received: from labrats.qualcomm.com ([199.106.110.90]:5466 "EHLO labrats.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231502AbhDZC13 (ORCPT ); Sun, 25 Apr 2021 22:27:29 -0400 IronPort-SDR: QarQzRzHI/dDDUu33b78cmZiTFVbXbXTRLJOSEKrDkAIdrrv9O/4XM+bN+g0qfO1qklQTQ9sMx 8cqYMx7RBoyzDswypWUfqF6HebCjevGXKjJ/+fWZOThXZ17wc8Fgjh9JhfIC+enavgU8d0PHnu /Uv1G4+T8eRSCJNxOgcex/oUeU0qAPj+eARXr/F/S7PM8A0p/Aie4a77xjwXUi1D4nItjXCFRn E9jBRG13edJ+AxAZi6AhQBy0UClukbR5SfzYDhnmoO0j2ncErQ3sDB/4HXxXWP4NIaXa21Jncb R4c= X-IronPort-AV: E=Sophos;i="5.82,251,1613462400"; d="scan'208";a="29759455" Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by labrats.qualcomm.com with ESMTP; 25 Apr 2021 19:26:48 -0700 X-QCInternal: smtphost Received: from stor-presley.qualcomm.com ([192.168.140.85]) by ironmsg04-sd.qualcomm.com with ESMTP; 25 Apr 2021 19:26:47 -0700 Received: by stor-presley.qualcomm.com (Postfix, from userid 359480) id ED4072113E; Sun, 25 Apr 2021 19:26:47 -0700 (PDT) From: Can Guo To: asutoshd@codeaurora.org, ziqichen@codeaurora.org, nguyenb@codeaurora.org, hongwus@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, cang@codeaurora.org Cc: Alim Akhtar , Avri Altman , "James E.J. Bottomley" , "Martin K. Petersen" , Stanley Chu , Bean Huo , Jaegeuk Kim , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v1 1/3] scsi: ufs: Do not put UFS power into LPM if link is broken Date: Sun, 25 Apr 2021 19:24:35 -0700 Message-Id: <1619403878-28330-2-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1619403878-28330-1-git-send-email-cang@codeaurora.org> References: <1619403878-28330-1-git-send-email-cang@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org During resume, if link is broken due to AH8 failure, make sure ufshcd_resume() do not put UFS power back into LPM. Fixes: 4db7a23605973 ("scsi: ufs: Fix concurrency of error handler and other error recovery paths") Signed-off-by: Can Guo --- drivers/scsi/ufs/ufshcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index a8c5bd9..7ab6b12 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -8666,7 +8666,7 @@ static void ufshcd_vreg_set_lpm(struct ufs_hba *hba) } else if (!ufshcd_is_ufs_dev_active(hba)) { ufshcd_toggle_vreg(hba->dev, hba->vreg_info.vcc, false); vcc_off = true; - if (!ufshcd_is_link_active(hba)) { + if (ufshcd_is_link_hibern8(hba) || ufshcd_is_link_off(hba)) { ufshcd_config_vreg_lpm(hba, hba->vreg_info.vccq); ufshcd_config_vreg_lpm(hba, hba->vreg_info.vccq2); } @@ -8688,7 +8688,7 @@ static int ufshcd_vreg_set_hpm(struct ufs_hba *hba) !hba->dev_info.is_lu_power_on_wp) { ret = ufshcd_setup_vreg(hba, true); } else if (!ufshcd_is_ufs_dev_active(hba)) { - if (!ret && !ufshcd_is_link_active(hba)) { + if (!ufshcd_is_link_active(hba)) { ret = ufshcd_config_vreg_hpm(hba, hba->vreg_info.vccq); if (ret) goto vcc_disable; From patchwork Mon Apr 26 02:24:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Can Guo X-Patchwork-Id: 12223653 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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 1DE7FC43460 for ; Mon, 26 Apr 2021 02:26:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EE1B860FE9 for ; Mon, 26 Apr 2021 02:26:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231707AbhDZC1e (ORCPT ); Sun, 25 Apr 2021 22:27:34 -0400 Received: from labrats.qualcomm.com ([199.106.110.90]:5466 "EHLO labrats.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231696AbhDZC1c (ORCPT ); Sun, 25 Apr 2021 22:27:32 -0400 IronPort-SDR: yZaRuUNy7jrssaWn9DzpOjEla7R3Q1WaxFMlQuT27KcrIfE7XR7SGjrZEjghMIagbLO623A2Ek n3UDYrlQfkarkvoAcv65KrPgLRy1kb16WGiNtfeOF5SnueIV71M4J4BB4ZE2aLjssRuxLXo2mH ZFKngTqD0oBYWuxoaxotswU9eEiE2Ydx2rdoqFOdVGNGePcFUibdmCReZtcWcxxxUz6ExopBOj 0vct5yJFasQpdsQxLkzP9+Ty9acx+UkDkTTfASfoTdqO90ViI+MH32wFZnYCWUpIrWx3Cjeuma 4KU= X-IronPort-AV: E=Sophos;i="5.82,251,1613462400"; d="scan'208";a="29759456" Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by labrats.qualcomm.com with ESMTP; 25 Apr 2021 19:26:52 -0700 X-QCInternal: smtphost Received: from stor-presley.qualcomm.com ([192.168.140.85]) by ironmsg04-sd.qualcomm.com with ESMTP; 25 Apr 2021 19:26:51 -0700 Received: by stor-presley.qualcomm.com (Postfix, from userid 359480) id A4B292113E; Sun, 25 Apr 2021 19:26:51 -0700 (PDT) From: Can Guo To: asutoshd@codeaurora.org, ziqichen@codeaurora.org, nguyenb@codeaurora.org, hongwus@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, cang@codeaurora.org Cc: Alim Akhtar , Avri Altman , "James E.J. Bottomley" , "Martin K. Petersen" , Stanley Chu , Bean Huo , Jaegeuk Kim , Chaotian Jing , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v1 2/3] scsi: ufs: Cancel rpm_dev_flush_recheck_work during system suspend Date: Sun, 25 Apr 2021 19:24:36 -0700 Message-Id: <1619403878-28330-3-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1619403878-28330-1-git-send-email-cang@codeaurora.org> References: <1619403878-28330-1-git-send-email-cang@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org During ufs system suspend, leaving rpm_dev_flush_recheck_work running or pending is risky, because concurrency may happen btw system suspend/resume and runtime resume routine. Fix it by cancelling rpm_dev_flush_recheck_work synchronously during system suspend. Fixes: 1d53864c3617f5235f891ca0fbe9347c4cd35d46 ("scsi: ufs: Fix possible power drain during system suspend") Signed-off-by: Can Guo --- drivers/scsi/ufs/ufshcd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 7ab6b12..090b654 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -9058,11 +9058,12 @@ int ufshcd_system_suspend(struct ufs_hba *hba) if (!hba->is_powered) return 0; + cancel_delayed_work_sync(&hba->rpm_dev_flush_recheck_work); + if ((ufs_get_pm_lvl_to_dev_pwr_mode(hba->spm_lvl) == hba->curr_dev_pwr_mode) && (ufs_get_pm_lvl_to_link_pwr_state(hba->spm_lvl) == - hba->uic_link_state) && - !hba->dev_info.b_rpm_dev_flush_capable) + hba->uic_link_state)) goto out; if (pm_runtime_suspended(hba->dev)) { From patchwork Mon Apr 26 02:24:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Can Guo X-Patchwork-Id: 12223655 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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 40E8CC433ED for ; Mon, 26 Apr 2021 02:27:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 24CB760FE9 for ; Mon, 26 Apr 2021 02:27:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231714AbhDZC1j (ORCPT ); Sun, 25 Apr 2021 22:27:39 -0400 Received: from labrats.qualcomm.com ([199.106.110.90]:5466 "EHLO labrats.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231717AbhDZC1g (ORCPT ); Sun, 25 Apr 2021 22:27:36 -0400 IronPort-SDR: LkIscuHhj8zitTHPBdEdjfpIpHOhhVaGsC5dBRfdyu7+BaVPgIdN77d3fn/zCI50I8xR239Y2D gpIhY0V6+0f0lex8WA0uBTQYfvwW+pL6zGWzxsg9pYRxVTK/ccWhTV1oruQSttm74seTqBKH0r gl/usqBH8kCR5mCm2x8BiJuLGRGiZ9v+j/ZgkCeVO//JzinbOzMzGeh3Lh7l8IF8AvUnnQ06Bx 0ARpk0ujJiR/Z1BVusMrijQ2W1lcJpb0o3RTe2B+cPXor0Kqs4Bjc+E0OGW8bl+muGZQ2ol9JL pX4= X-IronPort-AV: E=Sophos;i="5.82,251,1613462400"; d="scan'208";a="29759457" Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by labrats.qualcomm.com with ESMTP; 25 Apr 2021 19:26:56 -0700 X-QCInternal: smtphost Received: from stor-presley.qualcomm.com ([192.168.140.85]) by ironmsg-SD-alpha.qualcomm.com with ESMTP; 25 Apr 2021 19:26:55 -0700 Received: by stor-presley.qualcomm.com (Postfix, from userid 359480) id 5B2392113E; Sun, 25 Apr 2021 19:26:55 -0700 (PDT) From: Can Guo To: asutoshd@codeaurora.org, ziqichen@codeaurora.org, nguyenb@codeaurora.org, hongwus@codeaurora.org, linux-scsi@vger.kernel.org, kernel-team@android.com, cang@codeaurora.org Cc: Alim Akhtar , Avri Altman , "James E.J. Bottomley" , "Martin K. Petersen" , Stanley Chu , Bean Huo , Jaegeuk Kim , Subhash Jadavani , Gilad Broner , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v1 3/3] scsi: ufs: Narrow down fast pass in system suspend path Date: Sun, 25 Apr 2021 19:24:37 -0700 Message-Id: <1619403878-28330-4-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1619403878-28330-1-git-send-email-cang@codeaurora.org> References: <1619403878-28330-1-git-send-email-cang@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org If spm_lvl is set to 0 or 1, when system suspend kicks start and hba is runtime active, system suspend may just bail without doing anything (the fast pass), leaving other contexts still running, e.g., clock gating and clock scaling. When system resume kicks start, concurrency can happen btw ufshcd_resume() and these contexts, leading to various stability issues. Fix it by adding a check against hba's runtime status and allowing fast pass only if hba is runtime suspended, otherwise let system suspend go ahead call ufshcd_suspend(). This can guarantee that these contexts are stopped by either runtime suspend or system suspend. Fixes: 0b257734344aa ("scsi: ufs: optimize system suspend handling") Signed-off-by: Can Guo --- drivers/scsi/ufs/ufshcd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 090b654..1fd965f 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -9060,7 +9060,8 @@ int ufshcd_system_suspend(struct ufs_hba *hba) cancel_delayed_work_sync(&hba->rpm_dev_flush_recheck_work); - if ((ufs_get_pm_lvl_to_dev_pwr_mode(hba->spm_lvl) == + if (pm_runtime_suspended(hba->dev) && + (ufs_get_pm_lvl_to_dev_pwr_mode(hba->spm_lvl) == hba->curr_dev_pwr_mode) && (ufs_get_pm_lvl_to_link_pwr_state(hba->spm_lvl) == hba->uic_link_state))