audk/UefiCpuPkg/Library/MpInitLib
Laszlo Ersek 778832bcad UefiCpuPkg/MpInitLib: honor the platform's boot CPU count in AP detection
- If a platform boots such that the boot CPU count is smaller than
  PcdCpuMaxLogicalProcessorNumber, then the platform cannot use the "fast
  AP detection" logic added in commit 6e1987f19a. (Which has been
  documented as a subset of use case (2) in the previous patch.)

  Said logic depends on the boot CPU count being equal to
  PcdCpuMaxLogicalProcessorNumber. If the equality does not hold, the
  platform either has to wait too long, or risk missing APs due to an
  early timeout.

- The platform may not be able to use the variant added in commit
  0594ec417c either. (Which has been documented as use case (1) in the
  previous patch.)

  See commit 861218740d. When OVMF runs on QEMU/KVM, APs may check in
  with the BSP in arbitrary order, plus the individual AP may take
  arbitrarily long to check-in. If "NumApsExecuting" falls to zero
  mid-enumeration, APs will be missed.

Allow platforms to specify the exact boot CPU count, independently of
PcdCpuMaxLogicalProcessorNumber. In this mode, the BSP waits for all APs
to check-in regardless of timeout. If at least one AP fails to check-in,
then the AP enumeration hangs forever. That is the desired behavior when
the exact boot CPU count is known in advance. (A hung boot is better than
an AP checking-in after timeout, and executing code from released
storage.)

Cc: Eric Dong <eric.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1515
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
2019-10-11 23:20:09 +02:00
..
Ia32 UefiCpuPkg/MpInitLib: increase NumApsExecuting only for ApInitConfig 2019-06-10 10:53:42 +08:00
X64 UefiCpuPkg/MpInitLib: Enable 5-level paging for AP when BSP's enabled 2019-08-09 08:52:08 +08:00
DxeMpInitLib.inf UefiCpuPkg/MpInitLib: honor the platform's boot CPU count in AP detection 2019-10-11 23:20:09 +02:00
DxeMpInitLib.uni UefiCpuPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:28 -07:00
DxeMpLib.c UefiCpuPkg/MpInitLib: Add MpInitLibStartupAllCPUs API. 2019-07-29 09:25:20 +08:00
Microcode.c UefiCpuPkg/MpInitLib: MicrocodeDetect: Ensure checked range is valid 2019-06-27 09:20:53 +08:00
MpLib.c UefiCpuPkg/MpInitLib: honor the platform's boot CPU count in AP detection 2019-10-11 23:20:09 +02:00
MpLib.h UefiCpuPkg: Update code to include register definitions from MdePkg 2019-08-09 08:52:09 +08:00
PeiMpInitLib.inf UefiCpuPkg/MpInitLib: honor the platform's boot CPU count in AP detection 2019-10-11 23:20:09 +02:00
PeiMpInitLib.uni UefiCpuPkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:28 -07:00
PeiMpLib.c UefiCpuPkg/MpInitLib: Add MpInitLibStartupAllCPUs API. 2019-07-29 09:25:20 +08:00