Attention is currently required from: Aarya, Bill XIE.
Anastasia Klimchuk has posted comments on this change by Bill XIE. ( https://review.coreboot.org/c/flashrom/+/84721?usp=email )
Change subject: erasure_layout: Add an option to sacrifice unchanged blocks for speed ......................................................................
Patch Set 5:
(2 comments)
Commit Message:
https://review.coreboot.org/c/flashrom/+/84721/comment/f57f2ed5_a9fec48d?usp... : PS5, Line 9: Someone may prefer to sacrifice sub-blocks needless to change within a : larger erase block for programming speed. These people who are okay to : fry their chip sooner can set this option. If the percentage of : sub-blocks needless to change within a larger erase block is lower : than the given value, the whole larger erase block will be erased. I wrote another version of commit message, what do you think? I can update myself, but first I wanted to ask what do you think: (commit title is fine)
===
The patch adds command line option to handle the following situation:
There is a region which is requested to be erased (or written, because the write operation uses erase too). Some of the areas inside this region don't need to be erased, because the bytes already have expected value. Such areas can be skipped.
The logic selects eraseblocks that can cover the areas which need to be erased. Suppose there is a region which is partially covered by eraseblocks of size S (partially because remaining areas don't need to be erased). Now suppose we can cover the whole region with eraseblock of larger size, S+1, and erase it all at once. This will run faster: erase opcode will only be sent once instead of many smaller opcodes. However, this will run erase over some areas of the chip memory that didn't need to be erased. Which means, the chip, as a hardware, will wear faster.
New command line option sets the maximum % memory that is allowed for redundant erase. Default is 0, S+1 size block only selected if all the area needs to be erased in full. 50 means that if more than a half of the area needs to be erased, a S+1 size block can be selected to cover all area with one block.
The tradeoff is the speed of programming operation VS the longevity of the chip. Default is longevity.
File cli_classic.c:
https://review.coreboot.org/c/flashrom/+/84721/comment/2d1f60bb_1cd94751?usp... : PS3, Line 124: " --sacrifice-ratio <ratio> The percentage of overall sub-blocks needless to\n" : " change within a larger erase block to be sacrificed\n" : " for programming speed, default 0, max 100\n" I have an idea, what do you think:
Maximum % memory that is allowed for redundant erase, valid range 0 to 50. Default is 0, S+1 size block only selected if all the area needs to be erased in full. 50 means that if more than a half of the area needs to be erased, a S+1 size block can be selected to cover all area with one block.
The tradeoff is the speed of programming operation VS the longevity of the chip. Default is longevity. DANGEROUS! It wears your chip faster!