cbfstool: Update FIT entries in the second bootblock

Once a second bootblock has been added using topswap (-j)
option, Update the entries in second FIT using -j option with
update-fit command.

Additionally add a -q option which allows to insert the address of
a FMAP region (which should hold a microcode) as the first entry in
the second FIT.

BUG=None
BRANCH=None
TEST= Create ROM images with -j options and update FIT using -q option.
example:
./build/util/cbfstool/cbfstool coreboot.tmp create \
	-M build/fmap.fmap -r COREBOOT,FW_MAIN_A,FW_MAIN_B,RW_LEGACY
build/util/cbfstool/cbfstool coreboot.tmp add \
	-f build/cbfs/fallback/bootblock.bin -n bootblock -t \
	bootblock -b -49152 -j 0x10000
build/util/cbfstool/cbfstool coreboot.tmp add-master-header -j 0x10000
build/util/cbfstool/cbfstool coreboot.tmp add -f build/cpu_microcode_blob.bin \
	-n cpu_microcode_blob.bin -t microcode -r COREBOOT -a 16
build/util/cbfstool/cbfstool coreboot.tmp. update-fit \
	-n cpu_microcode_blob.bin -x 4 -j 0x10000 -q FW_MAIN_A

Also try the failure scenarion by providing invalid topswap size.

Change-Id: I9a417031c279038903cdf1761a791f2da0fe8644
Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com>
Reviewed-on: https://review.coreboot.org/26836
Reviewed-by: Subrata Banik <subrata.banik@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Rizwan Qureshi
2018-06-04 23:02:46 +05:30
committed by Subrata Banik
parent 1dc188fad0
commit c1072f2fc7
3 changed files with 138 additions and 42 deletions

View File

@@ -28,7 +28,15 @@
typedef unsigned (*fit_offset_converter_t)(const struct buffer *region,
unsigned offset);
/*
* populate FIT with the MCUs prepsent in the blob provided.
*
* first_mcu_addr is an address (in ROM) that will point to a
* microcode patch. When provided, it will be forced as the first
* MCU entry into the FIT located in the topswap bootblock.
*/
int fit_update_table(struct buffer *bootblock, struct cbfs_image *image,
const char *microcode_blob_name, int empty_entries,
fit_offset_converter_t offset_fn);
const char *microcode_blob_name, int empty_entries,
fit_offset_converter_t offset_fn,
uint32_t topswap_size, uint32_t first_mcu_addr);
#endif