Linux MultiMedia Card development
 help / color / mirror / Atom feed
From: "Christian Löhle" <CLoehle@hyperstone.com>
To: Avri Altman <Avri.Altman@wdc.com>,
	"ulf.hansson@linaro.org" <ulf.hansson@linaro.org>,
	"adrian.hunter@intel.com" <adrian.hunter@intel.com>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>
Subject: RE: [PATCH] mmc-utils: Add basic erase error check
Date: Mon, 12 Dec 2022 14:00:58 +0000	[thread overview]
Message-ID: <1f4cb8a2e7094b249a8f40b7f4eb01da@hyperstone.com> (raw)
In-Reply-To: <DM6PR04MB65756CBEFE329BB16361ED2CFCE29@DM6PR04MB6575.namprd04.prod.outlook.com>

-----Original Message-----
From: Avri Altman <Avri.Altman@wdc.com> 
Sent: Montag, 12. Dezember 2022 14:45
To: Christian Löhle <CLoehle@hyperstone.com>; ulf.hansson@linaro.org; adrian.hunter@intel.com; linux-mmc@vger.kernel.org
Subject: RE: [PATCH] mmc-utils: Add basic erase error check

>> Check for erase specific R1 errors so e.g. an OOR erase is not 
>> reported as successful when it never executed.
>> 
>> There could be checks for more error bits but R1_ERASE_SEQ_ERROR on 
>> CMD38 should catch all that are reported by hardware anyway.
>> 
>> Signed-off-by: Christian Loehle <cloehle@hyperstone.com>
>> ---
>>  mmc_cmds.c | 18 ++++++++++++++++++
>>  1 file changed, 18 insertions(+)
>> 
>> diff --git a/mmc_cmds.c b/mmc_cmds.c
>> index e6d3273..c00fe5e 100644
>> --- a/mmc_cmds.c
>> +++ b/mmc_cmds.c
>> @@ -54,6 +54,7 @@
>>  #define WPTYPE_PWRON 2
>>  #define WPTYPE_PERM 3
>> 
>> +#define ERASE_R1_ERR_MASK (R1_ERASE_SEQ_ERROR | R1_ERASE_PARAM |
>> R1_ERASE_RESET)
>> 
>>  int read_extcsd(int fd, __u8 *ext_csd)  { @@ -2668,6 +2669,23 @@ 
>> static int erase(int dev_fd, __u32 argin, __u32 start,
>> __u32 end)
>>         if (ret)
>>                 perror("Erase multi-cmd ioctl");
>> 
>> +       /* Does not work for SPI cards */
>> +       if (multi_cmd->cmds[0].response[0] & ERASE_R1_ERR_MASK) {
>> +               fprintf(stderr, "Erase start response: %08x\n",
>> +                               multi_cmd->cmds[0].response[0]);
>> +               ret = -EIO;
>> +       }
>> +       if (multi_cmd->cmds[1].response[0] & ERASE_R1_ERR_MASK) {
>> +               fprintf(stderr, "Erase end response: %08x\n",
>> +                               multi_cmd->cmds[1].response[0]);
>> +               ret = -EIO;
>> +       }
>> +       if (multi_cmd->cmds[2].response[0] & ERASE_R1_ERR_MASK) {
>> +               fprintf(stderr, "Erase response: %08x\n",
>> +                               multi_cmd->cmds[2].response[0]);
>> +               ret = -EIO;
>> +       }
>> +
> AFAIK the device will not set those bits in the command responses, but those are only available to read in the status register.
> Let me check.
>
> Thanks,
> Avri

So any R1 response which all of the three are? Or am I misunderstanding you?

Anyway the (eMMC) spec reads:
"If an erase command (either CMD35, CMD36, CMD38) is received out of the defined erase sequence, the Device shall set the ERASE_SEQ_ERROR bit in the status register and reset the whole sequence. If the host provides an out of range address as an argument to CMD35 or CMD36, the Device will reject the command, respond with the ADDRESS_OUT_OF_RANGE bit set and reset the whole erase sequence."
And for the cards that I've tried this holds true.
For SD a CMD13 after CMD38 is required, too.
I guess I can add that.

Regards,
Christian

Hyperstone GmbH | Reichenaustr. 39a  | 78467 Konstanz
Managing Director: Dr. Jan Peter Berns.
Commercial register of local courts: Freiburg HRB381782


  reply	other threads:[~2022-12-12 14:01 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-12  9:21 [PATCH] mmc-utils: Add basic erase error check Christian Löhle
2022-12-12 13:44 ` Avri Altman
2022-12-12 14:00   ` Christian Löhle [this message]
2022-12-12 14:08     ` Christian Löhle
2022-12-13 14:00       ` Avri Altman
2022-12-13 15:26         ` Christian Löhle
2022-12-14  8:15           ` Avri Altman
2022-12-15 18:14             ` Christian Löhle
2022-12-16  6:11               ` Avri Altman
2023-01-02 12:01                 ` Avri Altman
  -- strict thread matches above, loose matches on Subject: below --
2023-01-16 10:49 Christian Löhle
2023-01-16 11:10 ` Avri Altman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1f4cb8a2e7094b249a8f40b7f4eb01da@hyperstone.com \
    --to=cloehle@hyperstone.com \
    --cc=Avri.Altman@wdc.com \
    --cc=adrian.hunter@intel.com \
    --cc=linux-mmc@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox