From: Peter Griffin <peter.griffin@linaro.org>
To: alim.akhtar@samsung.com, James.Bottomley@HansenPartnership.com,
martin.petersen@oracle.com, avri.altman@wdc.com,
bvanassche@acm.org, krzk@kernel.org
Cc: tudor.ambarus@linaro.org, andre.draszik@linaro.org,
kernel-team@android.com, willmcvicker@google.com,
linux-scsi@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org,
ebiggers@kernel.org, Peter Griffin <peter.griffin@linaro.org>
Subject: [PATCH v2 07/11] scsi: ufs: exynos: add gs101_ufs_drv_init() hook and enable WriteBooster
Date: Fri, 25 Oct 2024 14:14:38 +0100 [thread overview]
Message-ID: <20241025131442.112862-8-peter.griffin@linaro.org> (raw)
In-Reply-To: <20241025131442.112862-1-peter.griffin@linaro.org>
Factor out the common code into a new exynos_ufs_shareability() function
and provide a dedicated gs101_drv_init() hook.
This allows us to enable WriteBooster capability (UFSHCD_CAP_WB_EN) in a
way that doesn't effect other SoCs supported in this driver.
WriteBooster improves write speeds by enabling a pseudo SLC cache. Using
the `fio seqwrite` test we can achieve speeds of 945MB/s with this feature
enabled (until the cache is exhausted) before dropping back to ~260MB/s
(which are the speeds we see without the WriteBooster feature enabled).
Assuming the UFSHCD_CAP_WB_EN capability is set by the host then
WriteBooster can also be enabled and disabled via sysfs so it is possible
for the system to only enable it when extra write performance is required.
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
---
drivers/ufs/host/ufs-exynos.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c
index d4e786afbbbc..40b2563fe011 100644
--- a/drivers/ufs/host/ufs-exynos.c
+++ b/drivers/ufs/host/ufs-exynos.c
@@ -203,7 +203,7 @@ static int exynos7_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
return 0;
}
-static int exynosauto_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
+static int exynos_ufs_shareability(struct exynos_ufs *ufs)
{
/* IO Coherency setting */
if (ufs->sysreg) {
@@ -215,6 +215,21 @@ static int exynosauto_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
return 0;
}
+static int gs101_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
+{
+ struct ufs_hba *hba = ufs->hba;
+
+ /* Enable WriteBooster */
+ hba->caps |= UFSHCD_CAP_WB_EN;
+
+ return exynos_ufs_shareability(ufs);
+}
+
+static int exynosauto_ufs_drv_init(struct device *dev, struct exynos_ufs *ufs)
+{
+ return exynos_ufs_shareability(ufs);
+}
+
static int exynosauto_ufs_post_hce_enable(struct exynos_ufs *ufs)
{
struct ufs_hba *hba = ufs->hba;
@@ -2124,7 +2139,7 @@ static const struct exynos_ufs_drv_data gs101_ufs_drvs = {
.opts = EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR |
EXYNOS_UFS_OPT_UFSPR_SECURE |
EXYNOS_UFS_OPT_TIMER_TICK_SELECT,
- .drv_init = exynosauto_ufs_drv_init,
+ .drv_init = gs101_ufs_drv_init,
.pre_link = gs101_ufs_pre_link,
.post_link = gs101_ufs_post_link,
.pre_pwr_change = gs101_ufs_pre_pwr_change,
--
2.47.0.163.g1226f6d8fa-goog
next prev parent reply other threads:[~2024-10-25 13:15 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-25 13:14 [PATCH v2 00/11] UFS cleanups and enhancements to ufs-exynos for gs101 Peter Griffin
2024-10-25 13:14 ` [PATCH v2 01/11] scsi: ufs: exynos: Allow UFS Gear 4 Peter Griffin
2024-10-30 8:04 ` Tudor Ambarus
2024-10-30 12:05 ` Peter Griffin
2024-10-25 13:14 ` [PATCH v2 02/11] scsi: ufs: exynos: add check inside exynos_ufs_config_smu() Peter Griffin
2024-10-30 8:12 ` Tudor Ambarus
2024-10-25 13:14 ` [PATCH v2 03/11] scsi: ufs: exynos: gs101: remove EXYNOS_UFS_OPT_BROKEN_AUTO_CLK_CTRL Peter Griffin
2024-10-30 8:24 ` Tudor Ambarus
2024-10-25 13:14 ` [PATCH v2 04/11] scsi: ufs: exynos: Add EXYNOS_UFS_OPT_SKIP_CONFIG_PHY_ATTR check Peter Griffin
2024-10-30 8:56 ` Tudor Ambarus
2024-10-30 13:29 ` Tudor Ambarus
2024-10-31 11:18 ` Peter Griffin
2024-10-25 13:14 ` [PATCH v2 05/11] scsi: ufs: exynos: gs101: remove unused phy attribute fields Peter Griffin
2024-10-30 9:08 ` Tudor Ambarus
2024-10-25 13:14 ` [PATCH v2 06/11] scsi: ufs: exynos: remove tx_dif_p_nsec from exynosauto_ufs_drv_init() Peter Griffin
2024-10-30 9:39 ` Tudor Ambarus
2024-10-25 13:14 ` Peter Griffin [this message]
2024-10-30 10:32 ` [PATCH v2 07/11] scsi: ufs: exynos: add gs101_ufs_drv_init() hook and enable WriteBooster Tudor Ambarus
2024-10-25 13:14 ` [PATCH v2 08/11] scsi: ufs: exynos: enable write line unique transactions on gs101 Peter Griffin
2024-10-30 11:25 ` Tudor Ambarus
2024-10-30 11:32 ` Peter Griffin
2024-10-30 12:36 ` Tudor Ambarus
2024-10-25 13:14 ` [PATCH v2 09/11] scsi: ufs: exynos: set ACG to be controlled by UFS_ACG_DISABLE Peter Griffin
2024-10-30 11:45 ` Tudor Ambarus
2024-10-25 13:14 ` [PATCH v2 10/11] scsi: ufs: exynos: fix hibern8 notify callbacks Peter Griffin
2024-10-30 12:00 ` Tudor Ambarus
2024-10-31 12:35 ` Peter Griffin
2024-10-25 13:14 ` [PATCH v2 11/11] scsi: ufs: exynos: gs101: enable clock gating with hibern8 Peter Griffin
2024-10-30 12:25 ` Tudor Ambarus
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=20241025131442.112862-8-peter.griffin@linaro.org \
--to=peter.griffin@linaro.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=alim.akhtar@samsung.com \
--cc=andre.draszik@linaro.org \
--cc=avri.altman@wdc.com \
--cc=bvanassche@acm.org \
--cc=devicetree@vger.kernel.org \
--cc=ebiggers@kernel.org \
--cc=kernel-team@android.com \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=tudor.ambarus@linaro.org \
--cc=willmcvicker@google.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).