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