Attention is currently required from: Aarya.
Anastasia Klimchuk has uploaded this change for review. ( https://review.coreboot.org/c/flashrom/+/77747?usp=email )
Change subject: [WIP] Fix double invocation of erasers ......................................................................
[WIP] Fix double invocation of erasers
Change-Id: I92351eba0fd29114ce98b4a839358e92d176af28 Signed-off-by: Anastasia Klimchuk aklm@flashrom.org --- M erasure_layout.c 1 file changed, 15 insertions(+), 7 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/47/77747/1
diff --git a/erasure_layout.c b/erasure_layout.c index c9ac44b..06626c3 100644 --- a/erasure_layout.c +++ b/erasure_layout.c @@ -304,6 +304,7 @@ goto _end; }
+ unsigned int last_addr = start_addr; unsigned int len; for (unsigned int addr = start_addr; addr < start_addr + block_len; addr += len) { struct flash_region region; @@ -337,15 +338,22 @@ msg_cerr("ERASE FAILED!\n"); goto _end; } + + last_addr = addr + len; }
- ret = erasefn(flashctx, start_addr, block_len); - if (ret) { - msg_cerr("Failed to execute erase command " - "for offset %#"PRIx32" to %#"PRIx32".\n", - start_addr, start_addr + block_len); - ret = -1; - goto _end; + if (last_addr < start_addr + block_len) { + // Something is left to erase + printf("Left to erase from %#"PRIx32" to %#"PRIx32".\n", last_addr, start_addr + block_len); + unsigned int remaining_len = start_addr + block_len - last_addr; + ret = erasefn(flashctx, last_addr, remaining_len); + if (ret) { + msg_cerr("Failed to execute erase command " + "for offset %#"PRIx32" to %#"PRIx32".\n", + last_addr, last_addr + remaining_len); + ret = -1; + goto _end; + } }
// adjust curcontents