Flashrom did not use the read function for verifying, it used direct memory
access instead. That fails if the flash chip is not mapped completely.
If the read function is set in struct flashchip, use it for verification
as well.

This fixes verification of all SPI flash chips >512 kByte behind an
IT8716F flash translation chip.

Signed-off-by: Carl-Daniel Hailfinger <[EMAIL PROTECTED]>

Index: flashrom-big/flashrom.c
===================================================================
--- flashrom-big/flashrom.c     (Revision 3069)
+++ flashrom-big/flashrom.c     (Arbeitskopie)
@@ -159,7 +159,11 @@
 {
        int idx;
        int total_size = flash->total_size * 1024;
-       volatile uint8_t *bios = flash->virtual_memory;
+       uint8_t *buf2 = (uint8_t *) calloc(total_size, sizeof(char));
+       if (flash->read == NULL)
+               memcpy(buf2, (const char *)flash->virtual_memory, total_size);
+       else
+               flash->read(flash, buf2);
 
        printf("Verifying flash... ");
 
@@ -170,7 +174,7 @@
                if (verbose && ((idx & 0xfff) == 0xfff))
                        printf("0x%08x", idx);
 
-               if (*(bios + idx) != *(buf + idx)) {
+               if (*(buf2 + idx) != *(buf + idx)) {
                        if (verbose) {
                                printf("0x%08x ", idx);
                        }



-- 
coreboot mailing list
coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to