coreboot-kgpe-d16/util
Julius Werner efcee767de CBFS: Automate ROM image layout and remove hardcoded offsets
Non-x86 boards currently need to hardcode the position of their CBFS
master header in a Kconfig. This is very brittle because it is usually
put in between the bootblock and the first CBFS entry, without any
checks to guarantee that it won't overlap either of those. It is not fun
to debug random failures that move and disappear with tiny alignment
changes because someone decided to write "ORBC1112" over some part of
your data section (in a way that is not visible in the symbolized .elf
binaries, only in the final image). This patch seeks to prevent those
issues and reduce the need for manual configuration by making the image
layout a completely automated part of cbfstool.

Since automated placement of the CBFS header means we can no longer
hardcode its position into coreboot, this patch takes the existing x86
solution of placing a pointer to the header at the very end of the
CBFS-managed section of the ROM and generalizes it to all architectures.
This is now even possible with the read-only/read-write split in
ChromeOS, since coreboot knows how large that section is from the
CBFS_SIZE Kconfig (which is by default equal to ROM_SIZE, but can be
changed on systems that place other data next to coreboot/CBFS in ROM).

Also adds a feature to cbfstool that makes the -B (bootblock file name)
argument on image creation optional, since we have recently found valid
use cases for CBFS images that are not the first boot medium of the
device (instead opened by an earlier bootloader that can already
interpret CBFS) and therefore don't really need a bootblock.

BRANCH=None
BUG=None
TEST=Built and booted on Veyron_Pinky, Nyan_Blaze and Falco.

Change-Id: Ib715bb8db258e602991b34f994750a2d3e2d5adf
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: e9879c0fbd57f105254c54bacb3e592acdcad35c
Original-Change-Id: Ifcc755326832755cfbccd6f0a12104cba28a20af
Original-Signed-off-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/229975
Reviewed-on: http://review.coreboot.org/9620
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
2015-04-14 09:01:27 +02:00
..
abuild abuild: also consider verstage architecture 2015-04-10 07:42:20 +02:00
acpi GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
amdtools Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
arm_boot_tools/mksunxiboot arm_boot_tools: Add 'b' to fopen flags for Windows compatibility 2014-12-19 18:55:34 +01:00
bimgtool util/bimgtool: Add verification mode 2015-04-10 12:03:35 +02:00
board_status board-status: update mediawiki interface 2015-03-04 20:46:01 +01:00
cbfstool CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
cbmem timestamp: Add bootblock start and end to timestamp constants 2015-04-08 08:48:04 +02:00
crossgcc crossgcc: Fix calling outside util/crossgcc 2015-03-30 12:04:39 +02:00
dtd_parser GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
dumpmmcr dumpmmcr: Fix compilation warnings in printf 2012-01-26 09:57:56 +01:00
ectool ectool: add query function to ectool 2015-04-08 08:41:59 +02:00
exynos exynos: Install the BL1 and set the checksum in the Makefile. 2014-09-09 20:01:18 +02:00
fletcher util/fletcher: fix debug option parsing 2014-10-18 14:45:42 +02:00
genbuild_h util/genbuild_h: work around GNU date 2015-03-29 22:45:08 +02:00
genprof util/genprof: improve handling of command line arguments 2014-08-12 09:02:44 +02:00
gitconfig git: add rebase helper script 2015-04-10 09:01:30 +02:00
i915tool util/i915tool: close the file also when fread() returned an error 2014-07-30 13:16:53 +02:00
ifdfake ifdfake - Create an IFD with just a section layout 2013-06-24 17:56:42 +02:00
ifdtool ifdtool: Add O_BINARY to open flags for Windows compatibility 2014-12-19 18:55:48 +01:00
inteltool inteltool: add ICH8M-E support 2015-03-26 03:33:46 +01:00
ipqheader util/ipqheader: Add utility to create uber-SBL for IPQ8064 2015-04-13 17:36:27 +02:00
k8resdump GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
kconfig kconfig: Add wildcard support for "source" 2015-04-06 23:52:57 +02:00
lbtdump lbtdump: Dump forwarded tables. 2014-03-09 21:19:29 +01:00
lint checkpatch: Fix running out of coreboot's tree 2015-03-24 23:35:28 +01:00
msrtool utils/msrtool: add westmere cpuids to nehalem 2015-02-11 02:51:16 +01:00
nvidia cbootimage: Add HOSTCC and flags 2015-02-15 09:21:02 +01:00
nvramtool nvramtool: fix getopt handling with unsigned char 2015-04-06 23:29:06 +02:00
optionlist GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
resetcf Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
rockchip add make_idb.py & update bootblock 2015-03-24 15:24:52 +01:00
romcc romcc: avoid use-after-free 2014-09-06 09:21:07 +02:00
runfw ARM: Generalize armv7 as arm. 2014-09-08 18:59:23 +02:00
sconfig sconfig: add cpu device type 2014-10-07 21:03:25 +02:00
showdevicetree ARM: Generalize armv7 as arm. 2014-09-08 18:59:23 +02:00
spkmodem_recv Add spkmodem receiver 2013-06-12 05:18:24 +02:00
superiotool util/superiotool: change displayed name of chip id 0xc333 (nct6776) 2014-12-19 19:01:47 +01:00
uio_usbdebug uio_usbdebug: User-space-i/o framework for usbdebug 2015-03-19 19:19:42 +01:00
vgabios Rename devices -> device 2012-11-30 23:59:58 +01:00
viatool viatool: Add utility to read various configuration bits on VIA systems 2013-06-04 22:36:26 +02:00
xcompile armv7-m: add armv7-m configuration 2015-04-10 07:42:18 +02:00