Nico Huber has uploaded this change for review. ( https://review.coreboot.org/21792
Change subject: cli_classic: Add option (-N, --noverify-all) ......................................................................
cli_classic: Add option (-N, --noverify-all)
This option specifies to verify included regions only after a write. It also reduces the data read before the write.
v2: o Changed short option name to `-N`. o Added section in the manual page.
Original-Change-Id: I40b5983f56d62821d17b827b88b73d1d41a30bd7 Original-Reviewed-on: https://review.coreboot.org/17950 Original-Tested-by: build bot (Jenkins) no-reply@coreboot.org Original-Reviewed-by: Stefan Reinauer stefan.reinauer@coreboot.org
Change-Id: I0244b114920c215f1e6b1573fcefaa23c9be241b Signed-off-by: Nico Huber nico.huber@secunet.com --- M cli_classic.c M flashrom.8.tmpl 2 files changed, 26 insertions(+), 5 deletions(-)
git pull ssh://review.coreboot.org:29418/flashrom refs/changes/92/21792/1
diff --git a/cli_classic.c b/cli_classic.c index 1845dbd..30ff140 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -42,7 +42,7 @@ "-z|" #endif "-p <programmername>[:<parameters>] [-c <chipname>]\n" - "[-E|(-r|-w|-v) <file>] [-l <layoutfile> [-i <imagename>]...] [-n] [-f]]\n" + "[-E|(-r|-w|-v) <file>] [-l <layoutfile> [-i <imagename>]...] [-n] [-N] [-f]]\n" "[-V[V[V]]] [-o <logfile>]\n\n", name);
printf(" -h | --help print this help text\n" @@ -55,6 +55,7 @@ " -c | --chip <chipname> probe only for specified flash chip\n" " -f | --force force specific operations (see man page)\n" " -n | --noverify don't auto-verify\n" + " -N | --noverify-all verify included regions only (cf. -i)\n" " -l | --layout <layoutfile> read ROM layout from <layoutfile>\n" " -i | --image <name> only flash image <name> from flash layout\n" " -o | --output <logfile> log output to <logfile>\n" @@ -103,17 +104,18 @@ int list_supported_wiki = 0; #endif int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0; - int dont_verify_it = 0, list_supported = 0, operation_specified = 0; + int dont_verify_it = 0, dont_verify_all = 0, list_supported = 0, operation_specified = 0; enum programmer prog = PROGRAMMER_INVALID; int ret = 0;
- static const char optstring[] = "r:Rw:v:nVEfc:l:i:p:Lzho:"; + static const char optstring[] = "r:Rw:v:nNVEfc:l:i:p:Lzho:"; static const struct option long_options[] = { {"read", 1, NULL, 'r'}, {"write", 1, NULL, 'w'}, {"erase", 0, NULL, 'E'}, {"verify", 1, NULL, 'v'}, {"noverify", 0, NULL, 'n'}, + {"noverify-all", 0, NULL, 'N'}, {"chip", 1, NULL, 'c'}, {"verbose", 0, NULL, 'V'}, {"force", 0, NULL, 'f'}, @@ -189,6 +191,9 @@ cli_classic_abort_usage(); } dont_verify_it = 1; + break; + case 'N': + dont_verify_all = 1; break; case 'c': chip_to_probe = strdup(optarg); @@ -538,7 +543,7 @@ flashrom_flag_set(fill_flash, FLASHROM_FLAG_FORCE_BOARDMISMATCH, !!force_boardmismatch); #endif flashrom_flag_set(fill_flash, FLASHROM_FLAG_VERIFY_AFTER_WRITE, !dont_verify_it); - flashrom_flag_set(fill_flash, FLASHROM_FLAG_VERIFY_WHOLE_CHIP, true); + flashrom_flag_set(fill_flash, FLASHROM_FLAG_VERIFY_WHOLE_CHIP, !dont_verify_all);
/* FIXME: We should issue an unconditional chip reset here. This can be * done once we have a .reset function in struct flashchip. diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl index 34e1fe7..34e7f02 100644 --- a/flashrom.8.tmpl +++ b/flashrom.8.tmpl @@ -48,7 +48,8 @@ \fB-p\fR <programmername>[:<parameters>] [\fB-E\fR|\fB-r\fR <file>|\fB-w\fR <file>|\fB-v\fR <file>] \ [\fB-c\fR <chipname>] - [\fB-l\fR <file> [\fB-i\fR <image>]] [\fB-n\fR] [\fB-f\fR]] + [\fB-l\fR <file> [\fB-i\fR <image>]] [\fB-n\fR] [\fB-N\fR] \ +[\fB-f\fR]] [\fB-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>] .SH DESCRIPTION .B flashrom @@ -112,6 +113,21 @@ This option is only useful in combination with .BR --write . .TP +.B "-N, --noverify-all" +Skip not included regions during automatic verification after writing (cf. +.BR "-l " "and " "-i" ). +You should only use this option if you are sure that communication with +the flash chip is reliable (e.g. when using the +.BR internal +programmer). Even if flashrom is instructed not to touch parts of the +flash chip, their contents could be damaged (e.g. due to misunderstood +erase commands). +.sp +This option is required to flash an Intel system with locked ME flash +region using the +.BR internal +programmer. It may be enabled by default in this case in the future. +.TP .B "-v, --verify <file>" Verify the flash ROM contents against the given .BR <file> .