PcdFirstTimeWakeUpAPsBySipi controls the sequence of IPIs sent to APs during AP wakeup in UefiCpuPkg. Since coreboot leaves APs parked in halt loop, SIPI is not enough to wake them up. They need to go through regular INIT-SIPI-SIPI sequence. Set PcdFirstTimeWakeUpAPsBySipi to FALSE to cause the MP code in UEFI Payload to send INIT-SIPI-SIPI sequence, otherwise the APs are not detected in UEFI Payload. Additionally, after rebasing to the latest UefiCpuPkg, CpuDxe now calls MpInitLibStartupAllCPUs() while setting up per-CPU exception stacks. If we leave `PcdFirstTimeWakeUpAPsBySipi` at its default (TRUE), only a SIPI is issued on the first wake attempt. The APs that coreboot parks in an HLT loop never acknowledge that SIPI, the DXE driver trips `ASSERT_EFI_ERROR()` and the UEFI payload reboots straight back into coreboot. Explicitly set the PCD to FALSE so the INIT-SIPI-SIPI flow is used and all cores report in. before: MpInitLib: Find 1 processors in system. after: MpInitLib: Find 4 processors in system. TEST=edk2 boots cleanly on Star Labs Lite ADL (Intel N200) and Gigabyte MZ33-AR1; DXE log shows all processors detected. Change-Id: I299b74892a56894c3e15507b507a50bdf7e59860 Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/89210 Reviewed-by: Benjamin Doron <benjamin.doron00@gmail.com> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Sean Rhodes <sean@starlabs.systems> |
||
|---|---|---|
| .. | ||
| coreinfo | ||
| external | ||
| libpayload | ||
| linuxcheck | ||
| nvramcui | ||
| Kconfig | ||
| Makefile.mk | ||