[coreboot] flashrom issues found??

joe at smittys.pointclark.net joe at smittys.pointclark.net
Sun Mar 9 20:20:11 CET 2008


Quoting Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>:

> On 09.03.2008 08:50, joe at smittys.pointclark.net wrote:
>> Quoting ron minnich <rminnich at gmail.com>:
>>
>>> On Sat, Mar 8, 2008 at 11:24 PM,  <joe at smittys.pointclark.net> wrote:
>>>
>>>> Ok,
>>>>  I think I know what is going on here after looking at the uniflash
>>>>  source code. I found this comment in the Intel programming code "Do
>>>>  not program FF, erase will result in all FF's so it's not necessary.
>>>>  Besides, 2*FF means reset ..."
>>>>
>>>>  So, I removed this function from jedec.c and rebuilt flashrom.
>>>>
>>>>  // dumb check if erase was successful.
>>>>  for (i = 0; i < total_size; i++) {
>>>>         if (bios[i] != (uint8_t) 0xff) {
>>>>                 printf("ERASE FAILED @%d, val %02x!\n", i, bios[i]);
>>>>                 return -1;
>>>>         }
>>>>  }
>>>>
>>>>  It seems to work fine now. Is this a bug for Intel ICH series???
>>>>
>>> if it is we should not modify jedec.c -- that seems to work many
>>> places. Rather, we need to make a special function -- ich only -- and
>>> use that on ich.
>>>
>> Maybe we can add an ich.c to flashrom then??
>>
>
> What are you trying to do? The code you quoted does not write to the
> chip at all.
>
If you look at jedec.c at the bottom you would see what I mean. It is  
part of the write_jedec function. I can do everything else except  
write (-w) to the flash chip. I get a:

Vendor ID: rca, part ID: rm4100
Found chipset "ICH4/ICH4-L", enabling flash write... OK.
NOT FOUND rca:rm4100
M50FW080 found at physical address 0xfff00000.
Flash part is M50FW080 (1024 KB).
ERASE FAILED @0, val 92!

If I remove the above function from write_jedec flashrom writes to the  
chip just fine.
>
> By the way, there is a bug in erase_chip_jedec() at the end. We use the
> simple toggle_ready_jedec() to check for end of erase operation and
> toggle_ready_jedec() spins in a tight loop without delays. Some chips
> (e.g. W39V040B) are documented to hang/crash/whatever if you try JEDEC
> toogle bit requests to check for the end of an erase operation in
> shorter intervals than 50 ms, right now we run the loop 1000000 times
> faster than allowed.
>
> write_jedec already makes sure not to write 0xff to the chip by calling
> write_page_write_jedec() which has the check for 0xff inside.
>
> So can we please find the real problem and fix it?
>
So maybe there is an issue with erase_chip_jedec than??


Thanks - Joe




More information about the coreboot mailing list