diff options
author | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2013-06-23 22:15:39 +0000 |
---|---|---|
committer | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2013-06-23 22:15:39 +0000 |
commit | 682122bce7714e285d196be09d4c97666458c487 (patch) | |
tree | 026de7f194bea13e2792bdd28e5edb8242bc93c1 | |
parent | cecb2c56d07ac45cde56cadc6416e653b0cfafb7 (diff) | |
download | flashrom-682122bce7714e285d196be09d4c97666458c487.tar.gz flashrom-682122bce7714e285d196be09d4c97666458c487.tar.bz2 flashrom-682122bce7714e285d196be09d4c97666458c487.zip |
Warn if we skipped all blocks while writing
Quick hack to print a warning if we skip all blocks in a write
process because they are already equal to the requested image. We
want something like this to make users aware... and some developers
who regularly fall for this too *coughcough*. There might be more
elegant solutions for this... patches welcome.
This does not work for erasing because we do that unconditionally.
Corresponding to flashrom svn r1680.
Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Idwer Vollering <vidwer@gmail.com>
-rw-r--r-- | flash.h | 1 | ||||
-rw-r--r-- | flashrom.c | 5 |
2 files changed, 6 insertions, 0 deletions
@@ -27,6 +27,7 @@ #include <inttypes.h> #include <stdint.h> #include <stddef.h> +#include <stdbool.h> #ifdef _WIN32 #include <windows.h> #undef min @@ -1310,6 +1310,7 @@ static int selfcheck_eraseblocks(const struct flashchip *chip) return ret; } +static bool all_skipped = true; static int erase_and_write_block_helper(struct flashctx *flash, unsigned int start, unsigned int len, uint8_t *curcontents, @@ -1357,6 +1358,8 @@ static int erase_and_write_block_helper(struct flashctx *flash, } if (skip) msg_cdbg("S"); + else + all_skipped = false; return ret; } @@ -1483,6 +1486,8 @@ int erase_and_write_flash(struct flashctx *flash, uint8_t *oldcontents, if (ret) { msg_cerr("FAILED!\n"); } else { + if (all_skipped) + msg_cinfo("\nWarning: Chip content is identical to the requested image.\n"); msg_cinfo("Erase/write done.\n"); } return ret; |