[coreboot-gerrit] New patch to review for coreboot: cpu: Add a way to use microcode .h files back to the build

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Thu Nov 5 16:30:38 CET 2015


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12333

-gerrit

commit 09c03fb8b8baeb5045ff397df82c6bf223cbf63b
Author: Martin Roth <martinroth at google.com>
Date:   Thu Nov 5 08:03:45 2015 -0700

    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 at google.com>
---
 src/cpu/Kconfig      | 39 ++++++++++++++++++++++++++++++++++++---
 src/cpu/Makefile.inc |  9 +++++++++
 2 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/cpu/Kconfig b/src/cpu/Kconfig
index 578bab2..5509605 100644
--- a/src/cpu/Kconfig
+++ b/src/cpu/Kconfig
@@ -67,6 +67,13 @@ 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
+
 # This variable is used to determine if we add CPU microcode to CBFS during the
 # build. Microcode can be added manually afterwards, or removed. As a result,
 # code should not rely on this to tell if a microcode update is present or not,
@@ -80,6 +87,7 @@ config CPU_MICROCODE_ADDED_DURING_BUILD
 
 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
 
@@ -96,10 +104,28 @@ config CPU_MICROCODE_CBFS_GENERATE
 	  If unsure, select this option.
 
 config CPU_MICROCODE_CBFS_EXTERNAL
-	bool "Include external microcode file"
+	bool "Include external binary microcode file"
+	help
+	  Select this option if you want to include an external binary file
+	  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_EXTERNAL_HEADER
+	bool "Include external microcode header files"
 	help
-	  Select this option if you want to include an external file containing
-	  the CPU microcode. This will be included as a separate file in CBFS.
+	  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.
@@ -167,3 +193,10 @@ config CPU_MICROCODE_FILE
 	  default "cpu_microcode.bin"
 	  help
 	    The path and filename of the file containing the CPU microcode.
+
+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 52b58f7..42d8c68 100644
--- a/src/cpu/Makefile.inc
+++ b/src/cpu/Makefile.inc
@@ -30,6 +30,15 @@ cbfs_include_ucode = y
 endif
 endif
 
+ifeq ($(CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER),y)
+cpu_ucode_cbfs_file = $(objgenerated)/microcode.bin
+cbfs_include_ucode = y
+
+$(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



More information about the coreboot-gerrit mailing list