summaryrefslogtreecommitdiff
path: root/src/drivers/intel
diff options
context:
space:
mode:
authorRonak Kanabar <ronak.kanabar@intel.com>2022-01-31 11:22:45 +0530
committerFelix Held <felix-coreboot@felixheld.de>2022-03-10 15:14:22 +0000
commit40ca79714ad7d5f2aa201d83db4d97f21260d924 (patch)
treec4533792fd071b8281781baf719f2a151b3b73ef /src/drivers/intel
parenta4b821a9af333cf9ea639cbb70e40c602d531d67 (diff)
Revert "drivers/intel/fsp2_0: Allow `mp_startup_all_cpus()` to run serially"
This reverts commit 6af980a2aeca9b8cedfb3d7734389e6e36099c88. BUG=b:199246420 Change-Id: Iddb7aa6d52b563485a496798f2fe31ed64b4f4a8 Signed-off-by: Ronak Kanabar <ronak.kanabar@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/61498 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Maulik V Vaghela <maulik.v.vaghela@intel.com>
Diffstat (limited to 'src/drivers/intel')
-rw-r--r--src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c21
1 files changed, 4 insertions, 17 deletions
diff --git a/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c b/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
index 9aef1b6dce..50e35b0e8f 100644
--- a/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
+++ b/src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c
@@ -94,23 +94,10 @@ efi_return_status_t mp_startup_all_cpus(efi_ap_procedure procedure,
/* Run on BSP */
procedure(argument);
- /*
- * Run on APs Serially
- *
- * FIXME: As per MP service specification, EDK2 is allowed to specify the mode
- * in which a 'func' routine should be executed on APs (i.e. execute serially
- * or concurrently).
- *
- * MP service API `StartupAllCPUs` doesn't specify such requirement.
- * Hence, running the `CpuCacheInfoCollectCoreAndCacheData`
- * (UefiCpuPkg/Library/CpuCacheInfoLib/CpuCacheInfoLib.c#194)
- * simultaneously on APs results in a coherency issue (hang while executing `func`)
- * due to lack of acquiring a spin lock while accessing common data structure in
- * multiprocessor environment.
- */
- if (mp_run_on_all_aps((void *)procedure, argument, timeout_usec, false) !=
- CB_SUCCESS) {
- printk(BIOS_DEBUG, "%s: Exit with Failure\n", __func__);
+ /* Run on APs */
+ if (mp_run_on_aps((void *)procedure, argument,
+ MP_RUN_ON_ALL_CPUS, timeout_usec) != CB_SUCCESS) {
+ printk(BIOS_ERR, "%s: Exit with Failure\n", __func__);
return FSP_NOT_STARTED;
}