Message ID | 20231221-ufs-reset-ensure-effect-before-delay-v3-11-2195a1b66d2e@redhat.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-8989-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2483:b0:fb:cd0c:d3e with SMTP id q3csp637156dyi; Thu, 21 Dec 2023 11:21:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IE1YA316NdSM44ph9q3ELukgAOYjScJxaAHiU5mAof1msWfgpBbxV+g4yBoWtrudac/Q71m X-Received: by 2002:a19:8c41:0:b0:50e:2d00:9841 with SMTP id i1-20020a198c41000000b0050e2d009841mr56513lfj.101.1703186480046; Thu, 21 Dec 2023 11:21:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703186480; cv=none; d=google.com; s=arc-20160816; b=FJKZew6c1tLqMlgI0OPLhQmAGlMSYzIJzeWRpcNQpB9hds5lFh1EkuDEePBKDZnm2x fWNwEzOo4r1W9mKz6mIXmzP0UKC6YcGxGi19fFtSXgtSsF5DGMu+kpOu89fL3tmvYpyZ HzuR70DtbF5kGcOl7bx80bF85yGHOI5hhUG3+FfHS8e73076rMNYpbw+zAddEjP6QDvJ hkoAADy0kNjRdKKulVR7HT1UWEvUVwIRJd+ZckYUh8WjHBhVGSJk+TU1sAMt5QE21Eof 0LuJ2QrlcYD8N4kc/qwR3HYfQJlrqZHn2j5wHvGEEPpO52R2LRLM+yI11eWL4Ap2d2k0 dL7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=4cSBdvbxI8LSVPr25rTyKCoUJu91IkN+EuBnNL3WBh0=; fh=1ZbOLymucMpHPgAW6Ec0PFi2ApL0mTrRg5dRvTVPo8g=; b=XbQq1dxPIXYmxEB8agbkf/O/+isMtrTy3wwI3YkOMKoaqduGdKedb7MSOcTjpWz3gJ L9JvFQF57k2UOdNr0FXQWCJQPpgNh3C12bw5Zv0kADz/e5eepqGqvW3Iu5Rd7ZMHdTeX 3MlSHwP9o8fkT5IvZ0i5/vaChyCBQM5Iuu38T/2sL88OAWdt0qgLVCRF2/8HEgQbKHLy JlofUa6qqJ+e2g062nIx8TkEAhsxn9m1RkrMzLWB9G+yXc8v6yUzmdbAJmmqfs/8FEI+ KqyAKSWoWR4igEQwrn+HOnFaAnUPr1MXASOMy2OrgTiwdY0ZeOpnt0biBqL47/XrI0s0 HrkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Wp6mmAo4; spf=pass (google.com: domain of linux-kernel+bounces-8989-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-8989-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id w2-20020a056402268200b0054c4523f740si1123281edd.491.2023.12.21.11.21.19 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Dec 2023 11:21:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-8989-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Wp6mmAo4; spf=pass (google.com: domain of linux-kernel+bounces-8989-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-8989-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 2870B1F26EFF for <ouuuleilei@gmail.com>; Thu, 21 Dec 2023 19:14:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6C67E79479; Thu, 21 Dec 2023 19:11:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Wp6mmAo4" X-Original-To: linux-kernel@vger.kernel.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 932876A029 for <linux-kernel@vger.kernel.org>; Thu, 21 Dec 2023 19:11:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1703185883; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4cSBdvbxI8LSVPr25rTyKCoUJu91IkN+EuBnNL3WBh0=; b=Wp6mmAo4C8iKE11bowaB1/bgdB4aTLZjL8k4UmvIV1tVcnItijdfKujdMuu1OglrJhEk0C 2rClTBVB8wDgPWiuuwt8gclzhgZ9kOfIU9RhmNKo+ZtC8uWM/q4yJP9etNk/jV9hvtTigS pRBU0wu7OmdyT+K8FAmbMw0OI8p9m5s= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-556-5nmJXuNxOCS2dRuRt0Lh5g-1; Thu, 21 Dec 2023 14:11:22 -0500 X-MC-Unique: 5nmJXuNxOCS2dRuRt0Lh5g-1 Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-67a696be34cso15223386d6.2 for <linux-kernel@vger.kernel.org>; Thu, 21 Dec 2023 11:11:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703185881; x=1703790681; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4cSBdvbxI8LSVPr25rTyKCoUJu91IkN+EuBnNL3WBh0=; b=fHIE1sKzWenjit8b7Waf2mOXconM6unKlrXb+xt9qfmVAqsgIOqcL+01LjmWl2FEPN azE2i+IWFR9gh4F4ogz4dxKIRFRyCQm6DNjh5VzZ6Ra5BUFO8uBZLhPfG7Joj3+194xt +X2WbRk+gYnNScIGxrF/lKIdIXk9B3/x2j7SsOHceBEAjmdMMpTbnrA6I9drnfMDZqWn KKw3Qw0HUnZuZKVRIeQLE2f0fqHC67bFuIcnk9x/bnl0GdwaOBUvGhiYbdoFsyUIqdOi ktLe37CvLOy9AopXoN3uAqEW4igSPpqO6LzvFFUEtbbLZTkas+PZb2OvIIgN703M6fGA qERw== X-Gm-Message-State: AOJu0YzXbjvGw2StT0O5pEVrLrdbagorVc3JH5vwi2MizaEJ31bkswVI dAqVdSHfFvZrBBsdH2Fvq3NcI1vqfHRBHMyaFjqVyRvXsBBdf4g4Mk8E87s31qmef1vQRP9Ceif zcg1bGN4cLsyeR+0afc6kVRU54d7HOk3i X-Received: by 2002:ad4:5e8c:0:b0:67f:2201:81e1 with SMTP id jl12-20020ad45e8c000000b0067f220181e1mr222523qvb.13.1703185881310; Thu, 21 Dec 2023 11:11:21 -0800 (PST) X-Received: by 2002:ad4:5e8c:0:b0:67f:2201:81e1 with SMTP id jl12-20020ad45e8c000000b0067f220181e1mr222500qvb.13.1703185881066; Thu, 21 Dec 2023 11:11:21 -0800 (PST) Received: from fedora.redhat.com ([2600:1700:1ff0:d0e0::37]) by smtp.gmail.com with ESMTPSA id 25-20020a05620a04d900b0077f0a4bd3c6sm846370qks.77.2023.12.21.11.11.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Dec 2023 11:11:19 -0800 (PST) From: Andrew Halaney <ahalaney@redhat.com> To: Andy Gross <agross@kernel.org>, Bjorn Andersson <andersson@kernel.org>, Konrad Dybcio <konrad.dybcio@linaro.org>, Manivannan Sadhasivam <mani@kernel.org>, "James E.J. Bottomley" <jejb@linux.ibm.com>, "Martin K. Petersen" <martin.petersen@oracle.com>, Hannes Reinecke <hare@suse.de>, Janek Kotas <jank@cadence.com>, Alim Akhtar <alim.akhtar@samsung.com>, Avri Altman <avri.altman@wdc.com>, Bart Van Assche <bvanassche@acm.org>, Can Guo <quic_cang@quicinc.com> Cc: Andrew Halaney <ahalaney@redhat.com>, Will Deacon <will@kernel.org>, linux-arm-msm@vger.kernel.org, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH RFC v3 11/11] scsi: ufs: core: Perform read back before writing run/stop regs Date: Thu, 21 Dec 2023 13:09:57 -0600 Message-ID: <20231221-ufs-reset-ensure-effect-before-delay-v3-11-2195a1b66d2e@redhat.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231221-ufs-reset-ensure-effect-before-delay-v3-0-2195a1b66d2e@redhat.com> References: <20231221-ufs-reset-ensure-effect-before-delay-v3-0-2195a1b66d2e@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.12.3 Content-Transfer-Encoding: 8bit X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785920466496504313 X-GMAIL-MSGID: 1785920466496504313 |
Series |
scsi: ufs: Remove overzealous memory barriers
|
|
Commit Message
Andrew Halaney
Dec. 21, 2023, 7:09 p.m. UTC
Currently a wmb() is used to ensure that writes to the
UTP_TASK_REQ_LIST_BASE* regs are completed prior to following writes to
the run/stop registers.
wmb() ensure that the write completes, but completion doesn't mean that
it isn't stored in a buffer somewhere. The recommendation for
ensuring the bits have taken effect on the device is to perform a read
back to force it to make it all the way to the device. This is
documented in device-io.rst and a talk by Will Deacon on this can
be seen over here:
https://youtu.be/i6DayghhA8Q?si=MiyxB5cKJXSaoc01&t=1678
Let's do that to ensure the bits hit the device. Because the wmb()'s
purpose wasn't to add extra ordering (on top of the ordering guaranteed
by writel()/readl()), it can safely be removed.
Fixes: 897efe628d7e ("scsi: ufs: add missing memory barriers")
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
---
drivers/ufs/core/ufshcd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On 12/21/23 11:09, Andrew Halaney wrote: > Currently a wmb() is used to ensure that writes to the > UTP_TASK_REQ_LIST_BASE* regs are completed prior to following writes to > the run/stop registers. > > wmb() ensure that the write completes, but completion doesn't mean that > it isn't stored in a buffer somewhere. The recommendation for > ensuring the bits have taken effect on the device is to perform a read > back to force it to make it all the way to the device. This is > documented in device-io.rst and a talk by Will Deacon on this can > be seen over here: > > https://youtu.be/i6DayghhA8Q?si=MiyxB5cKJXSaoc01&t=1678 > > Let's do that to ensure the bits hit the device. Because the wmb()'s > purpose wasn't to add extra ordering (on top of the ordering guaranteed > by writel()/readl()), it can safely be removed. Reviewed-by: Bart Van Assche <bvanassche@acm.org>
On 12/22/2023 3:09 AM, Andrew Halaney wrote: > Currently a wmb() is used to ensure that writes to the > UTP_TASK_REQ_LIST_BASE* regs are completed prior to following writes to > the run/stop registers. > > wmb() ensure that the write completes, but completion doesn't mean that > it isn't stored in a buffer somewhere. The recommendation for > ensuring the bits have taken effect on the device is to perform a read > back to force it to make it all the way to the device. This is > documented in device-io.rst and a talk by Will Deacon on this can > be seen over here: > > https://youtu.be/i6DayghhA8Q?si=MiyxB5cKJXSaoc01&t=1678 > > Let's do that to ensure the bits hit the device. Because the wmb()'s > purpose wasn't to add extra ordering (on top of the ordering guaranteed > by writel()/readl()), it can safely be removed. > > Fixes: 897efe628d7e ("scsi: ufs: add missing memory barriers") > Signed-off-by: Andrew Halaney <ahalaney@redhat.com> > --- > drivers/ufs/core/ufshcd.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index caebd589e08c..7c1975a1181f 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -4726,7 +4726,7 @@ int ufshcd_make_hba_operational(struct ufs_hba *hba) > * Make sure base address and interrupt setup are updated before > * enabling the run/stop registers below. > */ > - wmb(); > + ufshcd_readl(hba, REG_UTP_TASK_REQ_LIST_BASE_H); > > /* > * UCRDY, UTMRLDY and UTRLRDY bits must be 1 > Reviewed-by: Can Guo <quic_cang@quicinc.com>
On Thu, Dec 21, 2023 at 01:09:57PM -0600, Andrew Halaney wrote: > Currently a wmb() is used to ensure that writes to the > UTP_TASK_REQ_LIST_BASE* regs are completed prior to following writes to > the run/stop registers. > > wmb() ensure that the write completes, but completion doesn't mean that > it isn't stored in a buffer somewhere. The recommendation for > ensuring the bits have taken effect on the device is to perform a read > back to force it to make it all the way to the device. This is > documented in device-io.rst and a talk by Will Deacon on this can > be seen over here: > > https://youtu.be/i6DayghhA8Q?si=MiyxB5cKJXSaoc01&t=1678 > > Let's do that to ensure the bits hit the device. Because the wmb()'s > purpose wasn't to add extra ordering (on top of the ordering guaranteed > by writel()/readl()), it can safely be removed. > > Fixes: 897efe628d7e ("scsi: ufs: add missing memory barriers") > Signed-off-by: Andrew Halaney <ahalaney@redhat.com> > --- > drivers/ufs/core/ufshcd.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index caebd589e08c..7c1975a1181f 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -4726,7 +4726,7 @@ int ufshcd_make_hba_operational(struct ufs_hba *hba) > * Make sure base address and interrupt setup are updated before > * enabling the run/stop registers below. > */ > - wmb(); > + ufshcd_readl(hba, REG_UTP_TASK_REQ_LIST_BASE_H); I don't think the readback is really needed here. Because, the dependency is with UTP registers and both should be in the same domain. So there is no way the following write can happen before prior UTP write completion. - Mani > > /* > * UCRDY, UTMRLDY and UTRLRDY bits must be 1 > > -- > 2.43.0 >
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index caebd589e08c..7c1975a1181f 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -4726,7 +4726,7 @@ int ufshcd_make_hba_operational(struct ufs_hba *hba) * Make sure base address and interrupt setup are updated before * enabling the run/stop registers below. */ - wmb(); + ufshcd_readl(hba, REG_UTP_TASK_REQ_LIST_BASE_H); /* * UCRDY, UTMRLDY and UTRLRDY bits must be 1