[BUG] emmc `env erase` erase unrelated data

Francesco Dolcini francesco.dolcini at toradex.com
Mon Nov 29 14:21:23 CET 2021


Hello,
I noticed an issue with env erase command when environment is stored in a
emmc device, in case start/end are not aligned to the emmc erase groups
size additional data is erased with just a warning.

```
Erasing Environment on MMC...

Caution! Your devices Erase group is 0x400
The erase range would be change to 0xf800~0xfbff
```

Output from `mmc info`:

```
Device: FSL_SDHC
Manufacturer ID: 13
OEM: 14e
Name: S0J56
Bus Speed: 200000000
Mode: HS400 (200MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 14.8 GiB
Bus Width: 8-bit DDR
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 14.8 GiB WRREL
Boot Capacity: 31.5 MiB ENH
RPMB Capacity: 4 MiB ENH
```

I do not think that this is the correct behavior, I think that in case
the env is not aligned to the erase block size the erase should either
fail or fall back to just writing 0xff. Not sure if just changing
`mmc_berase()` is going to affect any other use case in which is valid
to have a non-aligned start/size and just erase around it after a
warning.

Any comment?

Francesco



More information about the U-Boot mailing list