Edward O'Callaghan submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved Anastasia Klimchuk: Looks good to me, approved
cli_classic.c: Convert do_erase() to libflashrom call

Inline emergency_help_message() to cli_classic call site.
This leaves do_erase() a redudant wrapper and moves us a step
closer to cli_classic as a pure libflashrom user by using
flashrom_flash_erase().

BUG=b:208132085
TEST=`flashrom -E`

Change-Id: I8566164e7dbad69cf478b24208014f10fb99e4d0
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/60068
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
---
M cli_classic.c
M flash.h
M flashrom.c
3 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/cli_classic.c b/cli_classic.c
index 1b9c5ba..3cd78d4 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -840,8 +840,18 @@
ret = do_read(fill_flash, filename);
else if (extract_it)
ret = do_extract(fill_flash);
- else if (erase_it)
- ret = do_erase(fill_flash);
+ else if (erase_it) {
+ ret = flashrom_flash_erase(fill_flash);
+ /*
+ * FIXME: Do we really want the scary warning if erase failed?
+ * After all, after erase the chip is either blank or partially
+ * blank or it has the old contents. A blank chip won't boot,
+ * so if the user wanted erase and reboots afterwards, the user
+ * knows very well that booting won't work.
+ */
+ if (ret)
+ emergency_help_message();
+ }
else if (write_it)
ret = do_write(fill_flash, filename, referencefile);
else if (verify_it)
diff --git a/flash.h b/flash.h
index 391a2d4..11e6389 100644
--- a/flash.h
+++ b/flash.h
@@ -344,6 +344,7 @@
int read_flash_to_file(struct flashctx *flash, const char *filename);
int verify_range(struct flashctx *flash, const uint8_t *cmpbuf, unsigned int start, unsigned int len);
int need_erase(const uint8_t *have, const uint8_t *want, unsigned int len, enum write_granularity gran, const uint8_t erased_value);
+void emergency_help_message(void);
void print_version(void);
void print_buildinfo(void);
void print_banner(void);
@@ -355,7 +356,6 @@
void finalize_flash_access(struct flashctx *);
int do_read(struct flashctx *, const char *filename);
int do_extract(struct flashctx *);
-int do_erase(struct flashctx *);
int do_write(struct flashctx *, const char *const filename, const char *const referencefile);
int do_verify(struct flashctx *, const char *const filename);
int register_chip_restore(chip_restore_fn_cb_t func, struct flashctx *flash, uint8_t status);
diff --git a/flashrom.c b/flashrom.c
index dd443b9..1cdddab 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1553,7 +1553,7 @@
"https://www.flashrom.org/Contact for details), thanks!\n");
}

-static void emergency_help_message(void)
+void emergency_help_message(void)
{
msg_gerr("Your flash chip is in an unknown state.\n");
#if CONFIG_INTERNAL == 1
@@ -2208,23 +2208,6 @@
return do_read(flash, NULL);
}

-int do_erase(struct flashctx *const flash)
-{
- const int ret = flashrom_flash_erase(flash);
-
- /*
- * FIXME: Do we really want the scary warning if erase failed?
- * After all, after erase the chip is either blank or partially
- * blank or it has the old contents. A blank chip won't boot,
- * so if the user wanted erase and reboots afterwards, the user
- * knows very well that booting won't work.
- */
- if (ret)
- emergency_help_message();
-
- return ret;
-}
-
int do_write(struct flashctx *const flash, const char *const filename, const char *const referencefile)
{
const size_t flash_size = flash->chip->total_size * 1024;

5 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one.

To view, visit change 60068. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I8566164e7dbad69cf478b24208014f10fb99e4d0
Gerrit-Change-Number: 60068
Gerrit-PatchSet: 7
Gerrit-Owner: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com>
Gerrit-Reviewer: Daniel Campello <campello@chromium.org>
Gerrit-Reviewer: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Nico Huber <nico.h@gmx.de>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Paul Menzel <paulepanter@mailbox.org>
Gerrit-CC: Thomas Heijligen <src@posteo.de>
Gerrit-MessageType: merged