summaryrefslogtreecommitdiffstats
path: root/src/soc/intel/meteorlake
diff options
context:
space:
mode:
authorSubrata Banik <subratabanik@google.com>2022-07-09 22:41:48 +0000
committerFelix Held <felix-coreboot@felixheld.de>2022-07-18 15:48:31 +0000
commit7c4789d42b022127c117083db20ad9a5bbee6466 (patch)
treecfc2501d112b76c0157f6b5d5b4fedceefb2d7b2 /src/soc/intel/meteorlake
parent0d6d228fbc32fa2cbd4bb248bd7f3b608b7abceb (diff)
downloadcoreboot-7c4789d42b022127c117083db20ad9a5bbee6466.tar.gz
coreboot-7c4789d42b022127c117083db20ad9a5bbee6466.tar.bz2
coreboot-7c4789d42b022127c117083db20ad9a5bbee6466.zip
soc/intel/meteorlake: Allow possible options for MP Init
Ported back from commit ceaf9d116949da68aa9c ("soc/intel/alderlake: Allow possible options for MP Init") This patch creates choice that lists all possible options to perform MP Init as below for Intel Meteor Lake platform: 1. MTL_USE_FSP_MP_INIT: Allow coreboot to bring APs from reset and FSP runs feature programming based and selects MP_SERVICES_PPI_V2 config. 2. MTL_USE_COREBOOT_MP_INIT: Allow coreboot to perform MP Init (both AP init and feature programming) using native implementation. Additionally, selects required RELOAD_MICROCODE_PATCH when coreboot is expected to run MP Init. Refactor SoC code to allow required FSP UPD override based on selected MP Init option. Additionally, added `FIXME` comment to ensure Intel MTL FSP can bring back SkipMpInit UPD in MTL to let coreboot override this UPD and ensure independent MP Init flow. BUG=b:219053812 TEST=Able to build google/rex. Signed-off-by: Subrata Banik <subratabanik@google.com> Change-Id: Ic917e4e03e24d73190cfc72c6ed8e59af427bedf Reviewed-on: https://review.coreboot.org/c/coreboot/+/65743 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/intel/meteorlake')
-rw-r--r--src/soc/intel/meteorlake/Kconfig19
-rw-r--r--src/soc/intel/meteorlake/fsp_params.c16
2 files changed, 32 insertions, 3 deletions
diff --git a/src/soc/intel/meteorlake/Kconfig b/src/soc/intel/meteorlake/Kconfig
index 86567dc48a6c..bf50ada13dab 100644
--- a/src/soc/intel/meteorlake/Kconfig
+++ b/src/soc/intel/meteorlake/Kconfig
@@ -38,7 +38,6 @@ config CPU_SPECIFIC_OPTIONS
select IOAPIC
select MICROCODE_BLOB_UNDISCLOSED
select MRC_SETTINGS_PROTECT
- select MP_SERVICES_PPI_V2
select PARALLEL_MP_AP_WORK
select PLATFORM_USES_FSP2_3
select PMC_GLOBAL_RESET_ENABLE_LOCK
@@ -308,4 +307,22 @@ config SOC_INTEL_GFX_FRAMEBUFFER_OFFSET
hex
default 0x800000
+choice
+ prompt "Multiprocessor (MP) Initialization configuration to use"
+ default MTL_USE_FSP_MP_INIT
+
+config MTL_USE_FSP_MP_INIT
+ bool "Use FSP MP init"
+ select MP_SERVICES_PPI_V2
+ help
+ Upon selection, coreboot brings APs from reset and the FSP runs feature programming.
+
+config MTL_USE_COREBOOT_MP_INIT
+ bool "Use coreboot MP init"
+ select RELOAD_MICROCODE_PATCH
+ help
+ Upon selection, coreboot performs MP Init.
+
+endchoice
+
endif
diff --git a/src/soc/intel/meteorlake/fsp_params.c b/src/soc/intel/meteorlake/fsp_params.c
index f77182a34479..39e374b9ae5a 100644
--- a/src/soc/intel/meteorlake/fsp_params.c
+++ b/src/soc/intel/meteorlake/fsp_params.c
@@ -133,9 +133,21 @@ static void fill_fsps_cpu_params(FSP_S_CONFIG *s_cfg,
s_cfg->MicrocodeRegionSize = (uint32_t)microcode_len;
}
- /* Use coreboot MP PPI services if Kconfig is enabled */
- if (CONFIG(USE_INTEL_FSP_TO_CALL_COREBOOT_PUBLISH_MP_PPI))
+ if (CONFIG(MTL_USE_FSP_MP_INIT)) {
+ /*
+ * Use FSP running MP PPI services to perform CPU feature programming
+ * if Kconfig is enabled
+ */
s_cfg->CpuMpPpi = (uintptr_t) mp_fill_ppi_services_data();
+ } else {
+ /* Use coreboot native driver to perform MP init by default */
+ s_cfg->CpuMpPpi = (uintptr_t)NULL;
+ /*
+ * FIXME: Bring back SkipMpInit UPD in MTL FSP to let coreboot perform
+ * AP programming independently.
+ */
+ // s_cfg->SkipMpInit = !CONFIG(USE_INTEL_FSP_MP_INIT);
+ }
}