<div dir="ltr"><p dir="ltr">Acan,<br>
No. I was not aware there was a non-PI protocol. I will check to see whether it's supported by my firmware.</p><p>Thanks,</p><p>Brett S.</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Jul 17, 2016 8:34 PM, "Chen, Ming (Acan, DTD-SH)" <<a href="mailto:ming.chen@hp.com" target="_blank">ming.chen@hp.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Brett,<br>
<br>
Just mention that there are two MP Service protocols: Framework MP Service Protocol, and (PI) MP Service Protocol.<br>
Note sure if you have tried both when you BS->LocateProtocol()?<br>
<br>
<br>
Thanks,<br>
Acan<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:fw_os_forum-bounces@mailman.uefi.org" target="_blank">fw_os_forum-bounces@mailman.uefi.org</a> [mailto:<a href="mailto:fw_os_forum-bounces@mailman.uefi.org" target="_blank">fw_os_forum-bounces@mailman.uefi.org</a>] On Behalf Of Brett Stahlman<br>
Sent: Saturday, July 16, 2016 3:27 AM<br>
To: <a href="mailto:fw_os_forum@mailman.uefi.org" target="_blank">fw_os_forum@mailman.uefi.org</a><br>
Subject: Re: [Fw_Os_Forum] Support for EFI MP Services<br>
<br>
Aaron,<br>
So methods like GetNumberOfProcessors and StartupAllAPs (documented here <a href="http://www.uefi.org/sites/default/files/resources/Plugfest_Multiprocessing-with_UEFI-McDaniel.pdf" rel="noreferrer" target="_blank">http://www.uefi.org/sites/default/files/resources/Plugfest_Multiprocessing-with_UEFI-McDaniel.pdf</a>)<br>
are not meant to be called from a boot loader using Boot Services?<br>
<br>
I will have a look at the other references. Hopefully the firmware's AP initialization obviates the need for some of the tedious, low-level real mode trampoline code I've seen in the kernel and other loader code performing AP bring up... If UEFI simplifies only the BSP side of things, it doesn't seem a very complete solution...<br>
<br>
Thanks,<br>
Brett S.<br>
<br>
On Fri, Jul 15, 2016 at 11:28 AM, <<a href="mailto:Aaron.Pop@congatec.com" target="_blank">Aaron.Pop@congatec.com</a>> wrote:<br>
> Hi Brett,<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<br>
>>>which firmware supports?<br>
> If you platform doesn't support the MP services protocol, chances are<br>
> that your platform is not compliant with the Platform Initialization<br>
> specification. Additionally, the PI specification defines protocols<br>
> that are intended for use by the firmware, not by boot loaders or the<br>
> OS. I would highly recommend that your boot loader only use protocols<br>
> that are defined in the UEFI specification.<br>
<br>
<br>
><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>
> X86/X86_64 operating systems follow intel's multi processor<br>
> specification for waking APs when they are given control.<br>
> (<a href="http://download.intel.com/design/archives/processors/pro/docs/2420160" rel="noreferrer" target="_blank">http://download.intel.com/design/archives/processors/pro/docs/2420160</a><br>
> 6.pdf) All firmware (even legacy BIOSes) would initialize all<br>
> processors in the system, and then would either halt the APs, or put<br>
> the APs into a spin loop and only leave the BSP (boot strap processor)<br>
> running when giving control to a bootloader.<br>
><br>
> For more information, you can refer to<br>
> <a href="http://wiki.osdev.org/Symmetric_Multiprocessing" rel="noreferrer" target="_blank">http://wiki.osdev.org/Symmetric_Multiprocessing</a>, or you can check out<br>
> how the linux kernel performs multi processor bring up.<br>
><br>
> -Aaron<br>
><br>
><br>
><br>
><br>
><br>
><br>
> From: Brett Stahlman <<a href="mailto:brettstahlman@gmail.com" target="_blank">brettstahlman@gmail.com</a>><br>
> To: <a href="mailto:fw_os_forum@mailman.uefi.org" target="_blank">fw_os_forum@mailman.uefi.org</a><br>
> Date: 07/15/2016 09:11 AM<br>
> Subject: [Fw_Os_Forum] Support for EFI MP Services<br>
> Sent by: <a href="mailto:fw_os_forum-bounces@mailman.uefi.org" target="_blank">fw_os_forum-bounces@mailman.uefi.org</a><br>
> ________________________________<br>
><br>
><br>
><br>
> 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>
<a href="mailto:Fw_os_forum@mailman.uefi.org" target="_blank">Fw_os_forum@mailman.uefi.org</a><br>
<a href="http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum" rel="noreferrer" target="_blank">http://lists.mailman.uefi.org/mailman/listinfo/fw_os_forum</a><br>
</blockquote></div></div>
</div>