<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>