summaryrefslogtreecommitdiff
path: root/src/cpu/intel/microcode/Kconfig
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/intel/microcode/Kconfig')
-rw-r--r--src/cpu/intel/microcode/Kconfig77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/cpu/intel/microcode/Kconfig b/src/cpu/intel/microcode/Kconfig
index f5f9c761e8..4640c16991 100644
--- a/src/cpu/intel/microcode/Kconfig
+++ b/src/cpu/intel/microcode/Kconfig
@@ -16,3 +16,80 @@ config RELOAD_MICROCODE_PATCH
This feature is mostly required with Intel latest generation
processors starting with Alder Lake (with modified MCHECK init
flow).
+
+config CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS
+ bool "For Intel CPU, include microcode per CPUID into CBFS"
+ depends on CBFS_VERIFICATION && !MICROCODE_UPDATE_PRE_RAM
+ default n
+ help
+ This option controls whether to include external microcode binaries per
+ CPUID in CBFS.
+
+ The current approach of loading microcode blobs post CPU reset is to search
+ the unified blob in the CBFS and then perform the CBFS verification. The bigger
+ the unified microcode blob in size the longer it takes to perform the verification.
+
+ Select this option to store the split microcode blobs per CPUID in the CBFS.
+ As the microcode blobs will be divided into smaller chunks per CPUID, which will
+ reduce the overall search, verify and load time.
+
+ The microcode file may be removed from the ROM image at a later
+ time with cbfstool, if desired.
+
+ If unsure, and applicable, select "Generate from tree"
+
+config CPU_INTEL_UCODE_SPLIT_BINARIES
+ string "Specify the split microcode blob directory path"
+ depends on CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS
+ default ""
+ help
+ Provide the split microcode blob directory path if
+ CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS config is enabled.
+
+ CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS config is allowed to pack the individual microcode
+ patch file per CPUID inside the CBFS.
+
+ Intel distributes CPU microcode updates based on CPUID as part of the github repository
+ in INC format and expects it also getting used in binary form.
+
+ For example: Intel CPU microcode `m506e3.inc` is getting converted into F-MO-S
+ (06-5e-03) binary file for Linux kernel.
+
+ `MicrocodeConverter` is an Intel-provided tool for converting binary form MCU into
+ several other common formats for integration.
+
+ Implementation logic behind CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS config relies on
+ converting Intel CPU microcode INC file into the binary file as per format specified
+ here `cpu_microcode_$(CPUID).bin`. For example: Intel CPU microcode `m506e3.inc` to
+ convert into `cpu_microcode_506e3.bin` binary file for coreboot to integrate if
+ CPU_INTEL_MICROCODE_CBFS_SPLIT_BINS config is enabled.
+
+ This config provides the directory name (including path) that holds the split microcode
+ binary files per CPUID as mentioned above for each coreboot variants. For example: if
+ google/kunimitsu had built with Intel SkyLake processor with CPUID `506e3` and `506e4`
+ then CPU_INTEL_UCODE_SPLIT_BINARIES refers to the directory path that holds the split
+ microcode binary files aka `cpu_microcode_506e3.bin` and `cpu_microcode_506e4.bin`.
+
+ CONFIG_CPU_UCODE_SPLIT_BINARIES="3rdparty/blobs/mainboard/google/kunimitsu/microcode_inputs/kunimitsu"
+ Refer to the file representation below:
+ |---3rdparty
+ | |--- blobs
+ | | |--- mainboard
+ | | | |--- google
+ | | | | |--- kunimitsu
+ | | | | | |--- microcode_inputs
+ | | | | | | |--- kunimitsu
+ | | | | | | | |--- cpu_microcode_506e3.bin
+ | | | | | | | |--- cpu_microcode_506e4.bin
+
+ Users of this config option requires to manually place the microcode binary files per
+ CPUIDs as per the given format (`cpu_microcode_$(CPUID).bin`) in a directory.
+ Finally specify the microcode binary directory path using CPU_UCODE_SPLIT_BINARIES
+ config.
+
+ At runtime (either from romstage/ramstage), coreboot read the CPUID and search for the
+ `cpu_microcode_$(CPUID).bin` file (in this example: cpu_microcode_506e3.bin) inside RW
+ CBFS. Eventually able to locate the appropriate `cpu_microcode_$(CPUID).bin` file and
+ perform the verification prior loading into the CPUs (BSP and APs).
+
+ If unsure, leave this blank.