Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: mmc_test: use erase_arg for mmc_erase command

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."

On STM32MP157C-EV1 board, embedding a THGBMDG5D1LBAIL eMMC, using
MMC_ERASE command with MMC_SECURE_ERASE_ARG may stuck the STM32 SDMMC IP,
if test 37 or test 38 are launched just after a write test, e.g. test 36.
Using the default MMC_ERASE argument from framework with erase_arg,
which default in our case to MMC_DISCARD_ARG does no more trig the
issue.

[1] commit 01904ff77676 ("mmc: core: Calculate the discard arg only once")

Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20210209145214.10518-1-yann.gautier@foss.st.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

authored by

Yann Gautier and committed by
Ulf Hansson
3f957dec 0c1a3e8b

+1 -1
+1 -1
drivers/mmc/core/mmc_test.c
··· 2110 2110 if (mmc_can_erase(test->card) && 2111 2111 tdata->prepare & MMC_TEST_PREP_ERASE) { 2112 2112 ret = mmc_erase(test->card, dev_addr, 2113 - size / 512, MMC_SECURE_ERASE_ARG); 2113 + size / 512, test->card->erase_arg); 2114 2114 if (ret) 2115 2115 ret = mmc_erase(test->card, dev_addr, 2116 2116 size / 512, MMC_ERASE_ARG);