From: oracleks043021@gmail.com
To: beanhuo@micron.com, kenny.gibbons@oracle.com,
kimito.sakata@oracle.com, rkamdar@micron.com, chris@printf.net,
ulf.hansson@linaro.org, avri.altman@wdc.com
Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH RESEND v4] Clean up and show effect of ERASE_GROUP_DEF
Date: Wed, 5 May 2021 21:29:45 -0600 [thread overview]
Message-ID: <20210506032945.939-1-oracleks043021@gmail.com> (raw)
From: Kimito Sakata <kimito.sakata@oracle.com>
Replaced unused pointer with NULL on calls to strtol().
Added logic to print High Capacity mode parameters of Erase unit size,
Erase Timeout, Write protect Group Size if the EXT_CSD_ERASE_GrOUP_DEF
bit 0 is enabled.
Tested on X86 but the changes should work on all platforms.
Co-developed-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Kimito Sakata <kimito.sakata@oracle.com>
Reviewed-by: Kenneth Gibbons <kenny.gibbons@oracle.com>
Changelog:
V3--V4:
1. Replace unused pointer var with NULL.
2. Added msg if ERASE_GROUP_DEF enabled for HC.
v2--v3:
1. Remove redundant ifndef
V1--V2:
1. refactor Kimito's original patch
2. change to use MMC_IOC_MULTI_CMD
3. add checkup if eMMC devie supports secure erase/trim
---
mmc_cmds.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/mmc_cmds.c b/mmc_cmds.c
index 3e36ff2..afa85b7 100644
--- a/mmc_cmds.c
+++ b/mmc_cmds.c
@@ -2518,6 +2518,22 @@ static int erase(int dev_fd, __u32 argin, __u32 start, __u32 end)
{
int ret = 0;
struct mmc_ioc_multi_cmd *multi_cmd;
+ __u8 ext_csd[512];
+
+
+ ret = read_extcsd(dev_fd, ext_csd);
+ if (ret) {
+ fprintf(stderr, "Could not read EXT_CSD\n");
+ exit(1);
+ }
+ if (ext_csd[EXT_CSD_ERASE_GROUP_DEF] & 0x01) {
+ fprintf(stderr, "High Capacity Erase Unit Size=%d bytes\n" \
+ "High Capacity Erase Timeout=%d ms\n" \
+ "High Capacity Write Protect Group Size=%d bytes\n",
+ ext_csd[224]*0x80000,
+ ext_csd[223]*300,
+ ext_csd[221]*ext_csd[224]*0x80000);
+ }
multi_cmd = calloc(1, sizeof(struct mmc_ioc_multi_cmd) +
3 * sizeof(struct mmc_ioc_cmd));
@@ -2559,7 +2575,6 @@ int do_erase(int nargs, char **argv)
{
int dev_fd, ret;
char *print_str;
- char **eptr = NULL;
__u8 ext_csd[512], checkup_mask = 0;
__u32 arg, start, end;
@@ -2569,14 +2584,14 @@ int do_erase(int nargs, char **argv)
}
if (strstr(argv[2], "0x") || strstr(argv[2], "0X"))
- start = strtol(argv[2], eptr, 16);
+ start = strtol(argv[2], NULL, 16);
else
- start = strtol(argv[2], eptr, 10);
+ start = strtol(argv[2], NULL, 10);
if (strstr(argv[3], "0x") || strstr(argv[3], "0X"))
- end = strtol(argv[3], eptr, 16);
+ end = strtol(argv[3], NULL, 16);
else
- end = strtol(argv[3], eptr, 10);
+ end = strtol(argv[3], NULL, 10);
if (end < start) {
fprintf(stderr, "erase start [0x%08x] > erase end [0x%08x]\n",
--
2.31.1
next reply other threads:[~2021-05-06 3:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-06 3:29 oracleks043021 [this message]
2021-05-06 6:44 ` [PATCH RESEND v4] Clean up and show effect of ERASE_GROUP_DEF 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=20210506032945.939-1-oracleks043021@gmail.com \
--to=oracleks043021@gmail.com \
--cc=avri.altman@wdc.com \
--cc=beanhuo@micron.com \
--cc=chris@printf.net \
--cc=kenny.gibbons@oracle.com \
--cc=kimito.sakata@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=rkamdar@micron.com \
--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;
as well as URLs for NNTP newsgroup(s).