* [PATCH] mmc: card: increase wait time
[not found] <CGME20171114024825eucas1p218873c4ff649c17d4061b6660aa6264f@eucas1p2.samsung.com>
@ 2017-11-14 2:48 ` Huijin Park
2017-11-14 12:44 ` Avri Altman
2017-11-15 9:13 ` Ulf Hansson
0 siblings, 2 replies; 8+ messages in thread
From: Huijin Park @ 2017-11-14 2:48 UTC (permalink / raw)
To: ulf.hansson; +Cc: linux-mmc, bbang.huijin.park, Huijin Park
Some eMMC products keep busy time a little longer intermittently.
(eg. prepare free blocks, garbage collection...)
In this case, we recommend to wait a little longer than fail.
Signed-off-by: Huijin Park <huijin.park@samsung.com>
---
drivers/mmc/core/block.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index ea80ff4..b5b0fe6 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
* Ensure RPMB command has completed by polling CMD13
* "Send Status".
*/
- err = ioctl_rpmb_card_status_poll(card, &status, 5);
+ err = ioctl_rpmb_card_status_poll(card, &status, 50);
if (err)
dev_err(mmc_dev(card->host),
"%s: Card Status=0x%08X, error %d\n",
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* RE: [PATCH] mmc: card: increase wait time
2017-11-14 2:48 ` [PATCH] mmc: card: increase wait time Huijin Park
@ 2017-11-14 12:44 ` Avri Altman
2017-11-15 4:52 ` Park Huijin
2017-11-15 9:13 ` Ulf Hansson
1 sibling, 1 reply; 8+ messages in thread
From: Avri Altman @ 2017-11-14 12:44 UTC (permalink / raw)
To: Huijin Park, ulf.hansson; +Cc: linux-mmc, bbang.huijin.park
> -----Original Message-----
> From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc-
> owner@vger.kernel.org] On Behalf Of Huijin Park
> Sent: Tuesday, November 14, 2017 4:48 AM
> To: ulf.hansson@linaro.org
> Cc: linux-mmc@vger.kernel.org; bbang.huijin.park@gmail.com; Huijin Park
> <huijin.park@samsung.com>
> Subject: [PATCH] mmc: card: increase wait time
>
> Some eMMC products keep busy time a little longer intermittently.
> (eg. prepare free blocks, garbage collection...) In this case, we recommend to
> wait a little longer than fail.
>
> Signed-off-by: Huijin Park <huijin.park@samsung.com>
> ---
> drivers/mmc/core/block.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index
> ea80ff4..b5b0fe6 100644
> --- a/drivers/mmc/core/block.c
> +++ b/drivers/mmc/core/block.c
> @@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card
> *card, struct mmc_blk_data *md,
> * Ensure RPMB command has completed by polling CMD13
> * "Send Status".
> */
> - err = ioctl_rpmb_card_status_poll(card, &status, 5);
> + err = ioctl_rpmb_card_status_poll(card, &status, 50);
Is this up to 1.25 sec or am I counting wrong?
5[msec] x 5 [__mmc_send_status] x 50
> if (err)
> dev_err(mmc_dev(card->host),
> "%s: Card Status=0x%08X, error
> %d\n",
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the
> body of a message to majordomo@vger.kernel.org More majordomo info at
> http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: card: increase wait time
2017-11-14 12:44 ` Avri Altman
@ 2017-11-15 4:52 ` Park Huijin
0 siblings, 0 replies; 8+ messages in thread
From: Park Huijin @ 2017-11-15 4:52 UTC (permalink / raw)
To: Avri Altman; +Cc: Huijin Park, ulf.hansson, linux-mmc
The" [__mmc_send_status] 5" doesn't wait 5[msec].
So it wait up to 5[msec] x 50.
Thanks.
2017-11-14 21:44 GMT+09:00 Avri Altman <Avri.Altman@wdc.com>:
>
>
>> -----Original Message-----
>> From: linux-mmc-owner@vger.kernel.org [mailto:linux-mmc-
>> owner@vger.kernel.org] On Behalf Of Huijin Park
>> Sent: Tuesday, November 14, 2017 4:48 AM
>> To: ulf.hansson@linaro.org
>> Cc: linux-mmc@vger.kernel.org; bbang.huijin.park@gmail.com; Huijin Park
>> <huijin.park@samsung.com>
>> Subject: [PATCH] mmc: card: increase wait time
>>
>> Some eMMC products keep busy time a little longer intermittently.
>> (eg. prepare free blocks, garbage collection...) In this case, we recommend to
>> wait a little longer than fail.
>>
>> Signed-off-by: Huijin Park <huijin.park@samsung.com>
>> ---
>> drivers/mmc/core/block.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index
>> ea80ff4..b5b0fe6 100644
>> --- a/drivers/mmc/core/block.c
>> +++ b/drivers/mmc/core/block.c
>> @@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card
>> *card, struct mmc_blk_data *md,
>> * Ensure RPMB command has completed by polling CMD13
>> * "Send Status".
>> */
>> - err = ioctl_rpmb_card_status_poll(card, &status, 5);
>> + err = ioctl_rpmb_card_status_poll(card, &status, 50);
> Is this up to 1.25 sec or am I counting wrong?
> 5[msec] x 5 [__mmc_send_status] x 50
>
>> if (err)
>> dev_err(mmc_dev(card->host),
>> "%s: Card Status=0x%08X, error
>> %d\n",
>> --
>> 1.9.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the
>> body of a message to majordomo@vger.kernel.org More majordomo info at
>> http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: card: increase wait time
2017-11-14 2:48 ` [PATCH] mmc: card: increase wait time Huijin Park
2017-11-14 12:44 ` Avri Altman
@ 2017-11-15 9:13 ` Ulf Hansson
2017-11-20 4:50 ` Park Huijin
1 sibling, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2017-11-15 9:13 UTC (permalink / raw)
To: Huijin Park; +Cc: linux-mmc, bbang.huijin.park
On 14 November 2017 at 03:48, Huijin Park <huijin.park@samsung.com> wrote:
> Some eMMC products keep busy time a little longer intermittently.
> (eg. prepare free blocks, garbage collection...)
> In this case, we recommend to wait a little longer than fail.
Is this an rpmb specific problem, because the code seems only to change that.
Is it write and read or only write?
>
> Signed-off-by: Huijin Park <huijin.park@samsung.com>
> ---
> drivers/mmc/core/block.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> index ea80ff4..b5b0fe6 100644
> --- a/drivers/mmc/core/block.c
> +++ b/drivers/mmc/core/block.c
> @@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
> * Ensure RPMB command has completed by polling CMD13
> * "Send Status".
> */
> - err = ioctl_rpmb_card_status_poll(card, &status, 5);
> + err = ioctl_rpmb_card_status_poll(card, &status, 50);
First, you are changing "re-tries" not a timeout value, which would
seem like a better approach.
Second, it seems like we should remove the
ioctl_rpmb_card_status_poll() function altogether and instead make use
of the more generic card_busy_detect() function here.
Then if card_busy_detect() needs to be adopted to suite rpmb, then we
should do that instead.
> if (err)
> dev_err(mmc_dev(card->host),
> "%s: Card Status=0x%08X, error %d\n",
> --
> 1.9.1
>
Kind regards
Uffe
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: card: increase wait time
2017-11-15 9:13 ` Ulf Hansson
@ 2017-11-20 4:50 ` Park Huijin
2017-11-21 9:02 ` Ulf Hansson
0 siblings, 1 reply; 8+ messages in thread
From: Park Huijin @ 2017-11-20 4:50 UTC (permalink / raw)
To: Ulf Hansson; +Cc: Huijin Park, linux-mmc, js07.lee
2017-11-15 18:13 GMT+09:00 Ulf Hansson <ulf.hansson@linaro.org>:
>
> On 14 November 2017 at 03:48, Huijin Park <huijin.park@samsung.com> wrote:
> > Some eMMC products keep busy time a little longer intermittently.
> > (eg. prepare free blocks, garbage collection...)
> > In this case, we recommend to wait a little longer than fail.
>
> Is this an rpmb specific problem, because the code seems only to change that.
>
> Is it write and read or only write?
Yes. It's rpmb specific problem.
RPMB R/W use same flow. but only 'write' case makes the problem(long
busy state) sometimes.
When I test it, the 5~25ms is not enough although there is not max
busy time in the spec.
>
> >
> > Signed-off-by: Huijin Park <huijin.park@samsung.com>
> > ---
> > drivers/mmc/core/block.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> > index ea80ff4..b5b0fe6 100644
> > --- a/drivers/mmc/core/block.c
> > +++ b/drivers/mmc/core/block.c
> > @@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
> > * Ensure RPMB command has completed by polling CMD13
> > * "Send Status".
> > */
> > - err = ioctl_rpmb_card_status_poll(card, &status, 5);
> > + err = ioctl_rpmb_card_status_poll(card, &status, 50);
>
> First, you are changing "re-tries" not a timeout value, which would
> seem like a better approach.
I will modify it. Thanks.
>
> Second, it seems like we should remove the
> ioctl_rpmb_card_status_poll() function altogether and instead make use
> of the more generic card_busy_detect() function here.
>
> Then if card_busy_detect() needs to be adopted to suite rpmb, then we
> should do that instead.
I agree that. But the two function are different a little.
'ioctl_rpmb_card_status_poll()' has interval(1~5ms) that prevent to
poll too frequently.
So I suggest to improve 'card_busy_detect()' about interval time in
another patch.
Then the 'ioctl_rpmb_card_status_poll()' can replaced by 'card_busy_detect()'
>
> > if (err)
> > dev_err(mmc_dev(card->host),
> > "%s: Card Status=0x%08X, error %d\n",
> > --
> > 1.9.1
> >
>
> Kind regards
> Uffe
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: card: increase wait time
2017-11-20 4:50 ` Park Huijin
@ 2017-11-21 9:02 ` Ulf Hansson
2017-11-21 9:34 ` Shawn Lin
0 siblings, 1 reply; 8+ messages in thread
From: Ulf Hansson @ 2017-11-21 9:02 UTC (permalink / raw)
To: Park Huijin; +Cc: Huijin Park, linux-mmc, Jungseung Lee
On 20 November 2017 at 05:50, Park Huijin <bbang.huijin.park@gmail.com> wrote:
> 2017-11-15 18:13 GMT+09:00 Ulf Hansson <ulf.hansson@linaro.org>:
>>
>> On 14 November 2017 at 03:48, Huijin Park <huijin.park@samsung.com> wrote:
>> > Some eMMC products keep busy time a little longer intermittently.
>> > (eg. prepare free blocks, garbage collection...)
>> > In this case, we recommend to wait a little longer than fail.
>>
>> Is this an rpmb specific problem, because the code seems only to change that.
>>
>> Is it write and read or only write?
> Yes. It's rpmb specific problem.
> RPMB R/W use same flow. but only 'write' case makes the problem(long
> busy state) sometimes.
> When I test it, the 5~25ms is not enough although there is not max
> busy time in the spec.
As a matter of fact this isn't specific to RPMB writes at all but to
all data writes. That's why we call card_busy_detect() after a data
write.
>
>>
>> >
>> > Signed-off-by: Huijin Park <huijin.park@samsung.com>
>> > ---
>> > drivers/mmc/core/block.c | 2 +-
>> > 1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
>> > index ea80ff4..b5b0fe6 100644
>> > --- a/drivers/mmc/core/block.c
>> > +++ b/drivers/mmc/core/block.c
>> > @@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
>> > * Ensure RPMB command has completed by polling CMD13
>> > * "Send Status".
>> > */
>> > - err = ioctl_rpmb_card_status_poll(card, &status, 5);
>> > + err = ioctl_rpmb_card_status_poll(card, &status, 50);
>>
>> First, you are changing "re-tries" not a timeout value, which would
>> seem like a better approach.
> I will modify it. Thanks.
>
>>
>> Second, it seems like we should remove the
>> ioctl_rpmb_card_status_poll() function altogether and instead make use
>> of the more generic card_busy_detect() function here.
>>
>> Then if card_busy_detect() needs to be adopted to suite rpmb, then we
>> should do that instead.
> I agree that. But the two function are different a little.
> 'ioctl_rpmb_card_status_poll()' has interval(1~5ms) that prevent to
> poll too frequently.
Well, polling too frequently is then already a problem for the general
data writes. Isn't it?
Or you think RPMB may differ a bit in this regards?
> So I suggest to improve 'card_busy_detect()' about interval time in
> another patch.
Okay.
However, I don't think it's a stopper, you should be able to convert
RPMB to use card_busy_detect() as is. Then you can fix the polling
interval time on top.
What you do need to fix is that card_busy_detect() takes an struct
request *req as in-parameter, and uses it to print the disk_name. I
suggest to change the in-parameter to be the disk_name instead, that
way it would work for RPMB as well.
> Then the 'ioctl_rpmb_card_status_poll()' can replaced by 'card_busy_detect()'
Great!
[...]
Kind regards
Uffe
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: card: increase wait time
2017-11-21 9:02 ` Ulf Hansson
@ 2017-11-21 9:34 ` Shawn Lin
2017-11-21 11:38 ` Ulf Hansson
0 siblings, 1 reply; 8+ messages in thread
From: Shawn Lin @ 2017-11-21 9:34 UTC (permalink / raw)
To: Ulf Hansson, Park Huijin; +Cc: shawn.lin, Huijin Park, linux-mmc, Jungseung Lee
Hi Ulf,
On 2017/11/21 17:02, Ulf Hansson wrote:
> On 20 November 2017 at 05:50, Park Huijin <bbang.huijin.park@gmail.com> wrote:
>> 2017-11-15 18:13 GMT+09:00 Ulf Hansson <ulf.hansson@linaro.org>:
>>>
>>> On 14 November 2017 at 03:48, Huijin Park <huijin.park@samsung.com> wrote:
>>>> Some eMMC products keep busy time a little longer intermittently.
>>>> (eg. prepare free blocks, garbage collection...)
>>>> In this case, we recommend to wait a little longer than fail.
>>>
>>> Is this an rpmb specific problem, because the code seems only to change that.
>>>
>>> Is it write and read or only write?
>> Yes. It's rpmb specific problem.
>> RPMB R/W use same flow. but only 'write' case makes the problem(long
>> busy state) sometimes.
>> When I test it, the 5~25ms is not enough although there is not max
>> busy time in the spec.
>
> As a matter of fact this isn't specific to RPMB writes at all but to
> all data writes. That's why we call card_busy_detect() after a data
> write.
Further more, we should cover all transfer pattern from userspace, not
just data writes. :)
https://www.spinics.net/lists/linux-mmc/msg46147.html
>
>>
>>>
>>>>
>>>> Signed-off-by: Huijin Park <huijin.park@samsung.com>
>>>> ---
>>>> drivers/mmc/core/block.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
>>>> index ea80ff4..b5b0fe6 100644
>>>> --- a/drivers/mmc/core/block.c
>>>> +++ b/drivers/mmc/core/block.c
>>>> @@ -584,7 +584,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,
>>>> * Ensure RPMB command has completed by polling CMD13
>>>> * "Send Status".
>>>> */
>>>> - err = ioctl_rpmb_card_status_poll(card, &status, 5);
>>>> + err = ioctl_rpmb_card_status_poll(card, &status, 50);
>>>
>>> First, you are changing "re-tries" not a timeout value, which would
>>> seem like a better approach.
>> I will modify it. Thanks.
>>
>>>
>>> Second, it seems like we should remove the
>>> ioctl_rpmb_card_status_poll() function altogether and instead make use
>>> of the more generic card_busy_detect() function here.
>>>
>>> Then if card_busy_detect() needs to be adopted to suite rpmb, then we
>>> should do that instead.
>> I agree that. But the two function are different a little.
>> 'ioctl_rpmb_card_status_poll()' has interval(1~5ms) that prevent to
>> poll too frequently.
>
> Well, polling too frequently is then already a problem for the general
> data writes. Isn't it?
>
> Or you think RPMB may differ a bit in this regards?
>
>> So I suggest to improve 'card_busy_detect()' about interval time in
>> another patch.
>
> Okay.
>
> However, I don't think it's a stopper, you should be able to convert
> RPMB to use card_busy_detect() as is. Then you can fix the polling
> interval time on top.
>
> What you do need to fix is that card_busy_detect() takes an struct
> request *req as in-parameter, and uses it to print the disk_name. I
> suggest to change the in-parameter to be the disk_name instead, that
> way it would work for RPMB as well.
>
>> Then the 'ioctl_rpmb_card_status_poll()' can replaced by 'card_busy_detect()'
>
> Great!
>
> [...]
>
> Kind regards
> Uffe
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] mmc: card: increase wait time
2017-11-21 9:34 ` Shawn Lin
@ 2017-11-21 11:38 ` Ulf Hansson
0 siblings, 0 replies; 8+ messages in thread
From: Ulf Hansson @ 2017-11-21 11:38 UTC (permalink / raw)
To: Shawn Lin; +Cc: Park Huijin, Huijin Park, linux-mmc, Jungseung Lee
On 21 November 2017 at 10:34, Shawn Lin <shawn.lin@rock-chips.com> wrote:
> Hi Ulf,
>
> On 2017/11/21 17:02, Ulf Hansson wrote:
>>
>> On 20 November 2017 at 05:50, Park Huijin <bbang.huijin.park@gmail.com>
>> wrote:
>>>
>>> 2017-11-15 18:13 GMT+09:00 Ulf Hansson <ulf.hansson@linaro.org>:
>>>>
>>>>
>>>> On 14 November 2017 at 03:48, Huijin Park <huijin.park@samsung.com>
>>>> wrote:
>>>>>
>>>>> Some eMMC products keep busy time a little longer intermittently.
>>>>> (eg. prepare free blocks, garbage collection...)
>>>>> In this case, we recommend to wait a little longer than fail.
>>>>
>>>>
>>>> Is this an rpmb specific problem, because the code seems only to change
>>>> that.
>>>>
>>>> Is it write and read or only write?
>>>
>>> Yes. It's rpmb specific problem.
>>> RPMB R/W use same flow. but only 'write' case makes the problem(long
>>> busy state) sometimes.
>>> When I test it, the 5~25ms is not enough although there is not max
>>> busy time in the spec.
>>
>>
>> As a matter of fact this isn't specific to RPMB writes at all but to
>> all data writes. That's why we call card_busy_detect() after a data
>> write.
>
>
> Further more, we should cover all transfer pattern from userspace, not
> just data writes. :)
>
> https://www.spinics.net/lists/linux-mmc/msg46147.html
Ack!
Kind regards
Uffe
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-11-21 11:38 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20171114024825eucas1p218873c4ff649c17d4061b6660aa6264f@eucas1p2.samsung.com>
2017-11-14 2:48 ` [PATCH] mmc: card: increase wait time Huijin Park
2017-11-14 12:44 ` Avri Altman
2017-11-15 4:52 ` Park Huijin
2017-11-15 9:13 ` Ulf Hansson
2017-11-20 4:50 ` Park Huijin
2017-11-21 9:02 ` Ulf Hansson
2017-11-21 9:34 ` Shawn Lin
2017-11-21 11:38 ` Ulf Hansson
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.