<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&#39;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, &quot;Chen, Ming (Acan, DTD-SH)&quot; &lt;<a href="mailto:ming.chen@hp.com" target="_blank">ming.chen@hp.com</a>&gt; 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-&gt;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&#39;s AP initialization obviates the need for some of the tedious, low-level real mode trampoline code I&#39;ve seen in the kernel and other loader code performing AP bring up... If UEFI simplifies only the BSP side of things, it doesn&#39;t seem a very complete solution...<br>
<br>
Thanks,<br>
Brett S.<br>
<br>
On Fri, Jul 15, 2016 at 11:28 AM,  &lt;<a href="mailto:Aaron.Pop@congatec.com" target="_blank">Aaron.Pop@congatec.com</a>&gt; wrote:<br>
&gt; Hi Brett,<br>
&gt;<br>
&gt;&gt;&gt;1. Is there a way to add support for MP Services to firmware that<br>
&gt;&gt;&gt;doesn&#39;t  have it natively? Is there a list somewhere documenting<br>
&gt;&gt;&gt;which firmware  supports?<br>
&gt; If you platform doesn&#39;t support the MP services protocol, chances are<br>
&gt; that your platform is not compliant with the Platform Initialization<br>
&gt; specification.  Additionally, the PI specification defines protocols<br>
&gt; that are intended for use by the firmware, not by boot loaders or the<br>
&gt; OS. I would highly recommend that your boot loader only use protocols<br>
&gt; that are defined in the UEFI specification.<br>
<br>
<br>
&gt;<br>
&gt;&gt;&gt;2. What is the best way to bring up the APs in an environment that<br>
&gt;&gt;&gt;doesn&#39;t  support the MP Services Protocol? I&#39;ve read something that<br>
&gt;&gt;&gt;suggests it might  be easier with UEFI than with BIOS because the PI<br>
&gt;&gt;&gt;firmware does some  pre-initialization of the APs even before handoff<br>
&gt;&gt;&gt;to the BSP - but I haven&#39;t  found much documentation on this...<br>
&gt; X86/X86_64 operating systems follow intel&#39;s multi processor<br>
&gt; specification for waking APs when they are given control.<br>
&gt; (<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>
&gt; 6.pdf) All firmware (even legacy BIOSes) would initialize all<br>
&gt; processors in the system, and then would either halt the APs, or put<br>
&gt; the APs into a spin loop and only leave the BSP (boot strap processor)<br>
&gt; running when giving control to a bootloader.<br>
&gt;<br>
&gt; For more information, you can refer to<br>
&gt; <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>
&gt; how the linux kernel performs multi processor bring up.<br>
&gt;<br>
&gt; -Aaron<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; From:        Brett Stahlman &lt;<a href="mailto:brettstahlman@gmail.com" target="_blank">brettstahlman@gmail.com</a>&gt;<br>
&gt; To:        <a href="mailto:fw_os_forum@mailman.uefi.org" target="_blank">fw_os_forum@mailman.uefi.org</a><br>
&gt; Date:        07/15/2016 09:11 AM<br>
&gt; Subject:        [Fw_Os_Forum] Support for EFI MP Services<br>
&gt; Sent by:        <a href="mailto:fw_os_forum-bounces@mailman.uefi.org" target="_blank">fw_os_forum-bounces@mailman.uefi.org</a><br>
&gt; ________________________________<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; I&#39;m working on an x86_64 UEFI boot loader that runs on the BSP in<br>
&gt; 64-bit long mode, and must bring up APs (secondary processors) after<br>
&gt; some preliminary initialization. I&#39;ve seen some documentation on EFI<br>
&gt; MP (multi-processor) Service Protocol, but the headers in gnu-efi<br>
&gt; don&#39;t appear to support it, and BS-&gt;LocateProtocol() reports status 14<br>
&gt; (EFI_NOT_FOUND). My questions are...<br>
&gt;<br>
&gt; 1. Is there a way to add support for MP Services to firmware that<br>
&gt; doesn&#39;t have it natively? Is there a list somewhere documenting which<br>
&gt; firmware supports?<br>
&gt; 2. What is the best way to bring up the APs in an environment that<br>
&gt; doesn&#39;t support the MP Services Protocol? I&#39;ve read something that<br>
&gt; suggests it might be easier with UEFI than with BIOS because the PI<br>
&gt; firmware does some pre-initialization of the APs even before handoff<br>
&gt; to the BSP - but I haven&#39;t found much documentation on this...<br>
&gt;<br>
&gt; Any help would be greatly appreciated.<br>
&gt; Thanks,<br>
&gt; 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>