From 49b9cab3929b929ffa6a39fb23eef3b00bd22ae1 Mon Sep 17 00:00:00 2001 From: Carl-Daniel Hailfinger Date: Thu, 23 Jul 2009 01:42:56 +0000 Subject: Continue erase/write verification after the first error The first error is printed in detail and all subsequent errors are listed in statistics. This allows users to check if there was just one error or if the failure was widespread. Corresponding to flashrom svn r663. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Stefan Reinauer --- flashrom.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'flashrom.c') diff --git a/flashrom.c b/flashrom.c index 11efd25..5764872 100644 --- a/flashrom.c +++ b/flashrom.c @@ -278,6 +278,7 @@ int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, c int i, j, starthere, lenhere, ret = 0; int page_size = flash->page_size; uint8_t *readbuf = malloc(page_size); + int failcount = 0; if (!len) goto out_free; @@ -318,15 +319,21 @@ int verify_range(struct flashchip *flash, uint8_t *cmpbuf, int start, int len, c flash->read(flash, readbuf, starthere, lenhere); for (j = 0; j < lenhere; j++) { if (cmpbuf[starthere - start + j] != readbuf[j]) { - fprintf(stderr, "%s FAILED at 0x%08x! " - "Expected=0x%02x, Read=0x%02x\n", - message, starthere + j, - cmpbuf[starthere - start + j], readbuf[j]); - ret = -1; - goto out_free; + /* Only print the first failure. */ + if (!failcount++) + fprintf(stderr, "%s FAILED at 0x%08x! " + "Expected=0x%02x, Read=0x%02x,", + message, starthere + j, + cmpbuf[starthere - start + j], + readbuf[j]); } } } + if (failcount) { + fprintf(stderr, " failed byte count from 0x%08x-0x%08x: 0x%x\n", + start, start + len - 1, failcount); + ret = -1; + } out_free: free(readbuf); -- cgit v1.1