Edward O'Callaghan submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Anastasia Klimchuk: Looks good to me, approved
flashrom: Drop read_flash_to_file() usage

Aspire towards a goal of making cli_classic more of just
a user of libflashrom than having quasi-parallel paths in
flashrom.c

This converts remaining read_flash_to_file() usage to the
do_read() provider wrapper around libflashrom.

BUG=b:208132085
TEST=`
sudo ./flashrom -p ft2232_spi:type=232H,divisor=1000 -f -r out -c W25X05
Flashrom output:

No EEPROM/flash device found.
Force read (-f -r -c) requested, pretending the chip is there:
Assuming Winbond flash chip "W25X05" (64 kB, SPI) on ft2232_spi.
Please note that forced reads most likely contain garbage.
Block protection could not be disabled!
Reading flash... done.
Data read:

xxd out-1khz
00000000: 0000 07ff ffff e000 0000 7fff fffe 0000 ................
00000010: 0007 ffff ffe0 0000 007f ffff fe00 0000 ................
00000020: 07ff ffff e000 0000 7fff fffe 0000 0007 ................
00000030: ffff ffe0 0000 007f ffff fe00 0000 0fff ................
xxd out-100khz
00000000: b6db 6db6 db6d b6db 6db6 db6d b6db 6db6 ..m..m..m..m..m.
00000010: db6d b6db 6db6 db6d b6db 6db6 db6d b6db .m..m..m..m..m..
00000020: 6db6 db6d b6db 6db6 db24 9249 2492 4924 m..m..m..$.I$.I$
00000030: 9249 2492 4924 9249 2492 4924 9249 2492 .I$.I$.I$.I$.I$.
`

Change-Id: I4b690b688acf9d5deb46e8642a252a2132ea8c73
Signed-off-by: Edward O'Callaghan <quasisec@google.com>
Tested-by: Nikolai Artemiev <nartemiev@google.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/59291
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
---
M cli_classic.c
M dummyflasher.c
M flashrom.c
M include/flash.h
4 files changed, 3 insertions(+), 44 deletions(-)

diff --git a/cli_classic.c b/cli_classic.c
index a0c18d4..9543009 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -916,14 +916,9 @@
ret = 1;
goto out_shutdown;
}
- if (map_flash(&flashes[0]) != 0) {
- free(flashes[0].chip);
- ret = 1;
- goto out_shutdown;
- }
msg_cinfo("Please note that forced reads most likely contain garbage.\n");
- ret = read_flash_to_file(&flashes[0], filename);
- unmap_flash(&flashes[0]);
+ flashrom_flag_set(&flashes[0], FLASHROM_FLAG_FORCE, !!force);
+ ret = do_read(&flashes[0], filename);
free(flashes[0].chip);
goto out_shutdown;
}
diff --git a/dummyflasher.c b/dummyflasher.c
index 1ee9d3e..50a84d4 100644
--- a/dummyflasher.c
+++ b/dummyflasher.c
@@ -1265,7 +1265,7 @@
* Once that happens, we need to have special hacks in functions:
*
* erase_and_write_flash() in flashrom.c
- * read_flash_to_file()
+ * do_read()
* handle_romentries()
* ...
*
diff --git a/flashrom.c b/flashrom.c
index 9b136a0..e8ed87e 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -1070,41 +1070,6 @@
return 0;
}

-int read_flash_to_file(struct flashctx *flash, const char *filename)
-{
- unsigned long size = flash->chip->total_size * 1024;
- unsigned char *buf = calloc(size, sizeof(unsigned char));
- int ret = 0;
-
- msg_cinfo("Reading flash... ");
- if (!buf) {
- msg_gerr("Memory allocation failed!\n");
- msg_cinfo("FAILED.\n");
- return 1;
- }
- if (!flash->chip->read) {
- msg_cerr("No read function available for this flash chip.\n");
- ret = 1;
- goto out_free;
- }
- if (read_by_layout(flash, buf)) {
- msg_cerr("Read operation failed!\n");
- ret = 1;
- goto out_free;
- }
- if (write_buf_to_include_args(flash, buf)) {
- ret = 1;
- goto out_free;
- }
-
- if (filename)
- ret = write_buf_to_file(buf, size, filename);
-out_free:
- free(buf);
- msg_cinfo("%s.\n", ret ? "FAILED" : "done");
- return ret;
-}
-
/* Even if an error is found, the function will keep going and check the rest. */
static int selfcheck_eraseblocks(const struct flashchip *chip)
{
diff --git a/include/flash.h b/include/flash.h
index 805387f..5170ba7 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -410,7 +410,6 @@
int read_memmapped(struct flashctx *flash, uint8_t *buf, unsigned int start, unsigned int len);
int erase_flash(struct flashctx *flash);
int probe_flash(struct registered_master *mst, int startchip, struct flashctx *fill_flash, int force);
-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);

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

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: I4b690b688acf9d5deb46e8642a252a2132ea8c73
Gerrit-Change-Number: 59291
Gerrit-PatchSet: 18
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: Nikolai Artemiev <nartemiev@google.com>
Gerrit-Reviewer: Thomas Heijligen <src@posteo.de>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-CC: Nico Huber <nico.h@gmx.de>
Gerrit-CC: Paul Menzel <paulepanter@mailbox.org>
Gerrit-MessageType: merged