<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">
      <div id="rwhMsgHeader">Dandan,</div>
      <div><br>
      </div>
      <div>The Status Code Protocol/PPI is the high-level interface
        which is being implemented.  The ReportStatusCodeRouter module
        implements this in terms of the ReportStatusCodeHandler
        Protocol/PPI.  That allows multiple ReportStatusCodeHandler
        modules to be used at once, so they can each react to different
        types of status codes, or report them through multiple
        channels.  That sort of multiplexing seems like a useful
        feature.</div>
      <div><br>
      </div>
      <div>Now we're considering adding a mechanism which allows
        registering status code handlers via NULL libraries, rather than
        via the protocol/PPI.  That sounds like exactly what
        ReportStatusCodeRouter is intended for.  It wouldn't really
        change its scope, it would just make it more flexible.  Adding
        this feature via a StatusCodeHandler module wouldn't improve
        modularity, it would just add complexity.  As an OEM, adding a
        custom handler would look the same to me either way:  I would
        have to add the NULL class library to a MdeModulePkg driver's
        entry in my .dsc file.  It doesn't matter to me whether it's the
        ReportStatusCodeRouter or StatusCodeHandler module.  And if I
        can do it in ReportStatusCodeRouter, then I don't need to
        include any StatusCodeHandler modules in the build at all.  That
        saves code space and reduces the number of modules in the
        APRIORI list, which are both good things.<br>
      </div>
      <div><br>
      </div>
      <div>ReportStatusCodeRouterPei already has to track registered
        handlers in PEI when running from ROM (it uses a HOB.)  Tracking
        handlers from NULL libraries wouldn't be any harder.  In fact,
        it looks like it could just export the Register() function to
        the NULL libraries, and they could call it in their
        constructors.</div>
      <div><br>
      </div>
      <div>I think using NULL libraries for status code handlers is a
        great idea.  I'd just like to take that opportunity to reduce
        the complexity of the overall status code stack while we're at
        it.<br>
      </div>
      <div><br>
      </div>
      <div>Thanks,<br>
        <p class="3DMsoNormal"><b><span
style="3D'font-size:10.0pt;font-family:"Arial",sans-serif;color:black'">Brian
              J. Johnson<br>
            </span></b><span
style="3D'font-size:10.0pt;font-family:"Arial",sans-serif;color:black'">Enterprise
            X86 Lab</span></p>
        <p class="3DMsoNormal"><span
style="3D'font-size:10.0pt;font-family:"Arial",sans-serif;color:black'">Hewlett
            Packard Enterprise</span><br>
        </p>
      </div>
      <div>
        <hr id="rwhMsgHdrDivider" style="border:0;border-top:1px solid
          #B5C4DF;padding:0;margin:10px 0 5px 0;width:100%;">
        <div style="font-family:sans-serif !important; color:#000000
          !important; font-size:11pt !important;"><b>From:</b> Bi,
          Dandan [<a class="moz-txt-link-freetext" href="mailto:dandan.bi@intel.com">mailto:dandan.bi@intel.com</a>]</div>
        <div style="font-family:sans-serif !important; color:#000000
          !important; font-size:11pt !important;"><b>Sent:</b> Monday,
          June 22, 2020, 2:27 AM</div>
        <div style="font-family:sans-serif !important; color:#000000
          !important; font-size:11pt !important;"><b>To:</b> Andrew Fish
          <a class="moz-txt-link-rfc2396E" href="mailto:afish@apple.com"><afish@apple.com></a>, edk2-devel-groups-io
          <a class="moz-txt-link-rfc2396E" href="mailto:devel@edk2.groups.io"><devel@edk2.groups.io></a>, <a class="moz-txt-link-abbreviated" href="mailto:brian.johnson@hpe.com">brian.johnson@hpe.com</a>
          <a class="moz-txt-link-rfc2396E" href="mailto:brian.johnson@hpe.com"><brian.johnson@hpe.com></a></div>
        <div style="font-family:sans-serif !important; color:#000000
          !important; font-size:11pt !important;"><b>Cc:</b>
          <a class="moz-txt-link-abbreviated" href="mailto:rfc@edk2.groups.io">rfc@edk2.groups.io</a> <a class="moz-txt-link-rfc2396E" href="mailto:rfc@edk2.groups.io"><rfc@edk2.groups.io></a>, Dong, Eric
          <a class="moz-txt-link-rfc2396E" href="mailto:eric.dong@intel.com"><eric.dong@intel.com></a>, Ni, Ray <a class="moz-txt-link-rfc2396E" href="mailto:ray.ni@intel.com"><ray.ni@intel.com></a>,
          Wang, Jian J <a class="moz-txt-link-rfc2396E" href="mailto:jian.j.wang@intel.com"><jian.j.wang@intel.com></a>, Wu, Hao A
          <a class="moz-txt-link-rfc2396E" href="mailto:hao.a.wu@intel.com"><hao.a.wu@intel.com></a>, Tan, Ming
          <a class="moz-txt-link-rfc2396E" href="mailto:ming.tan@intel.com"><ming.tan@intel.com></a>, Laszlo Ersek
          <a class="moz-txt-link-rfc2396E" href="mailto:lersek@redhat.com"><lersek@redhat.com></a>, Bi, Dandan
          <a class="moz-txt-link-rfc2396E" href="mailto:dandan.bi@intel.com"><dandan.bi@intel.com></a></div>
        <div style="font-family:sans-serif !important; color:#000000
          !important; font-size:11pt !important;"><b>Subject:</b>
          [edk2-devel] [edk2-rfc] MdeModulePkg/StatusCodeHandler:
          Separate NULL class libraries for Memory and serial handlers
          from MdeModulePkg/Universal/StatusCodeHandler modules</div>
        <br>
      </div>
    </div>
    <blockquote type="cite"
