diff options
-rw-r--r-- | src/cpu/Kconfig | 31 | ||||
-rw-r--r-- | src/cpu/Makefile.inc | 11 |
2 files changed, 41 insertions, 1 deletions
diff --git a/src/cpu/Kconfig b/src/cpu/Kconfig index 9b9413c72c..a026b28ebd 100644 --- a/src/cpu/Kconfig +++ b/src/cpu/Kconfig @@ -67,8 +67,16 @@ config SUPPORT_CPU_UCODE_IN_CBFS bool default n +config USES_MICROCODE_HEADER_FILES + def_bool n + select SUPPORT_CPU_UCODE_IN_CBFS + help + This is selected by a board or chipset to set the default for the + microcode source choice to a list of external microcode headers + choice prompt "Include CPU microcode in CBFS" if ARCH_X86 + default CPU_MICROCODE_CBFS_EXTERNAL_HEADER if USES_MICROCODE_HEADER_FILES default CPU_MICROCODE_CBFS_GENERATE if SUPPORT_CPU_UCODE_IN_CBFS && USE_BLOBS default CPU_MICROCODE_CBFS_NONE if !SUPPORT_CPU_UCODE_IN_CBFS @@ -84,6 +92,22 @@ config CPU_MICROCODE_CBFS_GENERATE If unsure, select this option. +config CPU_MICROCODE_CBFS_EXTERNAL_HEADER + bool "Include external microcode header files" + help + Select this option if you want to include external c header files + containing the CPU microcode. This will be included as a separate + file in CBFS. + + A word of caution: only select this option if you are sure the + microcode that you have is newer than the microcode shipping with + coreboot. + + The microcode file may be removed from the ROM image at a later + time with cbfstool, if desired. + + If unsure, select "Generate from tree" + config CPU_MICROCODE_CBFS_NONE bool "Do not include microcode updates" help @@ -135,3 +159,10 @@ config CPU_MICROCODE_MULTIPLE_FILES help Select this option to install separate microcode container files into CBFS instead of using the traditional monolithic microcode file format. + +config CPU_MICROCODE_HEADER_FILES + string "List of space separated microcode header files with the path" + depends on CPU_MICROCODE_CBFS_EXTERNAL_HEADER + help + A list of one or more microcode header files with path from the + coreboot directory. These should be separated by spaces. diff --git a/src/cpu/Makefile.inc b/src/cpu/Makefile.inc index 517cbfaaf5..046c418554 100644 --- a/src/cpu/Makefile.inc +++ b/src/cpu/Makefile.inc @@ -21,6 +21,15 @@ ifneq ($(CONFIG_CPU_MICROCODE_MULTIPLE_FILES), y) cbfs-files-$(CONFIG_CPU_MICROCODE_CBFS_GENERATE) += cpu_microcode_blob.bin endif +ifeq ($(CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER),y) +cbfs-files-y += cpu_microcode_blob.bin +cpu_microcode_blob.bin-file = $(objgenerated)/microcode.bin + +$(objgenerated)/microcode.bin: + echo " util/scripts/ucode_h_to_bin.sh $(objgenerated)/microcode.bin \"$(CONFIG_CPU_MICROCODE_HEADER_FILES)\"" + util/scripts/ucode_h_to_bin.sh $(objgenerated)/microcode.bin $(CONFIG_CPU_MICROCODE_HEADER_FILES) +endif + # We just mash all microcode binaries together into one binary to rule them all. # This approach assumes that the microcode binaries are properly padded, and # their headers specify the correct size. This works fairly well on isolatied @@ -33,7 +42,7 @@ $(obj)/cpu_microcode_blob.bin: $$(cpu_microcode_bins) @echo $(cpu_microcode_bins) cat /dev/null $+ > $@ -cpu_microcode_blob.bin-file := $(obj)/cpu_microcode_blob.bin +cpu_microcode_blob.bin-file ?= $(obj)/cpu_microcode_blob.bin cpu_microcode_blob.bin-type := microcode ifneq ($(CONFIG_CPU_MICROCODE_CBFS_LOC),) |