lib/cbfs: Use fmap derived information about the COREBOOT region
It used to use CONFIG_CBFS_SIZE. The plan is that CBFS_SIZE only informs default*.fmd generation, while everything else derives its information from there. Also document the existing assumption that boot media should access the COREBOOT region (and not any other potentially existing fmap region containing a CBFS). Change-Id: I08254e4510f71edf99c2c8b56ac8f92008727c4a Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-on: https://review.coreboot.org/14572 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
919be612b8
commit
58a150a1a3
|
@ -179,6 +179,13 @@ $(call src-to-obj,smm,$(dir)/version.c) : $(obj)/build.h
|
|||
$(call src-to-obj,verstage,$(dir)/version.c) : $(obj)/build.h
|
||||
$(call src-to-obj,postcar,$(dir)/version.c) : $(obj)/build.h
|
||||
|
||||
$(call src-to-obj,bootblock,$(dir)/cbfs.c) : $(obj)/fmap_config.h
|
||||
$(call src-to-obj,romstage,$(dir)/cbfs.c) : $(obj)/fmap_config.h
|
||||
$(call src-to-obj,ramstage,$(dir)/cbfs.c) : $(obj)/fmap_config.h
|
||||
$(call src-to-obj,smm,$(dir)/cbfs.c) : $(obj)/fmap_config.h
|
||||
$(call src-to-obj,verstage,$(dir)/cbfs.c) : $(obj)/fmap_config.h
|
||||
$(call src-to-obj,postcar,$(dir)/cbfs.c) : $(obj)/fmap_config.h
|
||||
|
||||
romstage-y += bootmode.c
|
||||
ramstage-y += bootmode.c
|
||||
verstage-y += bootmode.c
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include <symbols.h>
|
||||
#include <timestamp.h>
|
||||
|
||||
#include "fmap_config.h"
|
||||
|
||||
#define ERROR(x...) printk(BIOS_ERR, "CBFS: " x)
|
||||
#define LOG(x...) printk(BIOS_INFO, "CBFS: " x)
|
||||
#if IS_ENABLED(CONFIG_DEBUG_CBFS)
|
||||
|
@ -215,6 +217,7 @@ out:
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* This only supports the "COREBOOT" fmap region. */
|
||||
static int cbfs_master_header_props(struct cbfs_props *props)
|
||||
{
|
||||
struct cbfs_header header;
|
||||
|
@ -227,13 +230,15 @@ static int cbfs_master_header_props(struct cbfs_props *props)
|
|||
if (bdev == NULL)
|
||||
return -1;
|
||||
|
||||
size_t fmap_top = ___FMAP__COREBOOT_BASE + ___FMAP__COREBOOT_SIZE;
|
||||
|
||||
/* Find location of header using signed 32-bit offset from
|
||||
* end of CBFS region. */
|
||||
offset = CONFIG_CBFS_SIZE - sizeof(int32_t);
|
||||
offset = fmap_top - sizeof(int32_t);
|
||||
if (rdev_readat(bdev, &rel_offset, offset, sizeof(int32_t)) < 0)
|
||||
return -1;
|
||||
|
||||
offset = CONFIG_CBFS_SIZE + rel_offset;
|
||||
offset = fmap_top + rel_offset;
|
||||
if (rdev_readat(bdev, &header, offset, sizeof(header)) < 0)
|
||||
return -1;
|
||||
|
||||
|
|
Loading…
Reference in New Issue