Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/61498 )
Change subject: Revert "drivers/intel/fsp2_0: Allow `mp_startup_all_cpus()` to run serially" ......................................................................
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 --- M src/drivers/intel/fsp2_0/ppi/mp_service_ppi.c 1 file changed, 4 insertions(+), 17 deletions(-)
Approvals: build bot (Jenkins): Verified Maulik V Vaghela: Looks good to me, approved
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 9aef1b6..50e35b0 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 @@ /* 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; }