Anatomy of a Failover coreboot v2 Image
From coreboot
Contents |
Overview and according values
This is a pictorial view of FAILOVER_SIZE, _ROMBASE, ROM_IMAGE_SIZE, PAYLOAD_SIZE, ROM_SIZE, ROM_SECTION_SIZE, HAVE_FALLBACKBOOT, HAVE_FAILOVERBOOT for Options.lb and Config.lb.
XIP_ROM_BASE and XIP_ROM_SIZE are for MTRR setting during CAR to cache part of the ROM image. Speeds up anything with loops like copies and decompression.
Some Errors you might come across and probable solutions
coreboot input file larger than allowed size
Error:
./buildrom coreboot.strip coreboot.rom payload 0x70000 0x7f000 coreboot image is 458820 bytes; only 458752 allowed coreboot input file larger than allowed size!
Solution:
Typically caused by crt0 having a .data segment. Make sure all ROM data is defined as constant.
section .id overlaps section .rom
Error:
gcc -m32 -nostdlib -nostartfiles -static -o linuxbios -T ldscript.ld crt0.o /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: section .id [00000000ffffefd2 -> 00000000ffffefef] overlaps section .rom [00000000fffeed83 -> 00000000ffffff5f] /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: linuxbios: section .id lma 0xffffefd2 overlaps previous sections /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: linuxbios: section .reset lma 0xffffeff0 overlaps previous sections collect2: ld returned 1 exit status make[1]: *** [linuxbios] Error 1 make[1]: Leaving directory `/srv/svn/linuxbios-extra/tmp/LinuxBIOSv2-3021/util/abuild/linuxbios-builds/amd_serengeti_cheetah_fam10/fallback' make: *** [fallback/linuxbios.rom] Error 1
Solution:
Increase the ROM_IMAGE_SIZE of the failing piece. In this case the fallback image.
See also Section overlaps for a detailed description of a fix.
On the Timeline
- 1. Failover
- 2. Chooses to use Normal or Fallback
- 2.1 The choose depends on a value which is stored in NVRAM aka CMOS.
This code is at the moment mainboard specific and can normally be found in
- 3. Runs Normal or Fallback