coreboot/src/lib
Julius Werner 1e37c9ca46 cbfs: Add metadata cache
This patch adds a new CBFS "mcache" (metadata cache) -- a memory buffer
that stores the headers of all CBFS files. Similar to the existing FMAP
cache, this cache should reduce the amount of SPI accesses we need to do
every boot: rather than having to re-read all CBFS headers from SPI
flash every time we're looking for a file, we can just walk the same
list in this in-memory copy and finally use it to directly access the
flash at the right position for the file data.

This patch adds the code to support the cache but doesn't enable it on
any platform. The next one will turn it on by default.

Change-Id: I5b1084bfdad1c6ab0ee1b143ed8dd796827f4c65
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/38423
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2020-11-21 10:43:53 +00:00
..
gnat lib/gnat/i-c.ads: Add uintptr_t type 2020-11-16 12:13:31 +00:00
asan.c src: Add missing 'include <console/console.h>' 2020-11-17 09:01:14 +00:00
b64_decode.c treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
boot_device.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
bootblock.c src/lib/bootblock.c: make bootblock_main_with_timestamp public 2020-09-22 07:00:34 +00:00
bootmem.c lib/bootmem.c: Improve bootmem_allocate_buffer algorithm 2020-07-30 17:13:28 +00:00
bootmode.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
bootsplash.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
cb.ads Hook up Kconfig Ada spec file 2019-02-06 16:20:35 +00:00
cbfs.c cbfs: Add metadata cache 2020-11-21 10:43:53 +00:00
cbmem_common.c src: Remove unused 'include <bootstate.h>' 2020-06-02 07:40:35 +00:00
cbmem_console.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
cbmem_stage_cache.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
compute_ip_checksum.c src/lib: Wrap lines at 80 columns 2017-03-13 17:21:02 +01:00
coreboot_table.c cbfs: Add metadata cache 2020-11-21 10:43:53 +00:00
crc_byte.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
decompressor.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
delay.c src/lib: Add space before ( 2017-03-09 17:30:21 +01:00
device_tree.c treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
dimm_info_util.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
edid.c lib/edid: Add missing name descriptor presence flag 2020-10-26 13:28:41 +00:00
edid_fill_fb.c treewide: Convert more license headers to SPDX style 2020-05-11 19:37:19 +00:00
espi_debug.c espi_debug: Use switch case instead of if-else 2020-05-13 08:37:59 +00:00
ext_stage_cache.c src/lib: Remove unused function parameters in imd.c 2020-08-04 07:13:59 +00:00
fallback_boot.c coreboot: Replace all IS_ENABLED(CONFIG_XXX) with CONFIG(XXX) 2019-03-08 08:33:24 +00:00
fit.c fit: Swap compat matching priorities for board-revX and board-skuY 2020-05-29 20:47:54 +00:00
fit_payload.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
fmap.c lib/fmap: add ENV_SMM check to setup_preram_cache 2020-09-14 16:01:42 +00:00
fw_config.c fw_config: Make fw_config_get() public 2020-10-30 15:25:06 +00:00
gcc.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
gcov-glue.c lib/gcov: Remove assert(0) 2020-08-03 10:36:00 +00:00
gcov-io.c src/lib: Use tabs instead of spaces 2017-03-13 15:46:02 +01:00
gcov-io.h Rename __attribute__((packed)) --> __packed 2017-07-13 19:45:59 +00:00
gcov-iov.h Implement GCC code coverage analysis 2013-01-12 19:09:55 +01:00
gpio.c gpio: Pull down HiZ pins after reading tristate GPIO strapping 2020-08-06 23:54:41 +00:00
halt.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
hardwaremain.c ACPI S3: Replace acpi_is_wakeup() 2020-11-19 14:48:31 +00:00
hexdump.c treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
hexstrtobin.c treewide: Convert more license headers to SPDX style 2020-05-11 19:37:19 +00:00
hw-time-timer.adb treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
imd.c lib/imd: move struct definitions to a new header file 2020-10-19 06:55:03 +00:00
imd_cbmem.c lib/imd_cbmem.c: Add a helper function to indicate that cbmem is ready 2020-08-17 06:22:58 +00:00
jpeg.c src/lib/jpeg.c: Drop dead code 2020-07-09 23:50:51 +00:00
jpeg.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
Kconfig cbfs: Add metadata cache 2020-11-21 10:43:53 +00:00
libgcc.c treewide: Replace CONFIG(ARCH_xx) tests 2020-06-17 21:13:09 +00:00
libgcov.c lib/libgcov.c: Do not redefine alloca 2020-07-29 09:27:33 +00:00
list.c treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
lzma.c Remove MAYBE_STATIC_BSS and ENV_STAGE_HAS_BSS_SECTION 2020-05-26 15:04:08 +00:00
lzmadecode.c src/{include,arch,cpu,lib}: Add missing 'include <types.h>' 2019-05-29 20:27:18 +00:00
lzmadecode.h src/lib: Wrap lines at 80 columns 2017-03-13 17:21:02 +01:00
Makefile.inc trogdor: Modify DDR training to use mrc_cache 2020-10-09 19:45:40 +00:00
malloc.c lib/malloc: Drop <cpu/x86/smm.h> include 2020-06-16 08:09:13 +00:00
memchr.c Add an implementation for the memchr library function 2012-03-09 20:00:53 +01:00
memcmp.c src/lib: Add space before ( 2017-03-09 17:30:21 +01:00
memcpy.c
memmove.c src/lib: Add space before ( 2017-03-09 17:30:21 +01:00
memrange.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
memset.c
nhlt.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
primitive_memtest.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
prog_loaders.c prog_loaders: Fix ramstage loading on x86 2020-07-06 09:36:15 +00:00
prog_ops.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
program.ld lib: Add ASan support to ramstage on x86 arch 2020-08-21 07:37:52 +00:00
ramdetect.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
ramtest.c treewide: Replace CONFIG(ARCH_xx) tests 2020-06-17 21:13:09 +00:00
reg_script.c lib/reg_script: Add guards for <arch/io.h> 2020-06-17 21:13:36 +00:00
region_file.c region_file_update_data_arr: Modify region_file with array of buffers 2020-09-16 16:02:54 +00:00
reset.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
rmodule.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
rmodule.ld src: Fix typo 2018-08-10 21:25:53 +00:00
romstage_handoff.c src: Update some incorrect config options in comments 2020-11-16 12:09:58 +00:00
rtc.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
selfboot.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
spd_bin.c lib/spd: respect spd memory part name override 2020-10-09 07:34:50 +00:00
spd_cache.c Remove new additions of "this file is part of" lines 2020-05-18 07:12:03 +00:00
stack.c symbols.h: Add macro to define memlayout region symbols 2019-02-22 06:44:02 +00:00
string.c lib/string: Add standard strstr() function 2020-08-03 05:12:23 +00:00
thread.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
timer.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
timer_queue.c src: Remove unused 'include <stddef.h> 2020-08-18 12:15:44 +00:00
timestamp.c symbols: Change implementation details of DECLARE_OPTIONAL_REGION() 2020-08-27 22:11:17 +00:00
trace.c src: Remove unused 'include <types.h>' 2020-07-14 16:10:17 +00:00
ubsan.c lib/ubsan.c: Remove GCC 5.x workaround 2020-10-05 16:18:24 +00:00
uuid.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
version.c ACPI: Correct asl_compiler_revision value 2019-02-21 19:07:31 +00:00
wrdd.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00