From: Yann Gautier <[email protected]>
We are facing issues when testing STM32MP157C-EV1 board with latest MMC
developments.
The commands with R1B responses weren't correctly managed, needing
MMC_CAP_NEED_RSP_BUSY.
The Ux500 platforms have the same busy detection feature, so this
flag is enabled for them too. But this change has only been tested
on STM32MP1 boards, as I don't have ux500 hardware.
The mmc_test should rely on the erase argument set in the framework,
when using MMC_ERASE command.
Yann Gautier (2):
mmc: mmci: enable MMC_CAP_NEED_RSP_BUSY
mmc: mmc_test: use erase_arg for mmc_erase command
drivers/mmc/core/mmc_test.c | 2 +-
drivers/mmc/host/mmci.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--
2.17.1
From: Yann Gautier <[email protected]>
Since [1], the erase argument for mmc_erase() function is saved in
erase_arg field of card structure. It is preferable to use it instead of
hard-coded MMC_SECURE_ERASE_ARG, which from eMMC 4.51 spec is not
recommended:
"6.6.16 Secure Erase
NOTE Secure Erase is included for backwards compatibility. New system
level implementations (based on v4.51 devices and beyond) should use
Erase combined with Sanitize instead of secure erase."
[1] commit 01904ff77676 ("mmc: core: Calculate the discard arg only once")
Signed-off-by: Yann Gautier <[email protected]>
---
drivers/mmc/core/mmc_test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mmc/core/mmc_test.c b/drivers/mmc/core/mmc_test.c
index 39a478874ca3..63524551a13a 100644
--- a/drivers/mmc/core/mmc_test.c
+++ b/drivers/mmc/core/mmc_test.c
@@ -2110,7 +2110,7 @@ static int mmc_test_rw_multiple(struct mmc_test_card *test,
if (mmc_can_erase(test->card) &&
tdata->prepare & MMC_TEST_PREP_ERASE) {
ret = mmc_erase(test->card, dev_addr,
- size / 512, MMC_SECURE_ERASE_ARG);
+ size / 512, test->card->erase_arg);
if (ret)
ret = mmc_erase(test->card, dev_addr,
size / 512, MMC_ERASE_ARG);
--
2.17.1
On 4/02/21 2:05 pm, [email protected] wrote:
> From: Yann Gautier <[email protected]>
>
> Since [1], the erase argument for mmc_erase() function is saved in
> erase_arg field of card structure. It is preferable to use it instead of
> hard-coded MMC_SECURE_ERASE_ARG, which from eMMC 4.51 spec is not
> recommended:
> "6.6.16 Secure Erase
> NOTE Secure Erase is included for backwards compatibility. New system
> level implementations (based on v4.51 devices and beyond) should use
> Erase combined with Sanitize instead of secure erase."
>
> [1] commit 01904ff77676 ("mmc: core: Calculate the discard arg only once")
>
Did you experience an issue because of this? You could add that to the
commit message.
There does not seem to be a need for secure erase, so:
Acked-by: Adrian Hunter <[email protected]>
> Signed-off-by: Yann Gautier <[email protected]>
> ---
> drivers/mmc/core/mmc_test.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/core/mmc_test.c b/drivers/mmc/core/mmc_test.c
> index 39a478874ca3..63524551a13a 100644
> --- a/drivers/mmc/core/mmc_test.c
> +++ b/drivers/mmc/core/mmc_test.c
> @@ -2110,7 +2110,7 @@ static int mmc_test_rw_multiple(struct mmc_test_card *test,
> if (mmc_can_erase(test->card) &&
> tdata->prepare & MMC_TEST_PREP_ERASE) {
> ret = mmc_erase(test->card, dev_addr,
> - size / 512, MMC_SECURE_ERASE_ARG);
> + size / 512, test->card->erase_arg);
> if (ret)
> ret = mmc_erase(test->card, dev_addr,
> size / 512, MMC_ERASE_ARG);
>
On 2/5/21 7:33 AM, Adrian Hunter wrote:
> On 4/02/21 2:05 pm, [email protected] wrote:
>> From: Yann Gautier <[email protected]>
>>
>> Since [1], the erase argument for mmc_erase() function is saved in
>> erase_arg field of card structure. It is preferable to use it instead of
>> hard-coded MMC_SECURE_ERASE_ARG, which from eMMC 4.51 spec is not
>> recommended:
>> "6.6.16 Secure Erase
>> NOTE Secure Erase is included for backwards compatibility. New system
>> level implementations (based on v4.51 devices and beyond) should use
>> Erase combined with Sanitize instead of secure erase."
>>
>> [1] commit 01904ff77676 ("mmc: core: Calculate the discard arg only once")
>>
>
> Did you experience an issue because of this? You could add that to the
> commit message.
Hi Adrian,
Thanks for the review!
Yes, I've seen an issue on STM32MP157C-EV1 board.
After a write test (e.g. test 36), the tests 37 or 38, using mmc_erase
fail. With the erase argument used by default in the framework
(MMC_DISCARD_ARG), I can no more see this.
I can send a new version of the series with comment update here, and a
fixup on the first patch.
Regards,
Yann
>
> There does not seem to be a need for secure erase, so:
>
> Acked-by: Adrian Hunter <[email protected]>
>
>
>> Signed-off-by: Yann Gautier <[email protected]>
>> ---
>> drivers/mmc/core/mmc_test.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/mmc/core/mmc_test.c b/drivers/mmc/core/mmc_test.c
>> index 39a478874ca3..63524551a13a 100644
>> --- a/drivers/mmc/core/mmc_test.c
>> +++ b/drivers/mmc/core/mmc_test.c
>> @@ -2110,7 +2110,7 @@ static int mmc_test_rw_multiple(struct mmc_test_card *test,
>> if (mmc_can_erase(test->card) &&
>> tdata->prepare & MMC_TEST_PREP_ERASE) {
>> ret = mmc_erase(test->card, dev_addr,
>> - size / 512, MMC_SECURE_ERASE_ARG);
>> + size / 512, test->card->erase_arg);
>> if (ret)
>> ret = mmc_erase(test->card, dev_addr,
>> size / 512, MMC_ERASE_ARG);
>>
>