Attention is currently required from: Furquan Shaikh, Subrata Banik, Ronak Kanabar, Andrey Petrov, Patrick Rudolph. Tim Wawrzynczak has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/57343 )
Change subject: drivers/intel/fsp2_0: Allow `mp_startup_all_cpus()` to run serially ......................................................................
Patch Set 1:
(1 comment)
Commit Message:
https://review.coreboot.org/c/coreboot/+/57343/comment/bd0453bb_7c371d91 PS1, Line 17: But another MP service API `StartupAllCPUs` doesn't specifies any such : requirement. Running the `func` simultaneously on APs results into : coherency issue due to lack of acquire spin lock while accessing common : data structure in multiprocessor environment.
It's hard to figure out if this is called out explicitly anywhere... […]
But right here, in the MpServices2 interface (https://github.com/tianocore/edk2/blob/master/UefiCpuPkg/CpuMpPei/CpuMp2Pei....), it says (in reference to EdkiiPeiStartupAllCPUs, which is the last callback in the MpServices2 PPI):
``` This service executes a caller provided function on all enabled CPUs. CPUs can run either simultaneously or one at a time in sequence. This service may only be called from the BSP. ```
If the FSP needs the programming to happen in sequence, isn't it using the wrong MP Services 2 PPI callback? Shouldn't it use `StartupAllAPs` and set `SingleThread` to TRUE ?