Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp4395911ybv; Mon, 10 Feb 2020 18:39:00 -0800 (PST) X-Google-Smtp-Source: APXvYqyVUkc/puRzWIm5ELuuGFo2sQ9Oj8lQ25Gpe9pmlnCyQjK+e4uRk+mWOcBj02nxdIgchIq1 X-Received: by 2002:aca:c0c5:: with SMTP id q188mr1422869oif.169.1581388740642; Mon, 10 Feb 2020 18:39:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581388740; cv=none; d=google.com; s=arc-20160816; b=lfQfu5z9uAH7CroB9MTuWqCb1aWdVWWRCg0UIkxnYiRJNQ261oCltU+eYYF6rjkoTK jh3s7kQeQdj3V6Opax1Lly5Pwe9z02iVrpZdBVg8/ASZzIgcIqlJFrjrMKoKfXyc5W6C 61uGzrfQFXYKzRlqqnD/1B06u/QQsQkHkHMvchGs5WSxdobi0PWf+OYO0tEbApHZ7QNd Z3I5klK6t/d/bbKof5P87yF+ZNp6UrSy4d3djgg4BwWO51SG6NWGyn/hCIDB82kGpbh9 V057ArtLB4JumMxRaNrSDg6n3iA9qHvSrbVXYwOTWN422EEI8XRkz5HpVL94i6NPyqD2 cEfg== 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; bh=mOGsKpB2Al28vMrBa0jcYjVjoj+5dd6cChtWkiROc10=; b=rwNg+h7cWQihkQtWvvefjG8BcGhzm8menZqEkTPSrImYktbMwrku/K9mz7DTzd5Xir SEuAjAUMvk6/7dZTP3PwvVvNsZXSkXBeviSWfGfM285pBzvXarjQNZRy6/UPbd6HYToS 1ocfAderRdk1LR+TWLvwM1KQb0So0KIqu4kNZgcX8FnuODE6xTVBWRghdnSkMH6vm7OS C3Z3rSKqZs5aP4z4d0tLCmypFSteK9N41r0B/QS6Nwpujsbzc9T7fNxnn+GEnpmMOTEM yKhg7wIAK3aOzVqtTzxvNpMGFX8vCu2taXNt/uKRmAN+CLpoPzBrMVVL7ReHqcDaIrXF 8p+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=mv788gzx; 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 d6si1164288ote.72.2020.02.10.18.38.49; Mon, 10 Feb 2020 18:39:00 -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=fail header.i=@mg.codeaurora.org header.s=smtp header.b=mv788gzx; 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 S1727952AbgBKCi1 (ORCPT + 99 others); Mon, 10 Feb 2020 21:38:27 -0500 Received: from mail26.static.mailgun.info ([104.130.122.26]:32233 "EHLO mail26.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727935AbgBKCiY (ORCPT ); Mon, 10 Feb 2020 21:38:24 -0500 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1581388704; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=mOGsKpB2Al28vMrBa0jcYjVjoj+5dd6cChtWkiROc10=; b=mv788gzxaJjqc7pI6da9lBr303kmluA4bM+IU6/6zQnSbM7iRqTaEKru7RmKElUaf8gKBXOl lZYKmex8YFm3AlQpa5e6on71vb8FSD6TJPuSAsfNg0WSx+wOuDP00sdQdUTPKVzGoduc8gPa /chy7uH+uIf8wK4H+cARwPCQcn0= X-Mailgun-Sending-Ip: 104.130.122.26 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by mxa.mailgun.org with ESMTP id 5e42139f.7f42efef85a8-smtp-out-n03; Tue, 11 Feb 2020 02:38:23 -0000 (UTC) Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 6DD80C4479D; Tue, 11 Feb 2020 02:38:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable 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) by smtp.codeaurora.org (Postfix) with ESMTPSA id 60794C43383; Tue, 11 Feb 2020 02:38:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 60794C43383 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=cang@codeaurora.org From: Can Guo To: asutoshd@codeaurora.org, nguyenb@codeaurora.org, hongwus@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 , "James E.J. Bottomley" , "Martin K. Petersen" , Matthias Brugger , Venkat Gopalakrishnan , Subhash Jadavani , Bean Huo , Stanley Chu , Bart Van Assche , Tomas Winkler , linux-kernel@vger.kernel.org (open list), linux-arm-kernel@lists.infradead.org (moderated list:ARM/Mediatek SoC support), linux-mediatek@lists.infradead.org (moderated list:ARM/Mediatek SoC support) Subject: [PATCH v9 5/7] scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic Date: Mon, 10 Feb 2020 18:37:47 -0800 Message-Id: <1581388671-18078-6-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1581388671-18078-1-git-send-email-cang@codeaurora.org> References: <1581388671-18078-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 The async version of ufshcd_hold(async == true), which is only called in queuecommand path as for now, is expected to work in atomic context, thus it should not sleep or schedule out. When it runs into the condition that clocks are ON but link is still in hibern8 state, it should bail out without flushing the clock ungate work. Fixes: f2a785ac2312 ("scsi: ufshcd: Fix race between clk scaling and ungate work") Signed-off-by: Can Guo Reviewed-by: Hongwu Su Reviewed-by: Asutosh Das Reviewed-by: Bean Huo Reviewed-by: Stanley Chu --- drivers/scsi/ufs/ufshcd.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index bbc2607..e8f7f9d 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1518,6 +1518,11 @@ int ufshcd_hold(struct ufs_hba *hba, bool async) */ if (ufshcd_can_hibern8_during_gating(hba) && ufshcd_is_link_hibern8(hba)) { + if (async) { + rc = -EAGAIN; + hba->clk_gating.active_reqs--; + break; + } spin_unlock_irqrestore(hba->host->host_lock, flags); flush_work(&hba->clk_gating.ungate_work); spin_lock_irqsave(hba->host->host_lock, flags); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project