summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Roth <martinroth@google.com>2015-11-05 08:03:45 -0700
committerMartin Roth <martinroth@google.com>2015-11-10 19:22:40 +0100
commit4c502697eef81238c71b1570e4ee9d9ee08455d5 (patch)
treeab637a6bd3e1ecf7374094af81557640cc324860
parent295358454aa214f1c915c2f340f8897bbd500b45 (diff)
cpu: Add a way to use microcode .h files back to the build
The build was changed to remove usage of microcode .h files when all of the .h files were converted to binary. This is still needed for some builds when microcode binaries aren't in the blobs tree. Change-Id: Ia323c90efe8aa0b8799fc5cce6197509e466a105 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: http://review.coreboot.org/12333 Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com> Reviewed-by: Timothy Pearson <tpearson@raptorengineeringinc.com> Tested-by: build bot (Jenkins) Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
-rw-r--r--src/cpu/Kconfig31
-rw-r--r--src/cpu/Makefile.inc11
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),)