
Hi Sam,
On Wed, Jan 15, 2020 at 04:59:13PM +0200, Sam Protsenko wrote:
The main point of my patch is to fix the erasing of partitions smaller than group erase size (512 KiB on BeagleBoard X15). For example, it's impossible to erase 'misc' partition (128 KiB), as such an operation would erase 512 KiB, so alignment code leads to no-op.
At this point the discussion is no longer specific to fastboot, as your points also apply to erasing MMC partitions in general.
I think clarifying below might be helpful (some questions might have obvious answers): - Is it legitimate to have partitions smaller than erase group size? - Is it legitimate to have partitions not aligned to erase group size? - How does U-Boot 'mmc' command and Linux behave when erasing a partition smaller or not aligned to erase group size?
Also, I wouldn't jump into conclusions about fastboot spec. Relying on 0xFF can be useful e.g. for testing purposes.
All that said, I'm positive that this issue should be fixed. The only way I see to avoid performance degradation is to:
- use actual MMC erase operation when erasing partition >= group erase size
- use MMC write operation when erasing partition < group erase size
Fair enough.
But that leaves unhandled the case when partition is bigger than group erase size, but not a multiple o group erase size (so the remainder won't be erased). Of course we can do MMC write op for the not aligned remainder, but how would we know if MMC controller fills with 0x00 of with 0xFF on MMC erase op? So all those options considered, I decided to go with just MMC write operation for "fastboot erase".
I think we should check how Linux behaves in similar use-cases and possibly inspire from there (ideally by backporting the necessary patches).
I will try to come up with v2 soon, but I don't see any ideal/elegant solution here. So if you have any ideas, please share.
Just shared my thoughts. Looking forward to seeing the v2.