From: Jaegeuk Kim <jaegeuk@kernel.org> To: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, kernel-team@android.com Cc: cang@codeaurora.org, alim.akhtar@samsung.com, avri.altman@wdc.com, bvanassche@acm.org, martin.petersen@oracle.com, stanley.chu@mediatek.com, Jaegeuk Kim <jaegeuk@kernel.org>, Asutosh Das <asutoshd@codeaurora.org> Subject: [PATCH v5 6/7] scsi: ufs: fix clkgating on/off correctly Date: Tue, 17 Nov 2020 08:58:38 -0800 Message-ID: <20201117165839.1643377-7-jaegeuk@kernel.org> (raw) In-Reply-To: <20201117165839.1643377-1-jaegeuk@kernel.org> The below call stack prevents clk_gating at every IO completion. We can remove the condition, ufshcd_any_tag_in_use(), since clkgating_work will check it again. ufshcd_complete_requests(struct ufs_hba *hba) ufshcd_transfer_req_compl() __ufshcd_transfer_req_compl() __ufshcd_release(hba) if (ufshcd_any_tag_in_use() == 1) return; ufshcd_tmc_handler(hba); blk_mq_tagset_busy_iter(); Note that, this still requires a work to deal with a potential racy condition when user sets clkgating.delay_ms to very small value. That can cause preventing clkgating by the check of ufshcd_any_tag_in_use() in gate_work. Fixes: 7252a3603015 ("scsi: ufs: Avoid busy-waiting by eliminating tag conflicts") Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Reviewed-by: Asutosh Das <asutoshd@codeaurora.org> Reviewed-by: Can Guo <cang@codeaurora.org> --- drivers/scsi/ufs/ufshcd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index b8a54d09e750..86c8dee01ca9 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1746,7 +1746,7 @@ static void __ufshcd_release(struct ufs_hba *hba) if (hba->clk_gating.active_reqs || hba->clk_gating.is_suspended || hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL || - ufshcd_any_tag_in_use(hba) || hba->outstanding_tasks || + hba->outstanding_tasks || hba->active_uic_cmd || hba->uic_async_done || hba->clk_gating.state == CLKS_OFF) return; -- 2.29.2.299.gdc1121823c-goog
next prev parent reply index Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-17 16:58 [PATCH v5 0/5] scsi: ufs: add some fixes Jaegeuk Kim 2020-11-17 16:58 ` [PATCH v5 1/7] scsi: ufs: avoid to call REQ_CLKS_OFF to CLKS_OFF Jaegeuk Kim 2020-11-18 3:54 ` Can Guo 2020-11-17 16:58 ` [PATCH v5 2/7] scsi: ufs: atomic update for clkgating_enable Jaegeuk Kim 2020-11-18 3:54 ` Can Guo 2020-11-17 16:58 ` [PATCH v5 3/7] scsi: ufs: clear UAC for FFU and RPMB LUNs Jaegeuk Kim 2020-11-17 16:58 ` [PATCH v5 4/7] scsi: ufs: use WQ_HIGHPRI for gating work Jaegeuk Kim 2020-11-17 16:58 ` [PATCH v5 5/7] scsi: add more contexts in the ufs tracepoints Jaegeuk Kim 2020-11-17 16:58 ` Jaegeuk Kim [this message] 2020-11-17 16:58 ` [PATCH v5 7/7] scsi: ufs: show lba and length for unmap commands Jaegeuk Kim 2020-11-18 1:11 ` Can Guo 2020-11-20 3:01 ` [PATCH v5 0/5] scsi: ufs: add some fixes Martin K. Petersen 2020-11-24 3:58 ` Martin K. Petersen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201117165839.1643377-7-jaegeuk@kernel.org \ --to=jaegeuk@kernel.org \ --cc=alim.akhtar@samsung.com \ --cc=asutoshd@codeaurora.org \ --cc=avri.altman@wdc.com \ --cc=bvanassche@acm.org \ --cc=cang@codeaurora.org \ --cc=kernel-team@android.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=stanley.chu@mediatek.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-SCSI Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-scsi/0 linux-scsi/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-scsi linux-scsi/ https://lore.kernel.org/linux-scsi \ linux-scsi@vger.kernel.org public-inbox-index linux-scsi Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-scsi AGPL code for this site: git clone https://public-inbox.org/public-inbox.git