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:
		
				
					committed by
					
						 Patrick Georgi
						Patrick Georgi
					
				
			
			
				
	
			
			
			
						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; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user