Thread (8 messages) 8 messages, 4 authors, 2021-01-27

RE: [PATCH] mmc: core: Apply trim broken quirk to R1J57L

From: Wang, Xiaolei <hidden>
Date: 2021-01-27 08:33:27
Also in: lkml


-----Original Message-----
From: Bough Chen <haibo.chen@nxp.com> 
Sent: Wednesday, January 27, 2021 3:36 PM
To: Ulf Hansson <redacted>; Wang, Xiaolei <redacted>; Fabio Estevam <festevam@gmail.com>
Cc: Pali Rohár <pali@kernel.org>; Lee Jones <redacted>; linux-mmc@vger.kernel.org; Linux Kernel Mailing List <redacted>
Subject: RE: [PATCH] mmc: core: Apply trim broken quirk to R1J57L

[Please note this e-mail is from an EXTERNAL e-mail address]
-----Original Message-----
From: Ulf Hansson [mailto:ulf.hansson@linaro.org]
Sent: 2021年1月21日 21:26
To: Wang, Xiaolei <redacted>; Fabio Estevam 
[off-list ref]; Bough Chen [off-list ref]
Cc: Pali Rohár <pali@kernel.org>; Lee Jones <redacted>; 
linux-mmc@vger.kernel.org; Linux Kernel Mailing List 
[off-list ref]
Subject: Re: [PATCH] mmc: core: Apply trim broken quirk to R1J57L

+ Fabio, Haibo

On Thu, 21 Jan 2021 at 10:54, Wang, Xiaolei 
[off-list ref]
wrote:
quoted
Hi
quoted
Are you sure this is an eMMC problem and not a mmc host driver issue?
quoted
Can you elaborate more what happens?
When I use the mkfs.f2fs tool to format the eMMC file system on the 
imx8qxp board, because mkfs.f2fs will use secdiscard first, when 
entering mmc_blk_issue_secdiscard_rq erase, once the parameters are
passed into MMC_SECURE_TRIM1_ARG, this function will take a long time 
to return .
quoted
The program has not ended, has been in TASK_UNINTERRUPTIBLE state.

I compared the mkfs.ext4 tool to format the file system. Because it 
directly uses mmc_blk_issue_discard_rq, this is a normal formatting
phenomenon.
quoted
mmc_blk_issue_secdiscard_rq and mmc_blk_issue_discard_rq are just
different commands and parameters sent by the host as a bus.
quoted
 I did not see the description of trim in the data sheet. Could the 
host driver
cause this problem?

Yes, it can - and we have had issues like these before. So before 
adding a card quirk, I think we need to make sure this isn't the case.

When using MMC_SECURE_TRIM1_ARG, it's very likely that the request 
takes longer to complete.

The mmc host is responsible for either dealing with busy detection 
with the help of its HW/controller - or if that can't be supported, 
the mmc core falls back to polling the card for busy with a CMD13.

See mmc_do_erase() in /drivers/mmc/core/core.c
quoted
Note:
The host driver I use is sdhci-esdhc-imx.c
Alright, I have looped in Fabio and Haibo that knows this driver, 
let's see if they can help.
Hi Ulf and Xiaolei,
I use the mkfs.f2fs tool format a partition on one Sandisk eMMC chip on imx8 platform, do not meet issue.
I add some log, confirm mkfs.f2fs call the mmc_blk_issue_secdiscard_rq(), and the arg is MMC_SECURE_TRIM1_ARG.
For the busy detection, imx usdhc has one register bit represent the dat0 signal level. So for your mmc device, it should be the mmc device trim feature problem.
Hi UIf and haibo

I did the verification again and found that the kernel version I used before was v5.4. The latest kernel does not have this problem.
 This patch is not accurate. I will confirm later whether it is caused by the missing patch of v5.4.

Thanks
Xiaolei
Best Regards
Haibo
quoted
Thanks
Xiaolei
Kind regards
Uffe
quoted
-----Original Message-----
From: Ulf Hansson <redacted>
Sent: Wednesday, January 20, 2021 9:41 PM
To: Wang, Xiaolei <redacted>
Cc: Pali Rohár <pali@kernel.org>; Lee Jones <redacted>; 
linux-mmc@vger.kernel.org; Linux Kernel Mailing List 
[off-list ref]
Subject: Re: [PATCH] mmc: core: Apply trim broken quirk to R1J57L

[Please note this e-mail is from an EXTERNAL e-mail address]

On Mon, 18 Jan 2021 at 05:27, Xiaolei Wang 
[off-list ref]
wrote:
quoted
quoted
R1J57L mmc chip hw capibility indicates that it supports trim 
function, but this function does not work properly, the SDIO bus 
does not respond, and the IO has been waiting so set quirks to 
skip trim
Are you sure this is an eMMC problem and not a mmc host driver issue?

Can you elaborate more what happens?

Kind regards
Uffe
quoted
Signed-off-by: Xiaolei Wang <redacted>
---
 drivers/mmc/core/quirks.h | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h 
index d68e6e513a4f..63e02391c133 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
@@ -89,6 +89,8 @@ static const struct mmc_fixup __maybe_unused
mmc_blk_fixups[] = {
quoted
quoted
                  MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
        MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG,
CID_OEMID_ANY, add_quirk_mmc,
quoted
quoted
                  MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),
+       MMC_FIXUP("R1J57L", CID_MANFID_MICRON,
CID_OEMID_ANY, add_quirk_mmc,
quoted
quoted
+                 MMC_QUIRK_SEC_ERASE_TRIM_BROKEN),

        /*
         *  On Some Kingston eMMCs, performing trim can result in
@@
quoted
quoted
-98,6 +100,8 @@ static const struct mmc_fixup __maybe_unused
mmc_blk_fixups[] = {
quoted
quoted
                  MMC_QUIRK_TRIM_BROKEN),
        MMC_FIXUP("V10016", CID_MANFID_KINGSTON,
CID_OEMID_ANY, add_quirk_mmc,
quoted
quoted
                  MMC_QUIRK_TRIM_BROKEN),
+       MMC_FIXUP("R1J57L", CID_MANFID_MICRON,
CID_OEMID_ANY, add_quirk_mmc,
quoted
quoted
+                 MMC_QUIRK_TRIM_BROKEN),

        END_FIXUP
 };
--
2.25.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help