coreboot-kgpe-d16/src/lib
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
..
loaders New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
bootblock.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
bootmem.c
bootmode.c
cbfs.c cbfs: Enforce media->map() result checking, improve error messages 2015-04-07 23:02:18 +02:00
cbfs_core.c CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
cbfs_core.h CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
cbfs_spi.c New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
cbmem_common.c coreboot: fix munged license text 2015-03-09 02:32:19 +01:00
cbmem_console.c New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
clog2.c src/lib/clog2.c: Fix style and clarity, remove some cruft 2014-06-20 08:06:51 +02:00
compute_ip_checksum.c
coreboot_table.c ramoops: Add support for passing ramoops region through cb tables. 2015-04-10 16:48:30 +02:00
debug.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
delay.c
dynamic_cbmem.c hardwaremain: explicitly call cbmem_initialize() early 2015-04-07 23:02:32 +02:00
edid.c drivers/xgi/z9s: Port Linux framebuffer initialization to coreboot 2015-02-05 17:37:05 +01:00
fallback_boot.c lib: Add Kconfig option to enable/disable auto fallback control 2015-03-17 04:22:23 +01:00
gcc.c lib: Trivial - drop trailing blank lines at EOF 2014-07-08 13:52:15 +02:00
gcov-glue.c bootstate: use structure pointers for scheduling callbacks 2015-03-18 16:41:43 +01:00
gcov-io.c
gcov-io.h
gcov-iov.h
generic_dump_spd.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
generic_sdram.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
gpio.c gpio: add a function to read GPIO array as base-2 value 2015-04-10 11:59:30 +02:00
halt.c Introduce halt() 2014-11-30 12:20:05 +01:00
hardwaremain.c hardwaremain: explicitly call cbmem_initialize() early 2015-04-07 23:02:32 +02:00
hexdump.c
jpeg.c
jpeg.h
libgcov.c
lzma.c Add and consistently use wrapper macro for romstage static variables 2015-03-09 22:42:28 +01:00
lzmadecode.c RISCV: get RISCV to build again 2014-12-04 19:17:51 +01:00
lzmadecode.h
Makefile.inc gpio: compile gpio.c at all stages 2015-04-10 12:00:25 +02:00
malloc.c lib/malloc.c: Remove pre-proc guard around include 2014-11-11 12:33:01 +01:00
memchr.c
memcmp.c
memcpy.c
memmove.c
memrange.c coreboot memrange: Two changes for zero size or empty memrange 2015-03-04 19:55:19 +01:00
memset.c
primitive_memtest.c Primitive memory test 2015-01-09 16:50:55 +01:00
prog_ops.c program loading: add prog_run() function 2015-04-03 14:52:47 +02:00
ramstage.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
ramstage_cache.c program loading: introduce struct prog 2015-04-03 14:51:51 +02:00
ramtest.c misc: Drop print_ implementation from non-romcc boards 2015-01-09 06:12:22 +01:00
reg_script.c baytrail: Change all SoC headers to <soc/headername.h> system 2015-04-07 18:23:21 +02:00
rmodule.c rmodule: remove cbmem_entry usage 2015-04-07 23:03:45 +02:00
rmodule.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
romstage.ld New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
selfboot.c New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
stack.c stack check: cosmetics 2014-09-12 22:03:53 +02:00
thread.c Possible thread stack implementation. 2014-08-07 23:55:15 +02:00
timer.c timer: Add generic udelay() implementation 2015-04-08 18:35:01 +02:00
timer_queue.c
timestamp.c timestamps: Switch from tsc_t to uint64_t 2015-01-05 22:21:49 +01:00
tlcl.c vboot: Include vb2_api.h, instead of lower-level vboot2 header files 2015-04-10 16:49:15 +02:00
tlcl_internal.h vboot2: read secdata and nvdata 2015-03-23 19:51:47 +01:00
tlcl_structures.h vboot2: copy tlcl from vboot_reference as a preparation for vboot2 integration 2015-01-27 01:43:57 +01:00
tpm_error_messages.h TPM: Fix whitespace 2015-02-06 00:25:59 +01:00
trace.c
version.c build.h: remove variable for the builduser, -hostname and -domain 2015-03-09 17:53:16 +01:00