[Fw_Os_Forum] Support for EFI MP Services

Brett Stahlman brettstahlman at gmail.com
Tue Jul 19 12:06:00 EDT 2016

When you say PI takes CPU into "OS expected state defined by EFI",
which CPU(s) are you referring to? The Intel MultiProcessor
specification indicates that secondary processors (APs) will come up
in Real Mode after receiving STARTUP IPI. Is this how it's supposed to
work during UEFI boot, or is the PI also responsible for bringing the
APs up to 64-bit Long mode? To bring up secondary processors under
BIOS, it was necessary for the BSP to do the following:

1. Load 16-bit Real Mode AP initialization code someplace within the
1st MiB of address space.
2. Use local APIC to configure the initialization routine's address as
the "startup vector".
3. Deliver the INIT/STARTUP IPI sequence to the AP to get it to start
executing the startup code.

What I'm trying to understand is whether something like this is still
necessary, or whether I can expect PI to handle the AP initialization
for me?

Brett S.

On Tue, Jul 19, 2016 at 10:40 AM, valerij zaporogeci
<vlrzprgts at gmail.com> wrote:
> oh, EFI_MP_SERVICES_PROTOCOL is not a part of UEFI at all. It's a DXE
> "boot service" protocol. You may expect its presence only on systems
> implementing PI specification. The latter is not UEFI. (I believe it
> would be hard to say what it is even for its creators, because it
> claims it's a standalone standard, it's a UEFI implementation, it's
> not compatible superset over UEFI at the same time).
> And as I've understood, that protocol is not intended to bring AP's to
> the state needed for OS, rather it is intended to bring MP in PI (DXE)
> environment "for speeding up" things. Once Exit boot services related
> event is signaled, PI takes CPU into "OS expected state defined by
> EFI".

More information about the Fw_os_forum mailing list