<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
@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:"Microsoft YaHei";
        panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
        {font-family:"\@Microsoft YaHei";
        panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
        {font-family:"\@MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 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:#0563C1;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
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;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
span.EmailStyle22
        {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 129.75pt 1.0in 129.7pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1355378354;
        mso-list-type:hybrid;
        mso-list-template-ids:-1806535440 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:2089882142;
        mso-list-template-ids:1670919758;}
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]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi Mike and Laszlo,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for the comments. <o:p></o:p></p>
<p class="MsoNormal">I was trying to use the python tool to auto generate the patches for all packages, and this did lack manual verification.<o:p></o:p></p>
<p class="MsoNormal">I may mis-classify the library instances and may cause potential misuse of the library instances.<o:p></o:p></p>
<p class="MsoNormal">Thanks for your advice and I plan to send the patch for each package one by one and take time to manually check.<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">Zhiguang<o:p></o:p></p>
<p class="MsoNormal"><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> Kinney, Michael D <michael.d.kinney@intel.com> <br>
<b>Sent:</b> Tuesday, December 1, 2020 4:53 AM<br>
<b>To:</b> Liu, Zhiguang <zhiguang.liu@intel.com>; Laszlo Ersek <lersek@redhat.com>; Ard Biesheuvel <ard.biesheuvel@arm.com>; gaoliming <gaoliming@byosoft.com.cn>; devel@edk2.groups.io; Yao, Jiewen <jiewen.yao@intel.com>; Feng, Bob C <bob.c.feng@intel.com>;
 Tian, Hot <hot.tian@intel.com>; 'Bret Barkelew' <bret@corthon.com>; Kinney, Michael D <michael.d.kinney@intel.com><br>
<b>Cc:</b> Bi, Dandan <dandan.bi@intel.com>; 'Chao Zhang' <chao.b.zhang@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; 'Liming Gao' <liming.gao@intel.com>; Justen, Jordan L <jordan.l.justen@intel.com>; 'Andrew Fish' <afish@apple.com>;
 Ni, Ray <ray.ni@intel.com>; 'Bret Barkelew' <brbarkel@microsoft.com>; debtech@gmail.com; awarkentin@vmware.com; michael.kubacki@outlook.com<br>
<b>Subject:</b> RE: <span lang="ZH-CN" style="font-family:"Microsoft YaHei",sans-serif">
回复</span>: [edk2-devel] A proposal to reduce incompatible case<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi Zhiguang,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I do not think generating these lists of lib mapping only from evaluation of the edk2 and edk2-platforms DSC usage is correct.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The only way to know for sure that there is a default mapping is if the design and implementation of the library class intended only a single mapping.<o:p></o:p></p>
<p class="MsoNormal">This would have to be documented in the lib class and the lib instance.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">An example where this will have the incorrect behavior is a platform specific library class where a only a template of that lib class is provided<o:p></o:p></p>
<p class="MsoNormal">as a *Null instance.  The expectation is that a platform that needs this feature would be required to provide their own instance of that
<o:p></o:p></p>
<p class="MsoNormal">library class in their platform DSC.  There may be features that are not used by the platforms in edk2-platforms.  In that case your
<o:p></o:p></p>
<p class="MsoNormal">tool would identify the *Null instance as the only one.  All platforms would build, but would not have the expected behavior.  It
<o:p></o:p></p>
<p class="MsoNormal">would be better for platforms to break at build time with a missing library mapping in this case.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There are a few categories of libraries<o:p></o:p></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo3">*Null library instances that are a template for a platform specific lib.  Also used for package verification builds.
<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo3">Library class where different library instances are expected to be used in a single platform.<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo3">Library class with a single lib instance and all platforms are expected to use that one library instance.<o:p></o:p></li></ol>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I like the idea that packages providing a DSC INC file with default mappings/settings, but we need to make sure it is always correct<o:p></o:p></p>
<p class="MsoNormal">and should only be applied to category (3).  This may require manual analysis in each package or extra information added to<o:p></o:p></p>
<p class="MsoNormal">lib class/lib instance.<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">Mike<o:p></o:p></p>
<p class="MsoNormal"><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> Liu, Zhiguang <<a href="mailto:zhiguang.liu@intel.com">zhiguang.liu@intel.com</a>>
<br>
<b>Sent:</b> Sunday, November 29, 2020 4:32 AM<br>
<b>To:</b> Laszlo Ersek <<a href="mailto:lersek@redhat.com">lersek@redhat.com</a>>; Ard Biesheuvel <<a href="mailto:ard.biesheuvel@arm.com">ard.biesheuvel@arm.com</a>>; gaoliming <<a href="mailto:gaoliming@byosoft.com.cn">gaoliming@byosoft.com.cn</a>>;
<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Yao, Jiewen <<a href="mailto:jiewen.yao@intel.com">jiewen.yao@intel.com</a>>; Feng, Bob C <<a href="mailto:bob.c.feng@intel.com">bob.c.feng@intel.com</a>>; Tian, Hot <<a href="mailto:hot.tian@intel.com">hot.tian@intel.com</a>>;
 'Bret Barkelew' <<a href="mailto:bret@corthon.com">bret@corthon.com</a>><br>
<b>Cc:</b> Bi, Dandan <<a href="mailto:dandan.bi@intel.com">dandan.bi@intel.com</a>>; 'Chao Zhang' <<a href="mailto:chao.b.zhang@intel.com">chao.b.zhang@intel.com</a>>; Wang, Jian J <<a href="mailto:jian.j.wang@intel.com">jian.j.wang@intel.com</a>>; Wu, Hao
 A <<a href="mailto:hao.a.wu@intel.com">hao.a.wu@intel.com</a>>; 'Liming Gao' <<a href="mailto:liming.gao@intel.com">liming.gao@intel.com</a>>; Justen, Jordan L <<a href="mailto:jordan.l.justen@intel.com">jordan.l.justen@intel.com</a>>; 'Andrew Fish' <<a href="mailto:afish@apple.com">afish@apple.com</a>>;
 Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; 'Bret Barkelew' <<a href="mailto:brbarkel@microsoft.com">brbarkel@microsoft.com</a>>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>;
<a href="mailto:debtech@gmail.com">debtech@gmail.com</a>; <a href="mailto:awarkentin@vmware.com">
awarkentin@vmware.com</a>; <a href="mailto:michael.kubacki@outlook.com">michael.kubacki@outlook.com</a><br>
<b>Subject:</b> RE: <span lang="ZH-CN" style="font-family:"MS Gothic"">回复</span>: [edk2-devel] A proposal to reduce incompatible case<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoPlainText">Hi all,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I write a python script to do the work, including classify all the library instance, generating the including lib file.<o:p></o:p></p>
<p class="MsoPlainText">In the attachment file, the first sheet includes all "Single-instance", which means in edk2 and edk2-platforms repo, only one inf files has the specified library name.<o:p></o:p></p>
<p class="MsoNormal">The second sheet includes all "Multi-Single-instance", which means in edk2 and edk2-platforms repo, for a specified module type and arch, this inf is a "Single-instance".
<o:p></o:p></p>
<p class="MsoPlainText">I think the library instance in the first two sheet can be extracted as a XXXLibs.dsc.inc<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Here is the draft code <o:p></o:p></p>
<p class="MsoPlainText"><a href="https://github.com/LiuZhiguang001/edk2/commits/extract_lib">https://github.com/LiuZhiguang001/edk2/commits/extract_lib</a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Here is the source code of this tool<o:p></o:p></p>
<p class="MsoPlainText"><a href="https://github.com/LiuZhiguang001/MyTool/tree/extract_lib">https://github.com/LiuZhiguang001/MyTool/tree/extract_lib</a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Please review the excel and the draft code.<o:p></o:p></p>
<p class="MsoPlainText">If no comments, I will send out a formal patch next week.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks<o:p></o:p></p>
<p class="MsoPlainText">Zhiguang<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> -----Original Message-----<o:p></o:p></p>
<p class="MsoPlainText">> From: Liu, Zhiguang<o:p></o:p></p>
<p class="MsoPlainText">> Sent: Saturday, November 21, 2020 2:08 PM<o:p></o:p></p>
<p class="MsoPlainText">> To: Laszlo Ersek <<a href="mailto:lersek@redhat.com">lersek@redhat.com</a>>; Ard Biesheuvel<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:ard.biesheuvel@arm.com">ard.biesheuvel@arm.com</a>>; gaoliming <<a href="mailto:gaoliming@byosoft.com.cn">gaoliming@byosoft.com.cn</a>>;<o:p></o:p></p>
<p class="MsoPlainText">> <a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; Yao, Jiewen <<a href="mailto:jiewen.yao@intel.com">jiewen.yao@intel.com</a>>; Feng, Bob C<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:bob.c.feng@intel.com">bob.c.feng@intel.com</a>>; Tian, Hot <<a href="mailto:hot.tian@intel.com">hot.tian@intel.com</a>>; 'Bret Barkelew'<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:bret@corthon.com">bret@corthon.com</a>><o:p></o:p></p>
<p class="MsoPlainText">> Cc: Bi, Dandan <<a href="mailto:dandan.bi@intel.com">dandan.bi@intel.com</a>>; 'Chao Zhang'<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:chao.b.zhang@intel.com">chao.b.zhang@intel.com</a>>; Wang, Jian J <<a href="mailto:jian.j.wang@intel.com">jian.j.wang@intel.com</a>>; Wu, Hao A<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:hao.a.wu@intel.com">hao.a.wu@intel.com</a>>; 'Liming Gao' <<a href="mailto:liming.gao@intel.com">liming.gao@intel.com</a>>; Justen, Jordan L<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:jordan.l.justen@intel.com">jordan.l.justen@intel.com</a>>; 'Andrew Fish' <<a href="mailto:afish@apple.com">afish@apple.com</a>>; Ni, Ray<o:p></o:p></p>
<p class="MsoPlainText">> <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; 'Bret Barkelew' <<a href="mailto:brbarkel@microsoft.com">brbarkel@microsoft.com</a>>; Kinney,<o:p></o:p></p>
<p class="MsoPlainText">> Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>;
<a href="mailto:debtech@gmail.com">debtech@gmail.com</a>;<o:p></o:p></p>
<p class="MsoPlainText">> <a href="mailto:awarkentin@vmware.com">awarkentin@vmware.com</a>;
<a href="mailto:michael.kubacki@outlook.com">michael.kubacki@outlook.com</a><o:p></o:p></p>
<p class="MsoPlainText">> Subject: RE: <span lang="ZH-CN" style="font-family:SimSun">
回复</span>: [edk2-devel] A proposal to reduce incompatible case<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Hi all,<o:p></o:p></p>
<p class="MsoPlainText">> Thanks all for the comments.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Hi Jiewen:<o:p></o:p></p>
<p class="MsoPlainText">> I think we are thinking from the different aspects.<o:p></o:p></p>
<p class="MsoPlainText">> I want the XXPkgLib.dsc.inc to specify the default library instance that the<o:p></o:p></p>
<p class="MsoPlainText">> package will consumes.<o:p></o:p></p>
<p class="MsoPlainText">> You may want it to specify the default library instance that the package will<o:p></o:p></p>
<p class="MsoPlainText">> produce.<o:p></o:p></p>
<p class="MsoPlainText">> I now think your way makes more sense, and also align with the implement in<o:p></o:p></p>
<p class="MsoPlainText">> NetworkPkg.<o:p></o:p></p>
<p class="MsoPlainText">> I will follow your way when working on the demo code.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Hi Bret:<o:p></o:p></p>
<p class="MsoPlainText">> I see you point about that platform should be like platform and should only<o:p></o:p></p>
<p class="MsoPlainText">> change in the stable tag.<o:p></o:p></p>
<p class="MsoPlainText">> I partly agree with you, but in fact there are some projects need to keep the<o:p></o:p></p>
<p class="MsoPlainText">> Edk2 updated frequently.<o:p></o:p></p>
<p class="MsoPlainText">> And my proposal should also be an optional way to add the library instance.<o:p></o:p></p>
<p class="MsoPlainText">> Platform dsc can also choose the original way. I think it is at least harmless if<o:p></o:p></p>
<p class="MsoPlainText">> some platforms choose not to use this way.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Hi Lazlo:<o:p></o:p></p>
<p class="MsoPlainText">> I agree with you that this proposal should only extract "Single-instance".<o:p></o:p></p>
<p class="MsoPlainText">> After all, this proposal is meant to reduce incompatible case like this<o:p></o:p></p>
<p class="MsoPlainText">> VaribalePolicyLib.<o:p></o:p></p>
<p class="MsoPlainText">> I want to the platform to be "Seamless update" in such case.<o:p></o:p></p>
<p class="MsoPlainText">> However, if this lib has two instances, it is a platform's choice and platform<o:p></o:p></p>
<p class="MsoPlainText">> owner should be aware the change.<o:p></o:p></p>
<p class="MsoPlainText">> Therefore, "Single-instance" and "Multiple-instance" should be totally different<o:p></o:p></p>
<p class="MsoPlainText">> case, and we should only enable this proposal to "Single-instance".<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Hi Liming and Ard,<o:p></o:p></p>
<p class="MsoPlainText">> Thanks for liking this idea.<o:p></o:p></p>
<p class="MsoPlainText">> I plan to work on the demo code next week and send it here for more<o:p></o:p></p>
<p class="MsoPlainText">> comments.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> BTW, about the file name, I want to it to follow the existing rule of NetworkPkg<o:p></o:p></p>
<p class="MsoPlainText">> and ArmVirtPkg.<o:p></o:p></p>
<p class="MsoPlainText">> I think for MdeModulePkg, "MdeModuleLibs.dsc.inc" will be better.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Thanks<o:p></o:p></p>
<p class="MsoPlainText">> Zhiguang<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > -----Original Message-----<o:p></o:p></p>
<p class="MsoPlainText">> > From: Laszlo Ersek <<a href="mailto:lersek@redhat.com"><span style="color:windowtext;text-decoration:none">lersek@redhat.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">> > Sent: Friday, November 20, 2020 7:18 PM<o:p></o:p></p>
<p class="MsoPlainText">> > To: Ard Biesheuvel <<a href="mailto:ard.biesheuvel@arm.com"><span style="color:windowtext;text-decoration:none">ard.biesheuvel@arm.com</span></a>>; gaoliming<o:p></o:p></p>
<p class="MsoPlainText">> > <<a href="mailto:gaoliming@byosoft.com.cn"><span style="color:windowtext;text-decoration:none">gaoliming@byosoft.com.cn</span></a>>;
<a href="mailto:devel@edk2.groups.io"><span style="color:windowtext;text-decoration:none">devel@edk2.groups.io</span></a>; Yao, Jiewen<o:p></o:p></p>
<p class="MsoPlainText">> > <<a href="mailto:jiewen.yao@intel.com"><span style="color:windowtext;text-decoration:none">jiewen.yao@intel.com</span></a>>; Liu, Zhiguang <<a href="mailto:zhiguang.liu@intel.com"><span style="color:windowtext;text-decoration:none">zhiguang.liu@intel.com</span></a>>;<o:p></o:p></p>
<p class="MsoPlainText">> > <a href="mailto:michael.kubacki@outlook.com"><span style="color:windowtext;text-decoration:none">michael.kubacki@outlook.com</span></a>;
<a href="mailto:awarkentin@vmware.com"><span style="color:windowtext;text-decoration:none">awarkentin@vmware.com</span></a>;<o:p></o:p></p>
<p class="MsoPlainText">> <a href="mailto:debtech@gmail.com"><span style="color:windowtext;text-decoration:none">debtech@gmail.com</span></a>;<o:p></o:p></p>
<p class="MsoPlainText">> > Feng, Bob C <<a href="mailto:bob.c.feng@intel.com"><span style="color:windowtext;text-decoration:none">bob.c.feng@intel.com</span></a>>; Tian, Hot <<a href="mailto:hot.tian@intel.com"><span style="color:windowtext;text-decoration:none">hot.tian@intel.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">> > Cc: 'Bret Barkelew' <<a href="mailto:bret@corthon.com"><span style="color:windowtext;text-decoration:none">bret@corthon.com</span></a>>; Bi, Dandan<o:p></o:p></p>
<p class="MsoPlainText">> > <<a href="mailto:dandan.bi@intel.com"><span style="color:windowtext;text-decoration:none">dandan.bi@intel.com</span></a>>; 'Chao Zhang' <<a href="mailto:chao.b.zhang@intel.com"><span style="color:windowtext;text-decoration:none">chao.b.zhang@intel.com</span></a>>;
 Wang,<o:p></o:p></p>
<p class="MsoPlainText">> > Jian J <<a href="mailto:jian.j.wang@intel.com"><span style="color:windowtext;text-decoration:none">jian.j.wang@intel.com</span></a>>; Wu, Hao A <<a href="mailto:hao.a.wu@intel.com"><span style="color:windowtext;text-decoration:none">hao.a.wu@intel.com</span></a>>;<o:p></o:p></p>
<p class="MsoPlainText">> > 'Liming Gao' <<a href="mailto:liming.gao@intel.com"><span style="color:windowtext;text-decoration:none">liming.gao@intel.com</span></a>>; Justen, Jordan L<o:p></o:p></p>
<p class="MsoPlainText">> > <<a href="mailto:jordan.l.justen@intel.com"><span style="color:windowtext;text-decoration:none">jordan.l.justen@intel.com</span></a>>; 'Andrew Fish' <<a href="mailto:afish@apple.com"><span style="color:windowtext;text-decoration:none">afish@apple.com</span></a>>;
 Ni, Ray<o:p></o:p></p>
<p class="MsoPlainText">> > <<a href="mailto:ray.ni@intel.com"><span style="color:windowtext;text-decoration:none">ray.ni@intel.com</span></a>>; 'Bret Barkelew' <<a href="mailto:brbarkel@microsoft.com"><span style="color:windowtext;text-decoration:none">brbarkel@microsoft.com</span></a>>;
 Kinney,<o:p></o:p></p>
<p class="MsoPlainText">> > Michael D <<a href="mailto:michael.d.kinney@intel.com"><span style="color:windowtext;text-decoration:none">michael.d.kinney@intel.com</span></a>><o:p></o:p></p>
<p class="MsoPlainText">> > Subject: Re: <span lang="ZH-CN" style="font-family:SimSun">
回复</span>: [edk2-devel] A proposal to reduce incompatible case<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > On 11/20/20 10:02, Ard Biesheuvel wrote:<o:p></o:p></p>
<p class="MsoPlainText">> > > On 11/20/20 8:27 AM, gaoliming wrote:<o:p></o:p></p>
<p class="MsoPlainText">> > >> Zhiguang:<o:p></o:p></p>
<p class="MsoPlainText">> > >>    This proposal can reduce the potential library class dependency.<o:p></o:p></p>
<p class="MsoPlainText">> > >> Each package has its xxxPkgLib.dsc.inc file that includes the<o:p></o:p></p>
<p class="MsoPlainText">> > >> library instances from this package.<o:p></o:p></p>
<p class="MsoPlainText">> > >>    Platform DSC can include the required package lib.dsc.inc file<o:p></o:p></p>
<p class="MsoPlainText">> > >> for the library instances. Can you work out the code changes to<o:p></o:p></p>
<p class="MsoPlainText">> > >> demonstrate this idea?<o:p></o:p></p>
<p class="MsoPlainText">> > >><o:p></o:p></p>
<p class="MsoPlainText">> > ><o:p></o:p></p>
<p class="MsoPlainText">> > > +1 for this idea. This would allow us to remove a *lot* of<o:p></o:p></p>
<p class="MsoPlainText">> > > +boilerplate<o:p></o:p></p>
<p class="MsoPlainText">> > > in the .DSC files, and focus on the libraries that actually matter<o:p></o:p></p>
<p class="MsoPlainText">> > > for the platform at hand.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > I feel like I'm in *cautious* agreement with this idea.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > In particular, I'd *only* like those lib class -> lib instance<o:p></o:p></p>
<p class="MsoPlainText">> > resolutions to be extracted, to DSC include files, that *cannot*<o:p></o:p></p>
<p class="MsoPlainText">> > involve platform choice. To put it differently, single-instance lib classes.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > ("Single-instance" can be interpreted per module type / per<o:p></o:p></p>
<p class="MsoPlainText">> > architecture of course -- so if a lib class has exactly 1 instance for<o:p></o:p></p>
<p class="MsoPlainText">> > PEIMs and exactly 1<o:p></o:p></p>
<p class="MsoPlainText">> > (different) instance for DXE_DRIVERs, then those resolutions qualify<o:p></o:p></p>
<p class="MsoPlainText">> > for<o:p></o:p></p>
<p class="MsoPlainText">> > extraction.)<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > If a library class genuinely has multiple instances in core edk2, then<o:p></o:p></p>
<p class="MsoPlainText">> > extracting a "default" resolution would be *wrong*, in my opinion.<o:p></o:p></p>
<p class="MsoPlainText">> > Every platform needs to make the choice explicitly, in such cases.<o:p></o:p></p>
<p class="MsoPlainText">> > This applies even if a lib class only has two instances, a functional<o:p></o:p></p>
<p class="MsoPlainText">> > one, and a Null one. The functional one should not be assumed default.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > Example: extracting the UefiLib resolution is valid. Extracting a<o:p></o:p></p>
<p class="MsoPlainText">> > SerialPortLib class resolution is invalid.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > Basically, I'd like to avoid *overrides*. Overrides are terribly hard<o:p></o:p></p>
<p class="MsoPlainText">> > to reason about.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > ... If someone wants to work on this, they'll have to implement this<o:p></o:p></p>
<p class="MsoPlainText">> > with *super<o:p></o:p></p>
<p class="MsoPlainText">> > small* patches, where every patch extracts resolutions for just one<o:p></o:p></p>
<p class="MsoPlainText">> > lib class. I would reject any patch that required me to review the<o:p></o:p></p>
<p class="MsoPlainText">> > extraction of two or more lib classes, from an OVMF or ArmVirt DSC file, at<o:p></o:p></p>
<p class="MsoPlainText">> the same time.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > There is big potential in this proposal for making platform DSC files<o:p></o:p></p>
<p class="MsoPlainText">> > *permanently* more difficult to understand & analyze. I don't<o:p></o:p></p>
<p class="MsoPlainText">> > immediately see this proposal as a good solution for avoiding the<o:p></o:p></p>
<p class="MsoPlainText">> > current kind of platform DSC breakage. Platform CI would be much<o:p></o:p></p>
<p class="MsoPlainText">> > better, in my opinion. The proposal does seem workable, but the<o:p></o:p></p>
<p class="MsoPlainText">> implementation needs to be surgical, IMO.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > OK, I'll get off my soap box now.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > Thanks<o:p></o:p></p>
<p class="MsoPlainText">> > Laszlo<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</div>
</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/68112">View/Reply Online (#68112)</a> |    |  <a target="_blank" href="https://groups.io/mt/78384573/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>