cite="mid:BN6PR11MB139381ED0E9122FA4726E78AEA970@BN6PR11MB1393.namprd11.prod.outlook.com"
      style="border:none !important; margin-left:0px !important;
      margin-right:0px !important; margin-top:0px !important;
      padding-left:0px !important; padding-right:0px !important">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <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 Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@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:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
p.3dmsonormal, li.3dmsonormal, div.3dmsonormal
        {mso-style-name:3dmsonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        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;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:807237358;
        mso-list-type:hybrid;
        mso-list-template-ids:1851846116 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1858300882;
        mso-list-type:hybrid;
        mso-list-template-ids:645803518 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:.25in;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:.75in;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:1.25in;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:1.75in;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:2.25in;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:2.75in;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:3.25in;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:3.75in;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:4.25in;
        text-indent:-9.0pt;}
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">Hi Brian,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Personally, I prefer to add the NULL class
          Library to StatusCodeHandler modules.<o:p></o:p></p>
        <ol style="margin-top:0in" type="1" start="1">
          <li class="MsoListParagraph"
            style="margin-top:3.0pt;margin-left:-.25in;mso-list:l1
            level1 lfo2">
            I think we should make the functionality of each module
            clear and separated. It may also be why we added
            ReportStatusCodeRouter and StatusCodeHandler modules in edk2
            repo before.<o:p></o:p></li>
        </ol>
        <p class="MsoListParagraph"
style="mso-margin-top-alt:3.0pt;margin-right:0in;margin-bottom:0in;margin-left:.25in;margin-bottom:.0001pt">ReportStatusCodeRouter
          modules are responsible for producing Status Code Protocol/PPI
          and Report Status Code Handler Protocol/PPI, and
          StatusCodeHandler modules are responsible for producing
          handlers (Handlers can be provided by NULL class Libraries in
          this RFC). <o:p></o:p></p>
        <p class="MsoListParagraph"
