All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/7] scsi: ufs: wb: Add sysfs attribute and cleanup
       [not found] <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p6>
@ 2022-07-27  6:59 ` Jinyoung CHOI
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p5>
                     ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  6:59 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

This patch series is to clean up UFS's Write Booster code and
adds sysfs attribute which can control the specific feature of it.

V2:
	- modify commit message
	- move & modify err messages
	- remove unnesscessary debug messages
V3:
	- split patch (functional, non-functional)
V4:
	- split patch (The number of patches from 2 to 7)
	- modify dev messages
	- modify commit message

Jinyoung Choi (7):
  scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee function
  scsi: ufs: wb: Change wb_enabled condition test
  scsi: ufs: wb: Change functions name and modify parameter name
  scsi: ufs: wb: Add explicit flush sysfs attribute
  scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed()
  scsi: ufs: wb: Modify messages
  scsi: ufs: wb: Move the comment to the right position

 drivers/ufs/core/ufs-sysfs.c | 46 +++++++++++++++++++++++-
 drivers/ufs/core/ufshcd.c    | 69 +++++++++++++++++++-----------------
 include/ufs/ufshcd.h         |  7 ++++
 3 files changed, 89 insertions(+), 33 deletions(-)

-- 
2.25.1

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p5>
@ 2022-07-27  7:04     ` Jinyoung CHOI
  2022-07-27 13:16       ` Bean Huo
  2022-07-27  7:05     ` [PATCH v4 2/7] scsi: ufs: wb: Change wb_enabled condition test Jinyoung CHOI
  2022-07-27  7:08     ` [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute Jinyoung CHOI
  2 siblings, 1 reply; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:04 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

The condition test is performed for each function calling
__ufshcd_wb_toggle().
By modifying the position, it removes the code redundancy and prevents
the test from being missing in the caller function.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
---
 drivers/ufs/core/ufshcd.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 8f11f118c30e..a3bdf9986511 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -5722,6 +5722,9 @@ static int __ufshcd_wb_toggle(struct ufs_hba *hba, bool set, enum flag_idn idn)
 	enum query_opcode opcode = set ? UPIU_QUERY_OPCODE_SET_FLAG :
 				   UPIU_QUERY_OPCODE_CLEAR_FLAG;
 
+	if (!ufshcd_is_wb_allowed(hba))
+		return -EPERM;
+
 	index = ufshcd_wb_get_query_index(hba);
 	return ufshcd_query_flag_retry(hba, opcode, idn, index, NULL);
 }
@@ -5730,9 +5733,6 @@ int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable)
 {
 	int ret;
 
-	if (!ufshcd_is_wb_allowed(hba))
-		return 0;
-
 	if (!(enable ^ hba->dev_info.wb_enabled))
 		return 0;
 
@@ -5769,8 +5769,7 @@ static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable)
 {
 	int ret;
 
-	if (!ufshcd_is_wb_allowed(hba) ||
-	    hba->dev_info.wb_buf_flush_enabled == enable)
+	if (hba->dev_info.wb_buf_flush_enabled == enable)
 		return;
 
 	ret = __ufshcd_wb_toggle(hba, enable, QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN);
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 2/7] scsi: ufs: wb: Change wb_enabled condition test
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p5>
  2022-07-27  7:04     ` [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee Jinyoung CHOI
@ 2022-07-27  7:05     ` Jinyoung CHOI
  2022-07-27 13:49       ` Bean Huo
  2022-07-27  7:08     ` [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute Jinyoung CHOI
  2 siblings, 1 reply; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:05 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

Changed to improve readability.
As implemented in ufshcd_wb_togle_flush(), the conditional test is
modified in the same way.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.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 a3bdf9986511..48ba109e29f7 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -5733,7 +5733,7 @@ int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable)
 {
 	int ret;
 
-	if (!(enable ^ hba->dev_info.wb_enabled))
+	if (hba->dev_info.wb_enabled == enable)
 		return 0;
 
 	ret = __ufshcd_wb_toggle(hba, enable, QUERY_FLAG_IDN_WB_EN);
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 3/7] scsi: ufs: wb: Change functions name and modify
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p8>
@ 2022-07-27  7:07     ` Jinyoung CHOI
  2022-07-28  6:21     ` RE:(2) [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee Jinyoung CHOI
  1 sibling, 0 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:07 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

The parameter name of ufshcd_wb_toggle_flush_during_h8() has been changed
in the same as other toggle functions.

Function names were ambiguous. So changed to suit the meaning.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
---
 drivers/ufs/core/ufshcd.c | 30 +++++++++++++++++-------------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 48ba109e29f7..52377fedae49 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -265,8 +265,9 @@ static int ufshcd_setup_vreg(struct ufs_hba *hba, bool on);
 static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba,
 					 struct ufs_vreg *vreg);
 static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag);
-static void ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set);
-static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable);
+static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
+						 bool enable);
+static void ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable);
 static void ufshcd_hba_vreg_set_lpm(struct ufs_hba *hba);
 static void ufshcd_hba_vreg_set_hpm(struct ufs_hba *hba);
 
@@ -286,16 +287,16 @@ static inline void ufshcd_disable_irq(struct ufs_hba *hba)
 	}
 }
 
-static inline void ufshcd_wb_config(struct ufs_hba *hba)
+static void ufshcd_wb_set_default_flags(struct ufs_hba *hba)
 {
 	if (!ufshcd_is_wb_allowed(hba))
 		return;
 
 	ufshcd_wb_toggle(hba, true);
 
-	ufshcd_wb_toggle_flush_during_h8(hba, true);
+	ufshcd_wb_toggle_buf_flush_during_h8(hba, true);
 	if (!(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL))
-		ufshcd_wb_toggle_flush(hba, true);
+		ufshcd_wb_toggle_buf_flush(hba, true);
 }
 
 static void ufshcd_scsi_unblock_requests(struct ufs_hba *hba)
@@ -5750,22 +5751,23 @@ int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable)
 	return ret;
 }
 
-static void ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set)
+static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
+						 bool enable)
 {
 	int ret;
 
-	ret = __ufshcd_wb_toggle(hba, set,
+	ret = __ufshcd_wb_toggle(hba, enable,
 			QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8);
 	if (ret) {
 		dev_err(hba->dev, "%s: WB-Buf Flush during H8 %s failed: %d\n",
-			__func__, set ? "enable" : "disable", ret);
+			__func__, enable ? "enable" : "disable", ret);
 		return;
 	}
 	dev_dbg(hba->dev, "%s WB-Buf Flush during H8 %s\n",
-			__func__, set ? "enabled" : "disabled");
+			__func__, enable ? "enabled" : "disabled");
 }
 
-static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable)
+static void ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable)
 {
 	int ret;
 
@@ -5814,9 +5816,9 @@ static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
 static void ufshcd_wb_force_disable(struct ufs_hba *hba)
 {
 	if (!(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL))
-		ufshcd_wb_toggle_flush(hba, false);
+		ufshcd_wb_toggle_buf_flush(hba, false);
 
-	ufshcd_wb_toggle_flush_during_h8(hba, false);
+	ufshcd_wb_toggle_buf_flush_during_h8(hba, false);
 	ufshcd_wb_toggle(hba, false);
 	hba->caps &= ~UFSHCD_CAP_WB_EN;
 
@@ -8213,7 +8215,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
 	 */
 	ufshcd_set_active_icc_lvl(hba);
 
-	ufshcd_wb_config(hba);
+	/* Enable UFS Write Booster if supported */
+	ufshcd_wb_set_default_flags(hba);
+
 	if (hba->ee_usr_mask)
 		ufshcd_write_ee_control(hba);
 	/* Enable Auto-Hibernate if configured */
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p5>
  2022-07-27  7:04     ` [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee Jinyoung CHOI
  2022-07-27  7:05     ` [PATCH v4 2/7] scsi: ufs: wb: Change wb_enabled condition test Jinyoung CHOI
@ 2022-07-27  7:08     ` Jinyoung CHOI
  2022-07-27 17:43       ` Bean Huo
       [not found]       ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p3>
  2 siblings, 2 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:08 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

There is the following quirk to bypass "WB Flush" in Write Booster.

	- UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL

If this quirk is not set, there is no knob that can control "WB Flush".

There are three flags that control Write Booster Feature.
	1. WB ON/OFF
	2. WB Hibern Flush ON/OFF (implicitly)
	3. WB Flush ON/OFF (explicit)

The sysfs attribute that controls the WB was implemented. (1)

In the case of "Hibern Flush", it is always good to turn on.
Control may not be required. (2)

Finally, "Flush" may be necessary because the Auto-Hibern8 is not
supported in a specific environment.
So the sysfs attribute that controls this is necessary. (3)

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
---
 drivers/ufs/core/ufs-sysfs.c | 45 ++++++++++++++++++++++++++++++++++++
 drivers/ufs/core/ufshcd.c    |  9 ++++----
 include/ufs/ufshcd.h         |  1 +
 3 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
index 0a088b47d557..e7800e49998a 100644
--- a/drivers/ufs/core/ufs-sysfs.c
+++ b/drivers/ufs/core/ufs-sysfs.c
@@ -254,6 +254,49 @@ static ssize_t wb_on_store(struct device *dev, struct device_attribute *attr,
 	return res < 0 ? res : count;
 }
 
+static ssize_t wb_buf_flush_en_show(struct device *dev,
+				    struct device_attribute *attr,
+				    char *buf)
+{
+	struct ufs_hba *hba = dev_get_drvdata(dev);
+
+	return sysfs_emit(buf, "%d\n", hba->dev_info.wb_buf_flush_enabled);
+}
+
+static ssize_t wb_buf_flush_en_store(struct device *dev,
+				     struct device_attribute *attr,
+				     const char *buf, size_t count)
+{
+	struct ufs_hba *hba = dev_get_drvdata(dev);
+	unsigned int wb_buf_flush_en;
+	ssize_t res;
+
+	if (ufshcd_is_wb_allowed(hba) &&
+	   !(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL)) {
+		dev_warn(dev, "It is not allowed to configure WB buf flush!\n");
+		return -EOPNOTSUPP;
+	}
+
+	if (kstrtouint(buf, 0, &wb_buf_flush_en))
+		return -EINVAL;
+
+	if (wb_buf_flush_en != 0 && wb_buf_flush_en != 1)
+		return -EINVAL;
+
+	down(&hba->host_sem);
+	if (!ufshcd_is_user_access_allowed(hba)) {
+		res = -EBUSY;
+		goto out;
+	}
+
+	ufshcd_rpm_get_sync(hba);
+	res = ufshcd_wb_toggle_buf_flush(hba, wb_buf_flush_en);
+	ufshcd_rpm_put_sync(hba);
+out:
+	up(&hba->host_sem);
+	return res < 0 ? res : count;
+}
+
 static DEVICE_ATTR_RW(rpm_lvl);
 static DEVICE_ATTR_RO(rpm_target_dev_state);
 static DEVICE_ATTR_RO(rpm_target_link_state);
@@ -262,6 +305,7 @@ static DEVICE_ATTR_RO(spm_target_dev_state);
 static DEVICE_ATTR_RO(spm_target_link_state);
 static DEVICE_ATTR_RW(auto_hibern8);
 static DEVICE_ATTR_RW(wb_on);
+static DEVICE_ATTR_RW(wb_buf_flush_en);
 
 static struct attribute *ufs_sysfs_ufshcd_attrs[] = {
 	&dev_attr_rpm_lvl.attr,
@@ -272,6 +316,7 @@ static struct attribute *ufs_sysfs_ufshcd_attrs[] = {
 	&dev_attr_spm_target_link_state.attr,
 	&dev_attr_auto_hibern8.attr,
 	&dev_attr_wb_on.attr,
+	&dev_attr_wb_buf_flush_en.attr,
 	NULL
 };
 
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 52377fedae49..a8a797e0033d 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -267,7 +267,6 @@ static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba,
 static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag);
 static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
 						 bool enable);
-static void ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable);
 static void ufshcd_hba_vreg_set_lpm(struct ufs_hba *hba);
 static void ufshcd_hba_vreg_set_hpm(struct ufs_hba *hba);
 
@@ -5767,24 +5766,26 @@ static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
 			__func__, enable ? "enabled" : "disabled");
 }
 
-static void ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable)
+int ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable)
 {
 	int ret;
 
 	if (hba->dev_info.wb_buf_flush_enabled == enable)
-		return;
+		return 0;
 
 	ret = __ufshcd_wb_toggle(hba, enable, QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN);
 	if (ret) {
 		dev_err(hba->dev, "%s WB-Buf Flush %s failed %d\n", __func__,
 			enable ? "enable" : "disable", ret);
-		return;
+		return ret;
 	}
 
 	hba->dev_info.wb_buf_flush_enabled = enable;
 
 	dev_dbg(hba->dev, "%s WB-Buf Flush %s\n",
 			__func__, enable ? "enabled" : "disabled");
+
+	return ret;
 }
 
 static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
index 7fe1a926cd99..94bcfec98fb8 100644
--- a/include/ufs/ufshcd.h
+++ b/include/ufs/ufshcd.h
@@ -1211,6 +1211,7 @@ int ufshcd_exec_raw_upiu_cmd(struct ufs_hba *hba,
 			     enum query_opcode desc_op);
 
 int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable);
+int ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable);
 int ufshcd_suspend_prepare(struct device *dev);
 int __ufshcd_suspend_prepare(struct device *dev, bool rpm_ok_for_spm);
 void ufshcd_resume_complete(struct device *dev);
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed()
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p7>
@ 2022-07-27  7:10     ` Jinyoung CHOI
  2022-07-27 17:50       ` Bean Huo
  2022-07-27 19:44       ` Bart Van Assche
  2022-07-28  1:18     ` Jinyoung CHOI
  1 sibling, 2 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:10 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

The explicit flushing should check the following.
	- UFSHCD_CAP_WB_EN
	- UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL

Changed to improve readability.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
---
 drivers/ufs/core/ufs-sysfs.c | 3 +--
 drivers/ufs/core/ufshcd.c    | 5 +++--
 include/ufs/ufshcd.h         | 6 ++++++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
index e7800e49998a..63b02b2541c8 100644
--- a/drivers/ufs/core/ufs-sysfs.c
+++ b/drivers/ufs/core/ufs-sysfs.c
@@ -271,8 +271,7 @@ static ssize_t wb_buf_flush_en_store(struct device *dev,
 	unsigned int wb_buf_flush_en;
 	ssize_t res;
 
-	if (ufshcd_is_wb_allowed(hba) &&
-	   !(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL)) {
+	if (!ufshcd_is_wb_buf_flush_allowed(hba)) {
 		dev_warn(dev, "It is not allowed to configure WB buf flush!\n");
 		return -EOPNOTSUPP;
 	}
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index a8a797e0033d..17a14b046c44 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -294,7 +294,8 @@ static void ufshcd_wb_set_default_flags(struct ufs_hba *hba)
 	ufshcd_wb_toggle(hba, true);
 
 	ufshcd_wb_toggle_buf_flush_during_h8(hba, true);
-	if (!(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL))
+
+	if (ufshcd_is_wb_buf_flush_allowed(hba))
 		ufshcd_wb_toggle_buf_flush(hba, true);
 }
 
@@ -5816,7 +5817,7 @@ static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
 
 static void ufshcd_wb_force_disable(struct ufs_hba *hba)
 {
-	if (!(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL))
+	if (ufshcd_is_wb_buf_flush_allowed(hba))
 		ufshcd_wb_toggle_buf_flush(hba, false);
 
 	ufshcd_wb_toggle_buf_flush_during_h8(hba, false);
diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
index 94bcfec98fb8..78adc556444a 100644
--- a/include/ufs/ufshcd.h
+++ b/include/ufs/ufshcd.h
@@ -1017,6 +1017,12 @@ static inline bool ufshcd_is_wb_allowed(struct ufs_hba *hba)
 	return hba->caps & UFSHCD_CAP_WB_EN;
 }
 
+static inline bool ufshcd_is_wb_buf_flush_allowed(struct ufs_hba *hba)
+{
+	return ufshcd_is_wb_allowed(hba) &&
+		!(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL);
+}
+
 #define ufshcd_writel(hba, val, reg)	\
 	writel((val), (hba)->mmio_base + (reg))
 #define ufshcd_readl(hba, reg)	\
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 6/7] scsi: ufs: wb: Modify messages
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p4>
@ 2022-07-27  7:11     ` Jinyoung CHOI
  2022-07-27  7:12     ` [PATCH v4 7/7] scsi: ufs: wb: Move the comment to the right position Jinyoung CHOI
  1 sibling, 0 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:11 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

Messages are modified to fit the format of others.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
---
 drivers/ufs/core/ufs-sysfs.c |  2 +-
 drivers/ufs/core/ufshcd.c    | 15 +++++++--------
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/ufs/core/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c
index 63b02b2541c8..35e4f0056de6 100644
--- a/drivers/ufs/core/ufs-sysfs.c
+++ b/drivers/ufs/core/ufs-sysfs.c
@@ -230,7 +230,7 @@ static ssize_t wb_on_store(struct device *dev, struct device_attribute *attr,
 		 * If the platform supports UFSHCD_CAP_CLK_SCALING, turn WB
 		 * on/off will be done while clock scaling up/down.
 		 */
-		dev_warn(dev, "To control WB through wb_on is not allowed!\n");
+		dev_warn(dev, "It is not allowed to configure WB!\n");
 		return -EOPNOTSUPP;
 	}
 
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 17a14b046c44..c91010fb2105 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -5739,13 +5739,13 @@ int ufshcd_wb_toggle(struct ufs_hba *hba, bool enable)
 
 	ret = __ufshcd_wb_toggle(hba, enable, QUERY_FLAG_IDN_WB_EN);
 	if (ret) {
-		dev_err(hba->dev, "%s Write Booster %s failed %d\n",
+		dev_err(hba->dev, "%s: Write Booster %s failed %d\n",
 			__func__, enable ? "enable" : "disable", ret);
 		return ret;
 	}
 
 	hba->dev_info.wb_enabled = enable;
-	dev_info(hba->dev, "%s Write Booster %s\n",
+	dev_info(hba->dev, "%s: Write Booster %s\n",
 			__func__, enable ? "enabled" : "disabled");
 
 	return ret;
@@ -5763,7 +5763,7 @@ static void ufshcd_wb_toggle_buf_flush_during_h8(struct ufs_hba *hba,
 			__func__, enable ? "enable" : "disable", ret);
 		return;
 	}
-	dev_dbg(hba->dev, "%s WB-Buf Flush during H8 %s\n",
+	dev_info(hba->dev, "%s: WB-Buf Flush during H8 %s\n",
 			__func__, enable ? "enabled" : "disabled");
 }
 
@@ -5776,14 +5776,13 @@ int ufshcd_wb_toggle_buf_flush(struct ufs_hba *hba, bool enable)
 
 	ret = __ufshcd_wb_toggle(hba, enable, QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN);
 	if (ret) {
-		dev_err(hba->dev, "%s WB-Buf Flush %s failed %d\n", __func__,
+		dev_err(hba->dev, "%s: WB-Buf Flush %s failed %d\n", __func__,
 			enable ? "enable" : "disable", ret);
 		return ret;
 	}
 
 	hba->dev_info.wb_buf_flush_enabled = enable;
-
-	dev_dbg(hba->dev, "%s WB-Buf Flush %s\n",
+	dev_info(hba->dev, "%s: WB-Buf Flush %s\n",
 			__func__, enable ? "enabled" : "disabled");
 
 	return ret;
@@ -5801,7 +5800,7 @@ static bool ufshcd_wb_presrv_usrspc_keep_vcc_on(struct ufs_hba *hba,
 					      QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE,
 					      index, 0, &cur_buf);
 	if (ret) {
-		dev_err(hba->dev, "%s dCurWriteBoosterBufferSize read failed %d\n",
+		dev_err(hba->dev, "%s: dCurWriteBoosterBufferSize read failed %d\n",
 			__func__, ret);
 		return false;
 	}
@@ -5886,7 +5885,7 @@ static bool ufshcd_wb_need_flush(struct ufs_hba *hba)
 				      QUERY_ATTR_IDN_AVAIL_WB_BUFF_SIZE,
 				      index, 0, &avail_buf);
 	if (ret) {
-		dev_warn(hba->dev, "%s dAvailableWriteBoosterBufferSize read failed %d\n",
+		dev_warn(hba->dev, "%s: dAvailableWriteBoosterBufferSize read failed %d\n",
 			 __func__, ret);
 		return false;
 	}
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v4 7/7] scsi: ufs: wb: Move the comment to the right position
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p4>
  2022-07-27  7:11     ` [PATCH v4 6/7] scsi: ufs: wb: Modify messages Jinyoung CHOI
@ 2022-07-27  7:12     ` Jinyoung CHOI
  1 sibling, 0 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-27  7:12 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

The location of the comment is wrong. so fix it.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
---
 drivers/ufs/core/ufshcd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index c91010fb2105..cc149f78f38f 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -1298,9 +1298,10 @@ static int ufshcd_devfreq_scale(struct ufs_hba *hba, bool scale_up)
 		}
 	}
 
-	/* Enable Write Booster if we have scaled up else disable it */
 	downgrade_write(&hba->clk_scaling_lock);
 	is_writelock = false;
+
+	/* Enable Write Booster if we have scaled up else disable it */
 	ufshcd_wb_toggle(hba, scale_up);
 
 out_unprepare:
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee
  2022-07-27  7:04     ` [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee Jinyoung CHOI
@ 2022-07-27 13:16       ` Bean Huo
  0 siblings, 0 replies; 16+ messages in thread
From: Bean Huo @ 2022-07-27 13:16 UTC (permalink / raw)
  To: j-young.choi, ALIM AKHTAR, avri.altman, bvanassche, jejb,
	martin.petersen, beanhuo, adrian.hunter, linux-scsi,
	linux-kernel

On Wed, 2022-07-27 at 16:04 +0900, Jinyoung CHOI wrote:
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index 8f11f118c30e..a3bdf9986511 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -5722,6 +5722,9 @@ static int __ufshcd_wb_toggle(struct ufs_hba
> *hba, bool set, enum flag_idn idn)
>         enum query_opcode opcode = set ? UPIU_QUERY_OPCODE_SET_FLAG :
>                                    UPIU_QUERY_OPCODE_CLEAR_FLAG;
>  
> +       if (!ufshcd_is_wb_allowed(hba))
> +               return -EPERM;
> +
Hi J-young,

here you should change its return, Otherwise, there will be an fake
error printing:

        dev_err(hba->dev, "%s Write Booster %s failed %d\n",          
                        __func__, enable ? "enable" : "disable", ret);


Kind regards,
Bean

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 2/7] scsi: ufs: wb: Change wb_enabled condition test
  2022-07-27  7:05     ` [PATCH v4 2/7] scsi: ufs: wb: Change wb_enabled condition test Jinyoung CHOI
@ 2022-07-27 13:49       ` Bean Huo
  0 siblings, 0 replies; 16+ messages in thread
From: Bean Huo @ 2022-07-27 13:49 UTC (permalink / raw)
  To: j-young.choi, ALIM AKHTAR, avri.altman, bvanassche, jejb,
	martin.petersen, beanhuo, adrian.hunter, linux-scsi,
	linux-kernel

On Wed, 2022-07-27 at 16:05 +0900, Jinyoung CHOI wrote:
> Changed to improve readability.
> As implemented in ufshcd_wb_togle_flush(), the conditional test is
> modified in the same way.
> 
> Reviewed-by: Avri Altman <avri.altman@wdc.com>
> Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>

Reviewed-by: Bean Huo <beanhuo@micron.com>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute
  2022-07-27  7:08     ` [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute Jinyoung CHOI
@ 2022-07-27 17:43       ` Bean Huo
       [not found]       ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p3>
  1 sibling, 0 replies; 16+ messages in thread
From: Bean Huo @ 2022-07-27 17:43 UTC (permalink / raw)
  To: j-young.choi, ALIM AKHTAR, avri.altman, bvanassche, jejb,
	martin.petersen, beanhuo, adrian.hunter, linux-scsi,
	linux-kernel

On Wed, 2022-07-27 at 16:08 +0900, Jinyoung CHOI wrote:
> There is the following quirk to bypass "WB Flush" in Write Booster.
> 
>         - UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL
> 
> If this quirk is not set, there is no knob that can control "WB
> Flush".

> 
> There are three flags that control Write Booster Feature.
>         1. WB ON/OFF
>         2. WB Hibern Flush ON/OFF (implicitly)
>         3. WB Flush ON/OFF (explicit)
> 
> The sysfs attribute that controls the WB was implemented. (1)
> 
> In the case of "Hibern Flush", it is always good to turn on.
> Control may not be required. (2)
> 
> Finally, "Flush" may be necessary because the Auto-Hibern8 is not
> supported in a specific environment.
> So the sysfs attribute that controls this is necessary. (3)
> 
> Reviewed-by: Avri Altman <avri.altman@wdc.com>
> Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
> ---
...
> 
> +static ssize_t wb_buf_flush_en_store(struct device *dev,
> +                                    struct device_attribute *attr,
> +                                    const char *buf, size_t count)
> +{
> +       struct ufs_hba *hba = dev_get_drvdata(dev);
> +       unsigned int wb_buf_flush_en;
> +       ssize_t res;
> +
> +       if (ufshcd_is_wb_allowed(hba) &&
> +          !(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL)) {
> +               dev_warn(dev, "It is not allowed to configure WB buf
> flush!\n");
> +               return -EOPNOTSUPP;
> +       }
> +
Hi J-young,

I don't understand here, if UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL is
not set (manual flush is not disable), so we cannot manually flush
buffer? or should we check if Auto-Hibern8 is supported?

Kind regards,
Bean

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed()
  2022-07-27  7:10     ` [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed() Jinyoung CHOI
@ 2022-07-27 17:50       ` Bean Huo
  2022-07-27 19:44       ` Bart Van Assche
  1 sibling, 0 replies; 16+ messages in thread
From: Bean Huo @ 2022-07-27 17:50 UTC (permalink / raw)
  To: j-young.choi, ALIM AKHTAR, avri.altman, bvanassche, jejb,
	martin.petersen, beanhuo, adrian.hunter, linux-scsi,
	linux-kernel

On Wed, 2022-07-27 at 16:10 +0900, Jinyoung CHOI wrote:
> The explicit flushing should check the following.
>         - UFSHCD_CAP_WB_EN
>         - UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL
> 
> Changed to improve readability.
> 
> Reviewed-by: Avri Altman <avri.altman@wdc.com>
> Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Acked-by: Bean Huo <beanhuo@micron.com>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed()
  2022-07-27  7:10     ` [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed() Jinyoung CHOI
  2022-07-27 17:50       ` Bean Huo
@ 2022-07-27 19:44       ` Bart Van Assche
  1 sibling, 0 replies; 16+ messages in thread
From: Bart Van Assche @ 2022-07-27 19:44 UTC (permalink / raw)
  To: j-young.choi, ALIM AKHTAR, avri.altman, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

On 7/27/22 00:10, Jinyoung CHOI wrote:
> diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
> index 94bcfec98fb8..78adc556444a 100644
> --- a/include/ufs/ufshcd.h
> +++ b/include/ufs/ufshcd.h
> @@ -1017,6 +1017,12 @@ static inline bool ufshcd_is_wb_allowed(struct ufs_hba *hba)
>   	return hba->caps & UFSHCD_CAP_WB_EN;
>   }
>   
> +static inline bool ufshcd_is_wb_buf_flush_allowed(struct ufs_hba *hba)
> +{
> +	return ufshcd_is_wb_allowed(hba) &&
> +		!(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL);
> +}

Since this function is only used inside the UFS driver core it should be 
added in drivers/ufs/core/ufshcd-priv.h instead of include/ufs/ufshcd.h.

Thanks,

Bart.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE:(2) [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute
       [not found]       ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p3>
@ 2022-07-28  0:54         ` Jinyoung CHOI
  0 siblings, 0 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-28  0:54 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

>> There is the following quirk to bypass "WB Flush" in Write Booster.
>> 
>>         - UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL
>> 
>> If this quirk is not set, there is no knob that can control "WB
>> Flush".
>
>> 
>> There are three flags that control Write Booster Feature.
>>         1. WB ON/OFF
>>         2. WB Hibern Flush ON/OFF (implicitly)
>>         3. WB Flush ON/OFF (explicit)
>> 
>> The sysfs attribute that controls the WB was implemented. (1)
>> 
>> In the case of "Hibern Flush", it is always good to turn on.
>> Control may not be required. (2)
>> 
>> Finally, "Flush" may be necessary because the Auto-Hibern8 is not
>> supported in a specific environment.
>> So the sysfs attribute that controls this is necessary. (3)
>> 
>> Reviewed-by: Avri Altman <avri.altman@wdc.com>
>> Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
>> ---
>...
>> 
>> +static ssize_t wb_buf_flush_en_store(struct device *dev,
>> +                                    struct device_attribute *attr,
>> +                                    const char *buf, size_t count)
>> +{
>> +       struct ufs_hba *hba = dev_get_drvdata(dev);
>> +       unsigned int wb_buf_flush_en;
>> +       ssize_t res;
>> +
>> +       if (ufshcd_is_wb_allowed(hba) &&
>> +          !(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL)) {
>> +               dev_warn(dev, "It is not allowed to configure WB buf
>> flush!\n");
>> +               return -EOPNOTSUPP;
>> +       }
>> +
>Hi J-young,
>
>I don't understand here, if UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL is
>not set (manual flush is not disable), so we cannot manually flush
>buffer? or should we check if Auto-Hibern8 is supported?
>
>Kind regards,
>Bean

Hi Bean, 
As the patch was separated, the conditional sentence went wrong.
Thank you for checking. I will modify it quickly.

Thanks,
Jinyoung.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE:(2) [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed()
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p7>
  2022-07-27  7:10     ` [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed() Jinyoung CHOI
@ 2022-07-28  1:18     ` Jinyoung CHOI
  1 sibling, 0 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-28  1:18 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, jejb, martin.petersen, beanhuo,
	adrian.hunter, linux-scsi, linux-kernel

>On 7/27/22 00:10, Jinyoung CHOI wrote:
>> diff --git a/include/ufs/ufshcd.h b/include/ufs/ufshcd.h
>> index 94bcfec98fb8..78adc556444a 100644
>> --- a/include/ufs/ufshcd.h
>> +++ b/include/ufs/ufshcd.h
>> @@ -1017,6 +1017,12 @@ static inline bool ufshcd_is_wb_allowed(struct ufs_hba *hba)
>>           return hba->caps & UFSHCD_CAP_WB_EN;
>>   }
>>   
>> +static inline bool ufshcd_is_wb_buf_flush_allowed(struct ufs_hba *hba)
>> +{
>> +        return ufshcd_is_wb_allowed(hba) &&
>> +                !(hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL);
>> +}
>
>Since this function is only used inside the UFS driver core it should be 
>added in drivers/ufs/core/ufshcd-priv.h instead of include/ufs/ufshcd.h.
>
>Thanks,
>
>Bart.

OK, I will move it.
I didn't know the exact purpose of ufshcd-priv.h.
Thank you for telling me.

Thanks, Jinyoung.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* RE:(2) [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee
       [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p8>
  2022-07-27  7:07     ` [PATCH v4 3/7] scsi: ufs: wb: Change functions name and modify Jinyoung CHOI
@ 2022-07-28  6:21     ` Jinyoung CHOI
  1 sibling, 0 replies; 16+ messages in thread
From: Jinyoung CHOI @ 2022-07-28  6:21 UTC (permalink / raw)
  To: ALIM AKHTAR, avri.altman, bvanassche, jejb, martin.petersen,
	beanhuo, adrian.hunter, linux-scsi, linux-kernel

>On Wed, 2022-07-27 at 16:04 +0900, Jinyoung CHOI wrote:
>> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
>> index 8f11f118c30e..a3bdf9986511 100644
>> --- a/drivers/ufs/core/ufshcd.c
>> +++ b/drivers/ufs/core/ufshcd.c
>> @@ -5722,6 +5722,9 @@ static int __ufshcd_wb_toggle(struct ufs_hba
>> *hba, bool set, enum flag_idn idn)
>>         enum query_opcode opcode = set ? UPIU_QUERY_OPCODE_SET_FLAG :
>>                                    UPIU_QUERY_OPCODE_CLEAR_FLAG;
>>  
>> +       if (!ufshcd_is_wb_allowed(hba))
>> +               return -EPERM;
>> +
>Hi J-young,
>
>here you should change its return, Otherwise, there will be an fake
>error printing:
>
>        dev_err(hba->dev, "%s Write Booster %s failed %d\n",          
>                        __func__, enable ? "enable" : "disable", ret);
>
>
>Kind regards,
>Bean

You are right!
Rather than changing the return value, this patch is likely to be excluded
because caller can continue unnecessary work.

Thanks, Jinyoung.

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-07-28  6:21 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p6>
2022-07-27  6:59 ` [PATCH v4 0/7] scsi: ufs: wb: Add sysfs attribute and cleanup Jinyoung CHOI
     [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p5>
2022-07-27  7:04     ` [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee Jinyoung CHOI
2022-07-27 13:16       ` Bean Huo
2022-07-27  7:05     ` [PATCH v4 2/7] scsi: ufs: wb: Change wb_enabled condition test Jinyoung CHOI
2022-07-27 13:49       ` Bean Huo
2022-07-27  7:08     ` [PATCH v4 4/7] scsi: ufs: wb: Add explicit flush sysfs attribute Jinyoung CHOI
2022-07-27 17:43       ` Bean Huo
     [not found]       ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p3>
2022-07-28  0:54         ` Jinyoung CHOI
     [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p7>
2022-07-27  7:10     ` [PATCH v4 5/7] scsi: ufs: wb: Add ufshcd_is_wb_buf_flush_allowed() Jinyoung CHOI
2022-07-27 17:50       ` Bean Huo
2022-07-27 19:44       ` Bart Van Assche
2022-07-28  1:18     ` Jinyoung CHOI
     [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p4>
2022-07-27  7:11     ` [PATCH v4 6/7] scsi: ufs: wb: Modify messages Jinyoung CHOI
2022-07-27  7:12     ` [PATCH v4 7/7] scsi: ufs: wb: Move the comment to the right position Jinyoung CHOI
     [not found]   ` <CGME20220727065904epcms2p60a7a56101785ddefa55c82b3cc25116d@epcms2p8>
2022-07-27  7:07     ` [PATCH v4 3/7] scsi: ufs: wb: Change functions name and modify Jinyoung CHOI
2022-07-28  6:21     ` RE:(2) [PATCH v4 1/7] scsi: ufs: wb: Move ufshcd_is_wb_allowed() to callee Jinyoung CHOI

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.