Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp983491pxu; Mon, 26 Oct 2020 00:32:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8dBoLloJtAGxC+nPYzNBE4Q8TgW4zJPxgskzlbax6jF0WMAHKQEi7hKYjKuZqCRLN39iB X-Received: by 2002:aa7:d29a:: with SMTP id w26mr14042805edq.59.1603697535348; Mon, 26 Oct 2020 00:32:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603697535; cv=none; d=google.com; s=arc-20160816; b=mZRp9rM/N1ifnHJBoA5DhpQOzXxp9I0hOT3ICzrbClwb6brQX51iPhdpwFM7xAKmBt nMxN7ABiqQRheIj1wxMMezXTBPkJaZnBZ3Va16b5k67eSJVEb/fs7Dr44+JTsBp66my+ YEyBg+BKhGxHzRhDWgmxXC14Hp4wks5Egyeii7JVuC4vOg/F5bWqOdQoDgG7+htmmGBt vcHgTMlAKEEEZh3qbaIf9oCm+cW4ydty2jvaSM77DViv/9RmVTxGEWeNYScg0uRpxLY/ VQS7J5A7nC4SgicdW0S14ghnSenU8Gao2qeFhsnorsMLMb8h9aZ6vthpGtFodTkAGn0d sAwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:message-id:references:in-reply-to :subject:cc:to:from:date:content-transfer-encoding:mime-version :sender:dkim-signature; bh=mlxfck8q9sIQPtbUdbIP5NseLL7/CM6uJ5aM506Ks68=; b=b9myCS0vePJ35UdaDGJDTibhG5bGWUia5F3HqzFSw00FFltkwwIRHNCZY5h36F82hM WbS/0Sr++bSOTOcmhW5OIFwvQ2biOWVpdiATBElIS/ftD5PifKHs/u/mNS2mKO//fesV 1ug/Gn9RHuSbr8endGBf/irStHmulnujfWnL3gofSHOo9KjH8VcZKWWPMEIvQ4gE1OxI QBbbhX9wpII8xdcqHa5QbNGfgHKU4eNrdgTQoRajmrElRmxttyLSKE6kGh4sZdOrNCEI L7spEqpWsP6qE2Km5poENc8bmzM+tnOm1x6aCYfZSqCT+23MtTwXflSWfBRamWdaLBJU ZZPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=cLo8Qpl1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bu15si6549435ejb.175.2020.10.26.00.31.31; Mon, 26 Oct 2020 00:32:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=cLo8Qpl1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1421909AbgJZD2v (ORCPT + 99 others); Sun, 25 Oct 2020 23:28:51 -0400 Received: from z5.mailgun.us ([104.130.96.5]:47543 "EHLO z5.mailgun.us" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1419237AbgJZD2v (ORCPT ); Sun, 25 Oct 2020 23:28:51 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1603682931; h=Message-ID: References: In-Reply-To: Subject: Cc: To: From: Date: Content-Transfer-Encoding: Content-Type: MIME-Version: Sender; bh=mlxfck8q9sIQPtbUdbIP5NseLL7/CM6uJ5aM506Ks68=; b=cLo8Qpl1ErEHZvPwr2hDen7SKS4Yn98vhOP8aMrnNYJ3vZF8O6tEs2vZXSviPJZNSD6wBjXp 8Z/GLnl/hOsq4W2BvDv87dG6P1jlbtpk/NpNhKh1/ibMexTpsCVuq3e+cWKrrgRg5RVQSuHK wJmPvAAb4ApSXgo4vKnRXN/olUs= X-Mailgun-Sending-Ip: 104.130.96.5 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 smtp-out-n05.prod.us-east-1.postgun.com with SMTP id 5f96425ec6b781f75398a136 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Mon, 26 Oct 2020 03:28:30 GMT Sender: cang=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 5177EC433FE; Mon, 26 Oct 2020 03:28:29 +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=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: cang) by smtp.codeaurora.org (Postfix) with ESMTPSA id EEB9AC433C9; Mon, 26 Oct 2020 03:28:27 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Mon, 26 Oct 2020 11:28:27 +0800 From: Can Guo To: Jaegeuk Kim Cc: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com, alim.akhtar@samsung.com, avri.altman@wdc.com, bvanassche@acm.org, Jaegeuk Kim Subject: Re: [PATCH v3 1/5] scsi: ufs: atomic update for clkgating_enable In-Reply-To: <20201024150646.1790529-2-jaegeuk@kernel.org> References: <20201024150646.1790529-1-jaegeuk@kernel.org> <20201024150646.1790529-2-jaegeuk@kernel.org> Message-ID: <68cf5fe17691653f07544db5fe390c97@codeaurora.org> X-Sender: cang@codeaurora.org User-Agent: Roundcube Webmail/1.3.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-10-24 23:06, Jaegeuk Kim wrote: > From: Jaegeuk Kim > > When giving a stress test which enables/disables clkgating, we hit > device > timeout sometimes. This patch avoids subtle racy condition to address > it. > > If we use __ufshcd_release(), I've seen that gate_work can be called in > parallel > with ungate_work, which results in UFS timeout when doing hibern8. > Should avoid it. > I don't understand this comment. gate_work and ungate_work are queued on an ordered workqueue and an ordered workqueue executes at most one work item at any given time in the queued order. How can the two run in parallel? Thanks, Can Guo. > Signed-off-by: Jaegeuk Kim > --- > drivers/scsi/ufs/ufshcd.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index b8f573a02713..e0b479f9eb8a 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -1807,19 +1807,19 @@ static ssize_t > ufshcd_clkgate_enable_store(struct device *dev, > return -EINVAL; > > value = !!value; > + > + spin_lock_irqsave(hba->host->host_lock, flags); > if (value == hba->clk_gating.is_enabled) > goto out; > > - if (value) { > - ufshcd_release(hba); > - } else { > - spin_lock_irqsave(hba->host->host_lock, flags); > + if (value) > + hba->clk_gating.active_reqs--; > + else > hba->clk_gating.active_reqs++; > - spin_unlock_irqrestore(hba->host->host_lock, flags); > - } > > hba->clk_gating.is_enabled = value; > out: > + spin_unlock_irqrestore(hba->host->host_lock, flags); > return count; > }