Kconfig: Add config to insert ucode address in second FIT
This config is used to provide the name of a region where a microcode is located. The address of this will be added as the first entry in the FIT of the topswap bootblock. This adds a capability to associate two microcodes for each of the two bootblocks, this allows for the CPU to boot with different microcodes with 2 separate bootblocks. Change-Id: I4ee41d90bae34862aa68c9b8bd69288de1335585 Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com> Reviewed-on: https://review.coreboot.org/27151 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
b082670234
commit
5348512451
12
Makefile.inc
12
Makefile.inc
|
@ -958,6 +958,7 @@ $(obj)/fmap.fmap: $(obj)/fmap.fmd $(FMAPTOOL)
|
||||||
|
|
||||||
ifeq ($(CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK),y)
|
ifeq ($(CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK),y)
|
||||||
TS_OPTIONS := -j $(CONFIG_INTEL_TOP_SWAP_BOOTBLOCK_SIZE)
|
TS_OPTIONS := -j $(CONFIG_INTEL_TOP_SWAP_BOOTBLOCK_SIZE)
|
||||||
|
FIT_OPTIONS := $(TS_OPTIONS)
|
||||||
endif
|
endif
|
||||||
ifneq ($(CONFIG_UPDATE_IMAGE),y)
|
ifneq ($(CONFIG_UPDATE_IMAGE),y)
|
||||||
$(obj)/coreboot.pre: $(objcbfs)/bootblock.bin $$(prebuilt-files) $(CBFSTOOL) $$(cpu_ucode_cbfs_file) $(obj)/fmap.fmap $(obj)/fmap.desc
|
$(obj)/coreboot.pre: $(objcbfs)/bootblock.bin $$(prebuilt-files) $(CBFSTOOL) $$(cpu_ucode_cbfs_file) $(obj)/fmap.fmap $(obj)/fmap.desc
|
||||||
|
@ -1003,6 +1004,11 @@ $(REFCODE_BLOB): $(RMODTOOL)
|
||||||
$(RMODTOOL) -i $(CONFIG_REFCODE_BLOB_FILE) -o $@
|
$(RMODTOOL) -i $(CONFIG_REFCODE_BLOB_FILE) -o $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
FIT_ENTRY=$(call strip_quotes, $(CONFIG_INTEL_TOP_SWAP_FIT_ENTRY_FMAP_REG))
|
||||||
|
ifneq ($(FIT_ENTRY),)
|
||||||
|
FIT_OPTIONS += -q $(FIT_ENTRY)
|
||||||
|
endif
|
||||||
|
|
||||||
$(obj)/coreboot.rom: $(obj)/coreboot.pre $(objcbfs)/ramstage.elf $(CBFSTOOL) $$(INTERMEDIATE)
|
$(obj)/coreboot.rom: $(obj)/coreboot.pre $(objcbfs)/ramstage.elf $(CBFSTOOL) $$(INTERMEDIATE)
|
||||||
@printf " CBFS $(subst $(obj)/,,$(@))\n"
|
@printf " CBFS $(subst $(obj)/,,$(@))\n"
|
||||||
# The full ROM may be larger than the CBFS part, so create an empty
|
# The full ROM may be larger than the CBFS part, so create an empty
|
||||||
|
@ -1020,12 +1026,14 @@ endif
|
||||||
ifeq ($(CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE),y)
|
ifeq ($(CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE),y)
|
||||||
ifeq ($(CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER),y)
|
ifeq ($(CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER),y)
|
||||||
@printf " UPDATE-FIT\n"
|
@printf " UPDATE-FIT\n"
|
||||||
$(CBFSTOOL) $@.tmp update-fit -n cpu_microcode_blob.bin -x $(CONFIG_CPU_INTEL_NUM_FIT_ENTRIES)
|
$(CBFSTOOL) $@.tmp update-fit -n cpu_microcode_blob.bin -x $(CONFIG_CPU_INTEL_NUM_FIT_ENTRIES) \
|
||||||
|
$(FIT_OPTIONS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_CPU_MICROCODE_CBFS_GENERATE),y)
|
ifeq ($(CONFIG_CPU_MICROCODE_CBFS_GENERATE),y)
|
||||||
@printf " UPDATE-FIT\n"
|
@printf " UPDATE-FIT\n"
|
||||||
$(CBFSTOOL) $@.tmp update-fit -n cpu_microcode_blob.bin -x $(CONFIG_CPU_INTEL_NUM_FIT_ENTRIES)
|
$(CBFSTOOL) $@.tmp update-fit -n cpu_microcode_blob.bin -x $(CONFIG_CPU_INTEL_NUM_FIT_ENTRIES) \
|
||||||
|
$(FIT_OPTIONS)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
|
|
|
@ -37,3 +37,14 @@ config INTEL_TOP_SWAP_BOOTBLOCK_SIZE
|
||||||
help
|
help
|
||||||
Set this config to a supported topswap size.
|
Set this config to a supported topswap size.
|
||||||
Valid sizes: 0x10000 0x20000 0x40000 0x80000 0x100000
|
Valid sizes: 0x10000 0x20000 0x40000 0x80000 0x100000
|
||||||
|
|
||||||
|
config INTEL_TOP_SWAP_FIT_ENTRY_FMAP_REG
|
||||||
|
string
|
||||||
|
depends on INTEL_ADD_TOP_SWAP_BOOTBLOCK
|
||||||
|
help
|
||||||
|
Use this config to specify the name of a FMAP region (which should
|
||||||
|
hold a microcode) whose address as the first entry in the topswap FIT.
|
||||||
|
This is useful in creating a asymmetric FIT in top swap bootblock
|
||||||
|
than the one in non-topswap bootblock. This string will be passed
|
||||||
|
onto cbfstool (-q option). cbfstool will not parse the region for MCU
|
||||||
|
entries, and only locate the region and insert its address into FIT.
|
||||||
|
|
Loading…
Reference in New Issue