Am Samstag, den 31.10.2009, 15:43 +0000 schrieb Zheng Bao:
The filo crashes if the filo and coreboot overlap. Since the CBFS is the must-have feature, my family 10 board crashes when it jumps to filo. I am trying to find out why. I need help. Based on current code, the AMD Family 10 will cause the filo and coreboot overlap in RAM. The overlaps_coreboot() in selfboot.c will return 1. But I am not sure if it will make the system crashes.
What revision is that? There was an issue like that but I fixed it several weeks ago.
If anybody explains briefly what happens if they overlap.
When coreboot and payload overlap, coreboot uses a bounce buffer. The bounce buffer is twice the size of coreboot. The first half is for the part of the payload that overlaps coreboot, the other half is for coreboot itself.
The SELF loader loads data that would overlap coreboot to the bounce buffer, and jumps into jmp_to_elf_entry when it's done with loading. The jmp_to_elf_entry function copies coreboot to the upper half of the bounce buffer, and jumps in there, so the code is out of the way.
Then it copies the lower half to the coreboot area and jumps to the entry point.
There are some complications to that because of the decompression routine, so the code is not as nice as it should be. But I specifically tested your scenario (payload from 1mb to 2.3mb or so, coreboot starting at 2mb)
The coreboot information: CONFIG_RAMBASE=0x00200000
Try changing that to 0x100000.
Patrick