<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Jeshua, <br>
</p>
<p>I did ask my team how we have incorporated IPMI boot features
into BDS. There are two main points. <br>
</p>
<p>1. The BDS you see in edk2 is very rarely used as is for
commercial products. In fact, most PC class systems and servers
have a lot of customization in the BDS. <br>
</p>
<p>2. The BDS you see in edk2 has no concept of "generic boot
options". IPMI basically says I want to boot some "generic" thing
like HDD. Some platform code has to convert HDD into something
real that the BDS/UEFI system can actually boot. For example in
Project Mu we have a BDS with a concept of generic platform boot
options. These boot options actually just boot a platform defined
firmware application which then can interpret the "generic"
request and runs a platform defined algorithm for finding
something bootable. Using the HDD example, it would connect the
storage drivers (say NVME Dxe driver) and then enumerate each of
storage device found in a defined order and look for a
efi/boot{arch} file. This would then allow the IPMI defined
generic options to actually convert into a boot path that BDS
could use. <br>
</p>
<p><br>
</p>
<p>Regarding the handling of BootNext specifically this is modified
as part of the larger overhaul to the BDS and its relevant
libraries/APIs. <br>
</p>
<p>My expectation is this doesn't really help you with your current
problem but might give some context as to why this functionality
isn't integrated in the edk2 BDS and you haven't got a lot of
feedback from the mailing list. If interested I can provide more
info on our BDS in Project Mu and reference platform bds
implementation used here <a href="https://github.com/microsoft/mu_tiano_platforms">microsoft/mu_tiano_platforms:
Project Mu Virtual Platform Firmware (github.com)</a></p>
<p>Thanks</p>
<p>Sean</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 1/10/2023 7:53 AM, Jeshua Smith via
groups.io wrote:<br>
</div>
<blockquote type="cite" cite="mid:DM6PR12MB33715944E3E0E1C3195E7E4CDBFF9@DM6PR12MB3371.namprd12.prod.outlook.com">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
<style>@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}div.WordSection1
{page:WordSection1;}ol
{margin-bottom:0in;}ul
{margin-bottom:0in;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">Any input on this?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It seems that the current behavior isn’t
ideal:<o:p></o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">If BootNext
is already set when PlatformBootManagerLib APIs are called,
a new BootNext value from the PlatformBootManagerLib code
will be
<b>ignored</b> (because the original value is cached before
the APIs have a chance to set it) and then deleted (when the
cached value is consumed after the APIs have been called)<o:p></o:p></li>
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">If BootNext
is not already set, then the current boot will not be
affected by the BootNext value that PlatformBootManagerLib
API code sets (because there was no value when the value was
cached), but the <b>subsequent</b> boot will boot with the
BootNext value set by the APIs during the current boot
(because not having a cached value skips the deletion of
BootNext).<o:p></o:p></li>
</ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">To me this seems inconsistent and
confusing.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> <a class="moz-txt-link-abbreviated" href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>
<a class="moz-txt-link-rfc2396E" href="mailto:devel@edk2.groups.io"><devel@edk2.groups.io></a> <b>
On Behalf Of </b>Jeshua Smith via groups.io<br>
<b>Sent:</b> Tuesday, January 3, 2023 11:32 AM<br>
<b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a><br>
<b>Cc:</b> Zhichao Gao <a class="moz-txt-link-rfc2396E" href="mailto:zhichao.gao@intel.com"><zhichao.gao@intel.com></a>; Ray
Ni <a class="moz-txt-link-rfc2396E" href="mailto:ray.ni@intel.com"><ray.ni@intel.com></a><br>
<b>Subject:</b> [edk2-devel] How to select boot device for
current boot in response to IPMI System Boot Options
commands?<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" style="background:#FFEB9C" cellpadding="0" border="1">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><b><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:black">External
email: Use caution opening links or attachments</span></b><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:black">
</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Happy New Year!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m trying to figure out the proper place
to add code to allow the EFI boot code to respond to the
IPMI System Boot Options request to boot a device on the
current boot. My initial thought was to change BootNext in
the PlatformBootManagerLib APIs, but based on the comment <a href="https://www.mail-archive.com/edk2-devel@lists.01.org/msg30378.html" moz-do-not-send="true" class="moz-txt-link-freetext">
https://www.mail-archive.com/edk2-devel@lists.01.org/msg30378.html</a>
it looks like that is *<b>intentionally</b>* unsupported.
Does anyone know why we want to avoid PlatformBootManagerLib
hooks from being able to set BootNext to control what gets
booted on the current boot? Is there an intended alternative
way to support the IPMI System Boot Options Command request
to use a boot device for the current boot?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Jeshua Smith<o:p></o:p></p>
<div>
</div>
</div>
</div>
</blockquote>
</body>
</html>
<div width="1" style="color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>
You receive all messages sent to this group.
<p>
<a target="_blank" href="https://edk2.groups.io/g/devel/message/98255">View/Reply Online (#98255)</a> |
|
<a target="_blank" href="https://groups.io/mt/96034184/1813853">Mute This Topic</a>
| <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>
<a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> |
<a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |
<a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>
[edk2-devel-archive@redhat.com]<br>
<div width="1" style="color:white;clear:both">_._,_._,_</div>