<font size=2 face="sans-serif">Hi Brett,</font>
<br>
<br><tt><font size=2>>>1. Is there a way to add support for MP Services
to firmware that doesn't have it natively? Is there a list somewhere documenting
which firmware supports?</font></tt>
<br><font size=2 face="sans-serif">If you platform doesn't support the
MP services protocol, chances are that your platform is not compliant with
the Platform Initialization specification. Additionally, the PI specification
defines protocols that are intended for use by the firmware, not by boot
loaders or the OS. I would highly recommend that your boot loader only
use protocols that are defined in the UEFI specification. </font>
<br>
<br><tt><font size=2>>>2. What is the best way to bring up the APs
in an environment that doesn't support the MP Services Protocol? I've read
something that suggests it might be easier with UEFI than with BIOS because
the PI firmware does some pre-initialization of the APs even before handoff
to the BSP - but I haven't found much documentation on this...</font></tt>
<br><font size=2 face="sans-serif">X86/X86_64 operating systems follow
intel's multi processor specification for waking APs when they are given
control. (</font><a href=http://download.intel.com/design/archives/processors/pro/docs/24201606.pdf><font size=2 color=blue face="sans-serif">http://download.intel.com/design/archives/processors/pro/docs/24201606.pdf</font></a><font size=2 face="sans-serif">)
All firmware (even legacy BIOSes) would initialize all processors
in the system, and then would either halt the APs, or put the APs into
a spin loop and only leave the BSP (boot strap processor) running when
giving control to a bootloader. </font>
<br>
<br><font size=2 face="sans-serif">For more information, you can refer
to </font><a href=http://wiki.osdev.org/Symmetric_Multiprocessing><font size=2 color=blue face="sans-serif">http://wiki.osdev.org/Symmetric_Multiprocessing</font></a><font size=2 face="sans-serif">,
or you can check out how the linux kernel performs multi processor bring
up.</font>
<br>
<br><font size=2 face="sans-serif">-Aaron</font>
<br>
<br>
<br>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From:
</font><font size=1 face="sans-serif">Brett Stahlman <brettstahlman@gmail.com></font>
<br><font size=1 color=#5f5f5f face="sans-serif">To:
</font><font size=1 face="sans-serif">fw_os_forum@mailman.uefi.org</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date:
</font><font size=1 face="sans-serif">07/15/2016 09:11 AM</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject:
</font><font size=1 face="sans-serif">[Fw_Os_Forum]
Support for EFI MP Services</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by:
</font><font size=1 face="sans-serif">fw_os_forum-bounces@mailman.uefi.org</font>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>I'm working on an x86_64 UEFI boot loader that runs
on the BSP in<br>
64-bit long mode, and must bring up APs (secondary processors) after<br>
some preliminary initialization. I've seen some documentation on EFI<br>
MP (multi-processor) Service Protocol, but the headers in gnu-efi<br>
don't appear to support it, and BS->LocateProtocol() reports status
14<br>
(EFI_NOT_FOUND). My questions are...<br>
<br>
1. Is there a way to add support for MP Services to firmware that<br>
doesn't have it natively? Is there a list somewhere documenting which<br>
firmware supports?<br>
2. What is the best way to bring up the APs in an environment that<br>
doesn't support the MP Services Protocol? I've read something that<br>
suggests it might be easier with UEFI than with BIOS because the PI<br>
firmware does some pre-initialization of the APs even before handoff<br>
to the BSP - but I haven't found much documentation on this...<br>
<br>
Any help would be greatly appreciated.<br>
Thanks,<br>
Brett S.<br>
_______________________________________________<br>
Fw_os_forum mailing list<br>
Fw_os_forum@mailman.uefi.org<br>
</font></tt><a href=http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum><tt><font size=2>http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum</font></tt></a><tt><font size=2><br>
</font></tt>
<br>
<br>