Hi,
On 27.04.20 11:04, Wolfgang Kamp - datakamp wrote:
Yes it is for the UP squared board. It seems to me that coreboot writes a pointer at the end of CBFS. The pointer is 0xFF483038 at address 0xEBEFFC. This pointer is wrong. If I manually patch the value 0x48 to 0x44 everything is ok and SeaBIOS finds the CBFS,
AIUI, 0xff483038 is not a pointer but a two's-complement offset, iow. a negative number. The difference 0x40000 is the offset of the CBFS from the end of the BIOS region.
On Apollo Lake, the CBFS can't span to the end of the BIOS region and thereby also not to the end of the flash chip. Both are assumptions that were always true for x86 before APL, so this affects a lot of coreboot's ecosystem.
I'm a bit confused about the 0xEBEFFC, I would expect it at 0xbbeffc in the BIOS region (or 0xbbfffc in the coreboot.rom).
Back to the offset, I guess the difference is that `cbfstool` assumes it's the offset from the end of CBFS (offset position + 4). But SeaBIOS seems to assume it's an offset from 4GiB, or the end of the BIOS region which is mapped there.
Hope that helps and doesn't add to the confusion ;) Nico