Makefile.inc: Add bootblock to CBFS before others
With CBFS verification, cbfstool (CB:41121) needs bootblock to be present in coreboot.pre in order to locate the metadata hash stored in it. Therefore we have to ensure that bootblock is added to CBFS before other CBFS files are added. To solve the problem, create the 'add_bootblock' function, and call it in the coreboot.pre recipe. Because bootblock.bin is now a prerequisite of coreboot.pre, it will get built even if CONFIG_BOOTBLOCK_IN_CBFS=n. BUG=b:233263447 TEST=emerge-guybrush coreboot TEST=emerge-corsola coreboot chromeos-bootimage TEST=cbfstool image-kingler.bin print -v TEST=Kingler booted successfully BRANCH=none Change-Id: I385deb8231e44310ee139c3f69f449e75b92b2be Signed-off-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/64547 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
a182faeb88
commit
471eda5ae1
14
Makefile.inc
14
Makefile.inc
|
@ -1100,13 +1100,19 @@ ifeq ($(CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK),y)
|
|||
TS_OPTIONS := -j $(CONFIG_INTEL_TOP_SWAP_BOOTBLOCK_SIZE)
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_ARCH_X86),y)
|
||||
add_bootblock = $(CBFSTOOL) $(1) write -u -r BOOTBLOCK -f $(2)
|
||||
endif
|
||||
|
||||
# coreboot.pre doesn't follow the standard Make conventions. It gets modified
|
||||
# by multiple rules, and thus we can't compute the dependencies correctly.
|
||||
$(shell rm -f $(obj)/coreboot.pre)
|
||||
|
||||
ifneq ($(CONFIG_UPDATE_IMAGE),y)
|
||||
$(obj)/coreboot.pre: $$(prebuilt-files) $(CBFSTOOL) $(obj)/fmap.fmap $(obj)/fmap.desc
|
||||
$(obj)/coreboot.pre: $$(prebuilt-files) $(CBFSTOOL) $(obj)/fmap.fmap $(obj)/fmap.desc $(objcbfs)/bootblock.bin
|
||||
$(CBFSTOOL) $@.tmp create -M $(obj)/fmap.fmap -r $(shell cat $(obj)/fmap.desc)
|
||||
printf " BOOTBLOCK\n"
|
||||
$(call add_bootblock,$@.tmp,$(objcbfs)/bootblock.bin)
|
||||
$(prebuild-files) true
|
||||
mv $@.tmp $@
|
||||
else # ifneq ($(CONFIG_UPDATE_IMAGE),y)
|
||||
|
@ -1136,12 +1142,6 @@ add_intermediate = \
|
|||
$(1): $(obj)/coreboot.pre $(2) | $(INTERMEDIATE) \
|
||||
$(eval INTERMEDIATE+=$(1)) $(eval PHONY+=$(1))
|
||||
|
||||
ifneq ($(CONFIG_ARCH_X86),y)
|
||||
$(call add_intermediate, add_bootblock, $(objcbfs)/bootblock.bin)
|
||||
printf " FMAP writing BOOTBLOCK region\n"
|
||||
$(CBFSTOOL) $< write -u -r BOOTBLOCK -f $(objcbfs)/bootblock.bin
|
||||
endif
|
||||
|
||||
$(obj)/coreboot.rom: $(obj)/coreboot.pre $(CBFSTOOL) $(IFITTOOL) $$(INTERMEDIATE)
|
||||
@printf " CBFS $(subst $(obj)/,,$(@))\n"
|
||||
# The full ROM may be larger than the CBFS part, so create an empty
|
||||
|
|
|
@ -102,15 +102,11 @@ else
|
|||
$(eval $(call early_x86_stage,bootblock,elf64-x86-64))
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_UPDATE_IMAGE),y)
|
||||
ifeq ($(CONFIG_BOOTBLOCK_IN_CBFS),y)
|
||||
$(call add_intermediate, add_bootblock, $(objcbfs)/bootblock.bin)
|
||||
@printf " CBFS $(subst $(obj)/,,$(@))\n"
|
||||
$(CBFSTOOL) $< add -f $(objcbfs)/bootblock.bin -n bootblock -t bootblock $(TXTIBB) -b -$(call file-size,$(objcbfs)/bootblock.bin) \
|
||||
add_bootblock = \
|
||||
$(CBFSTOOL) $(1) add -f $(2) -n bootblock -t bootblock $(TXTIBB) \
|
||||
-b -$(call file-size,$(2)) \
|
||||
$(cbfs-autogen-attributes) $(TS_OPTIONS) $(CBFSTOOL_ADD_CMD_OPTIONS)
|
||||
else # Make sure the bootblock gets build, if only for buildtesting
|
||||
$(call add_intermediate, gen_bootblock, $(objcbfs)/bootblock.bin)
|
||||
endif
|
||||
endif
|
||||
|
||||
$(call src-to-obj,bootblock,$(dir)/walkcbfs.S): $(obj)/fmap_config.h
|
||||
|
|
Loading…
Reference in New Issue