mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 06:32:34 +02:00
Fix verification operation
I broke this in r1702 where I enabled avoidance of the verification step if we did not modify anything in the erase/write step. The problem is that all_skipped is initialized to true and hence it would only ever verify if there have been changes noted in the erase/write step. This obviously breaks the verification operation (-v/--verify) because there we never enter the erase/write loop. The better alternative would be to enable (the implicit) verification in the write loop and not in cli_classic.c. This would require a bigger change due to the existance of dont_verify_it. Eventually this is the right thing to do but not so shortly before a release. Corresponding to flashrom svn r1707. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
parent
463dd6953e
commit
c4f44df55f
@ -175,8 +175,7 @@ int main(int argc, char *argv[])
|
|||||||
cli_classic_abort_usage();
|
cli_classic_abort_usage();
|
||||||
}
|
}
|
||||||
if (dont_verify_it) {
|
if (dont_verify_it) {
|
||||||
fprintf(stderr, "--verify and --noverify are"
|
fprintf(stderr, "--verify and --noverify are mutually exclusive. Aborting.\n");
|
||||||
"mutually exclusive. Aborting.\n");
|
|
||||||
cli_classic_abort_usage();
|
cli_classic_abort_usage();
|
||||||
}
|
}
|
||||||
filename = strdup(optarg);
|
filename = strdup(optarg);
|
||||||
@ -184,8 +183,7 @@ int main(int argc, char *argv[])
|
|||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
if (verify_it) {
|
if (verify_it) {
|
||||||
fprintf(stderr, "--verify and --noverify are"
|
fprintf(stderr, "--verify and --noverify are mutually exclusive. Aborting.\n");
|
||||||
"mutually exclusive. Aborting.\n");
|
|
||||||
cli_classic_abort_usage();
|
cli_classic_abort_usage();
|
||||||
}
|
}
|
||||||
dont_verify_it = 1;
|
dont_verify_it = 1;
|
||||||
|
@ -335,6 +335,9 @@ struct shutdown_func_data {
|
|||||||
*/
|
*/
|
||||||
static int may_register_shutdown = 0;
|
static int may_register_shutdown = 0;
|
||||||
|
|
||||||
|
/* Did we change something or was every erase/write skipped (if any)? */
|
||||||
|
static bool all_skipped = true;
|
||||||
|
|
||||||
static int check_block_eraser(const struct flashctx *flash, int k, int log);
|
static int check_block_eraser(const struct flashctx *flash, int k, int log);
|
||||||
|
|
||||||
/* Register a function to be executed on programmer shutdown.
|
/* Register a function to be executed on programmer shutdown.
|
||||||
@ -1309,7 +1312,6 @@ static int selfcheck_eraseblocks(const struct flashchip *chip)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool all_skipped = true;
|
|
||||||
static int erase_and_write_block_helper(struct flashctx *flash,
|
static int erase_and_write_block_helper(struct flashctx *flash,
|
||||||
unsigned int start, unsigned int len,
|
unsigned int start, unsigned int len,
|
||||||
uint8_t *curcontents,
|
uint8_t *curcontents,
|
||||||
@ -1995,7 +1997,8 @@ int doit(struct flashctx *flash, int force, const char *filename, int read_it,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verify_it && !all_skipped) {
|
/* Verify only if we either did not try to write (verify operation) or actually changed something. */
|
||||||
|
if (verify_it && (!write_it || !all_skipped)) {
|
||||||
msg_cinfo("Verifying flash... ");
|
msg_cinfo("Verifying flash... ");
|
||||||
|
|
||||||
if (write_it) {
|
if (write_it) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user