Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp735076ybx; Thu, 7 Nov 2019 01:51:41 -0800 (PST) X-Google-Smtp-Source: APXvYqx/c9DbAI8i3guXdpAy8m6prtem/B9jn0m0sBr2nkBuBfsvtKlx0I2Dc2Py5JAJQaTLlx1z X-Received: by 2002:aa7:d554:: with SMTP id u20mr2495149edr.6.1573120301488; Thu, 07 Nov 2019 01:51:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573120301; cv=none; d=google.com; s=arc-20160816; b=a9VQhvm3QbRksnD72k3Yrt8ZnU73UXi4DrjKC21+B/keNC07UrMhr82rjhITjixukm QRzP6j71GlwJJn2GQXqM3AJp/Jj/CwgzLaJvvEiKJ+uUoEt6Q1HlmiXiZYRaab7VRkYe 8vhO/Cky8i+g5mzgjdLRkuA6S35mECITq2FUmCv+uFTSNgLF65HI9ryWoc4/mCCIhlWi Crxm0ZWxRfE3PSIYv9I+5D3o6sRerl+cfgVZBo7hLW9NmJuvThj8WRO9uEJ01MGKZMhS vNX98t5h8Hm36F4hl7b/TvMesEu+yUlMZybFhZPM9APsgZm9X2J4qx49bSvlt5R7/+uZ atlg== 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=EV0a4Qt6dGOQFJtzlaBox2f2YryZNFi/cNFxLBZ8tmU=; b=AAQhkhTUXoZVGs1kuref/uAHhEjv4sgwzA8JvUNSJSqP0zZXjOzSnH1b8akq8K2v9b eSZv6L7SoPqxspmNqf0qYuBNMhTj6j9U/afYZqB0w7SlzIC7yJUm1YvIE1SunVSKMIPa ORHsFlE/mftx9iCbE+deApdGSXDW/a8xwkHkLJCrgL+N11Qw6dqXknnfj/t25BXEQfuo qXs/lH0ariQMby0OyKB6ywvfEBkrPmQVfxUv3jx9f6YwWt5RgomRoNIq83ZvNEHSrtbx LgJipExy+TPC/L0va+i4JU/m6A0xwAhZKPVPD9oLFlvwA877OIS2v1kley/4IpuNY7nY ymeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=XTUJaW+r; dkim=pass header.i=@codeaurora.org header.s=default header.b=JlkrQlTX; 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 o3si1126737edi.374.2019.11.07.01.51.18; Thu, 07 Nov 2019 01:51:41 -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=XTUJaW+r; dkim=pass header.i=@codeaurora.org header.s=default header.b=JlkrQlTX; 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 S2388048AbfKGJt0 (ORCPT + 99 others); Thu, 7 Nov 2019 04:49:26 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:33056 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726734AbfKGJt0 (ORCPT ); Thu, 7 Nov 2019 04:49:26 -0500 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id BF5A060EA7; Thu, 7 Nov 2019 09:49:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1573120165; bh=nxy+6T9NnllQijOQ36oQRnPl7rCsl63sjjuRwTYBbok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XTUJaW+riPnABOShCYhB+OCyikjiHTeVb7bXQsSSe+WqHItLUkI8dSUisRC1f/ihQ MPiFDxKstQrmIFFKiNQK8zgVPhfynAIbuoICKlm7qLYjhrdvBFeFMl8MNj/HUr1kvc fkZrild8B3Vs639H+Bel58NdiUtMth5Nfg0bhWvs= 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 C0DD060CA5; Thu, 7 Nov 2019 09:49:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1573120161; bh=nxy+6T9NnllQijOQ36oQRnPl7rCsl63sjjuRwTYBbok=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JlkrQlTXjkp3+VoGxH0MahNj6W5hFWq2pt8pHM2RV8h5Yp3ArlUI5HcHrBEx4TpYy DrrPEvsOC8N6cb90mj9HyBBeGnesCq0hi4PClafRrf8KLi87wAjI7w3Oum6qJ95DJy ISM03syxFvnOmVgRZQllY8w4xu2akfrZ9+9iVLLQ= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org C0DD060CA5 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 , Tomas Winkler , Venkat Gopalakrishnan , Subhash Jadavani , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 6/6] scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic Date: Thu, 7 Nov 2019 01:47:57 -0800 Message-Id: <1573120078-15547-7-git-send-email-cang@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1573120078-15547-1-git-send-email-cang@codeaurora.org> References: <1573120078-15547-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. Signed-off-by: Can Guo --- 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 d2d56f8..3910c58 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1545,6 +1545,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