Skip to content

Commit

Permalink
cpu: Add a way to use microcode .h files back to the build
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Martin Roth committed Nov 10, 2015
1 parent 2953584 commit 4c50269
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
31 changes: 31 additions & 0 deletions src/cpu/Kconfig
Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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.
11 changes: 10 additions & 1 deletion src/cpu/Makefile.inc
Expand Up @@ -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
Expand All @@ -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),)
Expand Down

0 comments on commit 4c50269

Please sign in to comment.