style="mso-margin-top-alt:3.0pt;margin-right:0in;margin-bottom:0in;margin-left:.25in;margin-bottom:.0001pt"> So,
          that’s why I don’t want to add the NULL class Library to
          ReportStatusCodeRouter modules directly, which change the
          functionality scope of existing modules.<o:p></o:p></p>
        <p class="MsoListParagraph" style="margin-left:.25in"><o:p> </o:p></p>
        <ol style="margin-top:0in" type="1" start="2">
          <li class="MsoListParagraph"
            style="margin-left:-.25in;mso-list:l1 level1 lfo2">I agree
            that we have a lot of layers of indirection now, but what we
            may gain is the good modularity. And you also mentioned that
            one or more StatusCodeHandler Modules may be used. We also
            want to achieve that only the StatusCodeHandler modules in
            MdeModulePkg can be used after this separation, platform can
            only add its own handler Libs to meet its requirement.<o:p></o:p></li>
        </ol>
        <p class="MsoListParagraph"><o:p> </o:p></p>
        <ol style="margin-top:0in" type="1" start="3">
          <li class="MsoListParagraph"
            style="margin-left:-.25in;mso-list:l1 level1 lfo2">As Andrew
            mentioned below, if add the libraries to
            ReportStatusCodeRouter, there will be some issue we need to
            fix, which seems also make the code logic a little tricky to
            me.<o:p></o:p></li>
        </ol>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><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">Dandan<o:p></o:p></p>
        <div style="border:none;border-left:solid blue 1.5pt;padding:0in
          0in 0in 4.0pt">
          <div>
            <div style="border:none;border-top:solid #E1E1E1
              1.0pt;padding:3.0pt 0in 0in 0in">
              <p class="MsoNormal"><b>From:</b> Andrew Fish
                <a class="moz-txt-link-rfc2396E" href="mailto:afish@apple.com"><afish@apple.com></a> <br>
                <b>Sent:</b> Saturday, June 20, 2020 2:04 AM<br>
                <b>To:</b> edk2-devel-groups-io
                <a class="moz-txt-link-rfc2396E" href="mailto:devel@edk2.groups.io"><devel@edk2.groups.io></a>; <a class="moz-txt-link-abbreviated" href="mailto:brian.johnson@hpe.com">brian.johnson@hpe.com</a><br>
                <b>Cc:</b> Bi, Dandan <a class="moz-txt-link-rfc2396E" href="mailto:dandan.bi@intel.com"><dandan.bi@intel.com></a>;
                <a class="moz-txt-link-abbreviated" href="mailto:rfc@edk2.groups.io">rfc@edk2.groups.io</a>; Dong, Eric
                <a class="moz-txt-link-rfc2396E" href="mailto:eric.dong@intel.com"><eric.dong@intel.com></a>; Ni, Ray
                <a class="moz-txt-link-rfc2396E" href="mailto:ray.ni@intel.com"><ray.ni@intel.com></a>; Wang, Jian J
                <a class="moz-txt-link-rfc2396E" href="mailto:jian.j.wang@intel.com"><jian.j.wang@intel.com></a>; Wu, Hao A
                <a class="moz-txt-link-rfc2396E" href="mailto:hao.a.wu@intel.com"><hao.a.wu@intel.com></a>; Tan, Ming
                <a class="moz-txt-link-rfc2396E" href="mailto:ming.tan@intel.com"><ming.tan@intel.com></a><br>
                <b>Subject:</b> Re: [edk2-devel] [edk2-rfc]
                MdeModulePkg/StatusCodeHandler: Separate NULL class
                libraries for Memory and serial handlers from
                MdeModulePkg/Universal/StatusCodeHandler modules<o:p></o:p></p>
            </div>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <div>
            <p class="MsoNormal"><br>
              <br>
              <o:p></o:p></p>
            <blockquote style="border:none !important; margin-left:0px
              !important; margin-right:0px !important; margin-top:0px
              !important; padding-left:0px !important; padding-right:0px
              !important">
              <div>
                <p class="MsoNormal">On Jun 19, 2020, at 10:29 AM, Brian
                  J. Johnson <<a href="mailto:brian.johnson@hpe.com" moz-do-not-send="true">brian.johnson@hpe.com</a>wrote:<o:p></o:p></p>
              </div>
              <p class="MsoNormal"><o:p> </o:p></p>
              <div>
                <div>
                  <p class="MsoNormal"><span
                      style="font-size:9.0pt;font-family:"Helvetica",sans-serif">On
                      6/18/20 2:01 AM, Dandan Bi wrote:<o:p></o:p></span></p>
                </div>
                <blockquote style="border:none !important;
                  margin-left:0px !important; margin-right:0px
                  !important; margin-top:0px !important;
                  padding-left:0px !important; padding-right:0px
                  !important">
                  <div>
                    <p class="MsoNormal">Hi All,<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">REF:<span
                        class="apple-converted-space"> </span><a href="https://bugzilla.tianocore.org/show_bug.cgi?id=2816" moz-do-not-send="true"><span
                          style="color:#954F72">https://bugzilla.tianocore.org/show_bug.cgi?id=2816</span></a><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">We plan to separate two kinds
                      of NULL class libraries for Memory and serial
                      handlers from<b>MdeModulePkg/Universal/StatusCodeHandler/…/
                        StatusCodeHandlerPei/RuntimeDxe/Smm</b><span
                        class="apple-converted-space"> </span>modules.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">The benefit we want to gain
                      from this separation is to 1) make the code clear
                      and easy to maintain, 2) make platform flexible to
                      choose any handler library they need, and it also
                      can reduce image size since the unused handlers
                      can be excluded.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">If you have any concern or
                      comments for this separation, please let me know.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">We plan to add new separated
                      NULL class library<span
                        class="apple-converted-space"> </span><b>MemoryStausCodeHandlerLib<span
                          class="apple-converted-space"> </span></b>and<span
                        class="apple-converted-space"><b> </b></span><b>SerialStatusCodeHandlerLib<span
                          class="apple-converted-space"> </span></b>with
                      different phase implementation into<span
                        class="apple-converted-space"> </span><b>MdeModulePkg\Library\</b><span
                        class="apple-converted-space"> </span>directory.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">The main tree structure may
                      like below:<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">MdeModulePkg\Library<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------<b>MemoryStausCodeHandlerLib</b><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------|------
                      PeiMemoryStausCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------|------
                      RuntimeDxeMemoryStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------|------
                      SmmMemoryStausCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------<b>SerialStatusCodeHandlerLib</b><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------|------
                      PeiSerialStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------|------
                      RuntimeDxeSerialStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">|------|------
                      SmmSerialStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"><b> </b><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"><b> </b><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">We will update existing
                      platform use cases in edk2 and edk2-platform repo
                      to cover the new NULL class library to make sure
                      this change doesn’t impact any platform.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">After this separation,
                      StatusCodeHandler module usage will like below,
                      and it’s also very flexible for platform to cover
                      more handler libraries to meet their requirements.<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei.inf
                      {<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <span
                        class="apple-converted-space"> </span><LibraryClasses><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="text-indent:9.75pt">NULL|MdeModulePkg/Library/MemoryStausCodeHandlerLib/PeiMemoryStausCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="text-indent:9.75pt">NULL|MdeModulePkg/Library/SerialStatusCodeHandlerLib/PeiSerialStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">   <span
                        class="apple-converted-space"> </span>…<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">}<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe.inf 
                      {<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <span
                        class="apple-converted-space"> </span><LibraryClasses><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="text-indent:9.75pt">NULL|MdeModulePkg/Library/MemoryStausCodeHandlerLib/RuntimeDxeMemoryStausCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="text-indent:9.75pt">NULL|MdeModulePkg/Library/SerialStatusCodeHandlerLib/RuntimeDxeSerialStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">   <span
                        class="apple-converted-space"> </span>…<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">}<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">MdeModulePkg/Universal/StatusCodeHandler/Smm/StatusCodeHandlerSmm.inf
                      {<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <span
                        class="apple-converted-space"> </span><LibraryClasses><o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">  
 NULL|MdeModulePkg/Library/MemoryStausCodeHandlerLib/SmmMemoryStausCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="text-indent:9.75pt">NULL|MdeModulePkg/Library/SerialStatusCodeHandlerLib/SmmSerialStatusCodeHandlerLib.inf<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">   <span
                        class="apple-converted-space"> </span>…<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">}<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal"> <o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Thanks,<o:p></o:p></p>
                  </div>
                  <div>
                    <p class="MsoNormal">Dandan<o:p></o:p></p>
                  </div>
                </blockquote>
                <p class="MsoNormal"
                  style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;caret-color:
                  rgb(0, 0, 0);font-variant-caps:
                  normal;text-align:start;-webkit-text-stroke-width:
                  0px;word-spacing:0px">
                  <span
                    style="font-size:9.0pt;font-family:"Helvetica",sans-serif"><o:p> </o:p></span></p>
                <p class="MsoNormal"
                  style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;caret-color:
                  rgb(0, 0, 0);font-variant-caps:
                  normal;text-align:start;-webkit-text-stroke-width:
                  0px;word-spacing:0px">
                  <span
                    style="font-size:9.0pt;font-family:"Helvetica",sans-serif">Dandan,<o:p></o:p></span></p>
                <p class="MsoNormal"
                  style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;caret-color:
                  rgb(0, 0, 0);font-variant-caps:
                  normal;text-align:start;-webkit-text-stroke-width:
                  0px;word-spacing:0px">
                  <span
                    style="font-size:9.0pt;font-family:"Helvetica",sans-serif">We'll
                    have a lot of layers of indirection....  The
                    ReportStatusCodeRouter modules will call one or more
                    StatusCodeHandlerModules, and the standard
                    StatusCodeHandler modules will call multiple
                    StatusCodeHandlerLib libraries.<o:p></o:p></span></p>
                <p class="MsoNormal"
                  style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;caret-color:
                  rgb(0, 0, 0);font-variant-caps:
                  normal;text-align:start;-webkit-text-stroke-width:
                  0px;word-spacing:0px">
                  <span
                    style="font-size:9.0pt;font-family:"Helvetica",sans-serif">How
                    about adding StatusCodeHandlerLib support directly
                    to the ReportStatusCodeRouter modules?  Then
                    platforms could omit the StatusCodeHandler modules
                    if they're only using the open-source code.  That
                    sounds like less overhead since fewer modules would
                    be needed.<o:p></o:p></span></p>
                <div>
                  <p class="MsoNormal"><o:p> </o:p></p>
                </div>
              </div>
            </blockquote>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <p class="MsoNormal">I think the need to execute from ROM
              makes this tricky. <o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">It looks to me that it is easy to move
              from PCD to libs for the StatusCodeHandler since
              registration is basically `RscHandlerPpi->Register
              (SerialStatusCodeReportWorker);`. The issue I see is the
              ReportStatusCodeRouter publishes RscHandlerPpi after the
              PEIMs constructor has been called and if the PEIM. Given
              globals don’t work when running from ROM you would have to
              do something like publish a HOB in the library constructor
              and then have the GenericStatusCodePeiEntry() walk the
              HOBs and install the handlers. So I guess it is a little
              easier than I 1st thought when I started writing this
              mail, but it would require a new public API. <o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">Thanks,<o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">Andrew Fish<br>
              <br>
              <o:p></o:p></p>
            <blockquote style="border:none !important; margin-left:0px
              !important; margin-right:0px !important; margin-top:0px
              !important; padding-left:0px !important; padding-right:0px
              !important">
              <div>
                <p class="MsoNormal"
                  style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;caret-color:
                  rgb(0, 0, 0);font-variant-caps:
                  normal;text-align:start;-webkit-text-stroke-width:
                  0px;word-spacing:0px">
                  <span
                    style="font-size:9.0pt;font-family:"Helvetica",sans-serif">Thanks,<o:p></o:p></span></p>
                <div>
                  <p class="MsoNormal"><span
                      style="font-size:9.0pt;font-family:"Helvetica",sans-serif">--<span
                        class="apple-converted-space"> </span><o:p></o:p></span></p>
                  <p class="3dmsonormal"><b><span
                        style="font-size:9.0pt;font-family:"Helvetica",sans-serif">Brian
                        J. Johnson<br>
                      </span></b><span
                      style="font-size:9.0pt;font-family:"Helvetica",sans-serif">Enterprise
                      X86 Lab<o:p></o:p></span></p>
                  <p class="3dmsonormal"><span
                      style="font-size:9.0pt;font-family:"Helvetica",sans-serif">Hewlett
                      Packard Enterprise<br>
                      <br>
                      <a href="x-msg://64/3D%22hpe.com%22" moz-do-not-send="true"><b><span
                            style="color:#954F72">hpe.com</span></b></a><o:p></o:p></span></p>
                </div>
                <div>
                  <p class="MsoNormal"></o:p></span></p>
                </div>
              </div>
            </blockquote>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
        </div>
      </div>
    </blockquote>
    <br>
    <div class="moz-signature">-<br>
    </div>
  </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/61697">View/Reply Online (#61697)</a> |


  


|


  
    <a target="_blank" href="https://groups.io/mt/74953841/1813853">Mute This Topic</a>
  

| <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>



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