<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)">
<!--[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:"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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        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.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.m-7908660954218574492m3349455740235281957xmsonormal, li.m-7908660954218574492m3349455740235281957xmsonormal, div.m-7908660954218574492m3349455740235281957xmsonormal
        {mso-style-name:m_-7908660954218574492m3349455740235281957xmsonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.m-7908660954218574492m3349455740235281957xmsolistparagraph, li.m-7908660954218574492m3349455740235281957xmsolistparagraph, div.m-7908660954218574492m3349455740235281957xmsolistparagraph
        {mso-style-name:m_-7908660954218574492m3349455740235281957xmsolistparagraph;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle21
        {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:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:115030270;
        mso-list-template-ids:1487450016;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1
        {mso-list-id:119110462;
        mso-list-template-ids:-1632076800;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2
        {mso-list-id:255525894;
        mso-list-template-ids:-277085856;}
@list l3
        {mso-list-id:1081486492;
        mso-list-template-ids:818553204;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4
        {mso-list-id:1158688425;
        mso-list-template-ids:-1474417934;}
@list l4:level1
        {mso-level-start-at:3;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5
        {mso-list-id:1524711787;
        mso-list-template-ids:-453073134;}
@list l5:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l5:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6
        {mso-list-id:1968197153;
        mso-list-template-ids:720111268;}
@list l6:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></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="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="VI">Hi Emily,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="VI"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="VI">Sorry for late response.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="VI"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="VI">I added new document for FRU </span>manager package.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a href="https://github.com/ampere-openbmc/docs/tree/master/fru-manager">https://github.com/ampere-openbmc/docs/tree/master/fru-manager</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please take a look about the design of new package.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best regards,<o:p></o:p></p>
<p class="MsoNormal">Hoang<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Emily Shaffer <emilyshaffer@google.com><br>
<b>Date: </b>Saturday, January 26, 2019 at 8:18 AM<br>
<b>To: </b>Hoang Nguyen <hnguyen@amperecomputing.com><br>
<b>Cc: </b>Hien Pham <hpham@amperecomputing.com>, OpenBMC Maillist <openbmc@lists.ozlabs.org><br>
<b>Subject: </b>Re: ampere-openbmc/phosphor-host-ipmid<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">[NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.] ________________________________________________________________________________________________________________________
<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">+OpenBMC mailing list <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hoang,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks for the overview. I think that we would probably like to see your design for review - it sounds interesting and there have been other complaints regarding FRU parser.  If you want to provide more detail to the entire list I'm sure
 we will be interested to hear, and also very interested to take a look at your code and consider adoption.<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">Emily<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Fri, Jan 25, 2019 at 1:23 AM Hoang Nguyen <<a href="mailto:hnguyen@amperecomputing.com">hnguyen@amperecomputing.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi Emily,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">FYI, now I don’t have too much time to develop new feature of IPMI@OpenBMC, but I can follow the IPMI@OpenBMC activity.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I’ll push the code for reviewing if you’re interesting in my design.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Firstly, I’ll overview about my design. And I’ll continue in detail if you agree.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>The package name</b>: FRU manager<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>The reason for new package:</b><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ Current package doesn’t support Multirecord FRU parsing<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ Sometime, using “IPMI fru write…” command will crash the FRU EEPROM image -> nothing from D-Bus can inform this info<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>New package structure:</b><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">FRU manager package has 2 parts:
<b>Manager</b> and <b>Parser</b><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+
<b>Manager</b>:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    - Initial the D-Bus interface + all properties of Chassis/Board/Product/Multirecord areas (with
<span style="color:red">default value</span>)<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    - Provide the D-Bus methods for other packages (<b>Parser</b> as an example) to update the real data of FRU to D-Bus<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    - Provide methods to update the FRU device directly (in case of FRU recovering)<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+
<b>Parser</b>:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    - Access the FRU device directly to parse the FRU data and request to update these date to D-Bus (using
<b>Manager</b> supported methods)<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>New services to handle new package:</b><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Add more 2 services:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ FRU manager service: start Manager part to handle all FRU request on D-Bus<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ FRU parser service: start Parser part to parse FRU data and update to D-Bus<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>Improvement points:</b><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ Handle Multirecord data<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">+ In case of FRU data is not correct, the FRU parser service will be failed, all data of FRU on D-Bus are “default value”<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">   -> We can identify the issue and recovering the FRU image<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Best regards,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hoang<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Emily Shaffer <<a href="mailto:emilyshaffer@google.com" target="_blank">emilyshaffer@google.com</a>><br>
<b>Date: </b>Friday, January 25, 2019 at 7:11 AM<br>
<b>To: </b>Hien Pham <<a href="mailto:hpham@amperecomputing.com" target="_blank">hpham@amperecomputing.com</a>><br>
<b>Cc: </b>Hoang Nguyen <<a href="mailto:hnguyen@amperecomputing.com" target="_blank">hnguyen@amperecomputing.com</a>><br>
<b>Subject: </b>Re: ampere-openbmc/phosphor-host-ipmid</span><o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">[NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.] ________________________________________________________________________________________________________________________
<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hien, Hoang,
<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks so much for replying to my cold email :)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I want to take a look and understand better the approach you guys used. We've added more support to some of the FRU functionality you were missing - specifically multirecord FRU
 has seen development in the past month or two - but it looks like you made a broader change.  If you have the engineer time to do so, I think it'd be valuable for you to push either your code or a design proposal (which maybe you already have written) for
 the OpenBMC community to take a look at (via gerrit) - I'd like to get the rest of the community's feedback too.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">It sounds like you aren't able to dedicate a lot of resources right now so I definitely understand if you don't want to put up a review; if you won't have the time, could you let
 me know? I'll ask the other IPMI maintainers to take a look at your approach too and we can decide if it's something we want to bring over ourselves.  (But it's more cohesive for the community if you're able to push the review from your end :) )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Emily<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Wed, Jan 23, 2019 at 11:53 PM Hien Pham <<a href="mailto:hpham@amperecomputing.com" target="_blank">hpham@amperecomputing.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div id="m_-7908660954218574492m_3349455740235281957divtagdefaultwrapper">
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black">Dear Emily,</span><o:p></o:p></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black"> </span><o:p></o:p></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black">I'm Hien Plam (Ampere OpenBMC CLA manager).  Nice to hear that you care the change we did.</span><o:p></o:p></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black"> </span><o:p></o:p></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black">No worry, we committed to contribute back and willing to submit the change to the upstream anyway (if you see the change are applicable).  Please let us know if you are interesting
 in our FRU refactor (Hoang's explanation below).  If yes, we can process  next step to upstream the changes.</span><o:p></o:p></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black"> </span><o:p></o:p></p>
<p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:12.0pt;color:black">Thank and best regards,</span><o:p></o:p></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="0" width="100%" align="center">
</div>
<div id="m_-7908660954218574492m_3349455740235281957divRplyFwdMsg">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="color:black">From:</span></b><span style="color:black"> Hoang Nguyen<br>
<b>Sent:</b> Thursday, January 24, 2019 2:02:23 PM<br>
<b>To:</b> Emily Shaffer<br>
<b>Cc:</b> Hien Pham<br>
<b>Subject:</b> Re: ampere-openbmc/phosphor-host-ipmid</span> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Hi Emily,<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">First at all, I’d like to inform that now we’re suspending the OpenBMC activity due to the business strategy.<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">But we’ll come back with OpenBMC soon (I’m
<b>sure</b> about it).<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Regarding to your interesting of IPMI implementations (FRU interaction in phosphor-host-ipmid), I’ve not push these code because I’m using another design for the communication between IPMI implementation
 (phosphor-host-ipmid) and FRU access handler (ipmi-fru-parser).<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">At current design, I found some limitation, such as:<o:p></o:p></p>
<ul type="disc">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l3 level1 lfo1">
ipmi-fru-parser cannot parse the multi-record area<o:p></o:p></li><li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l3 level1 lfo1">
ipmi-fru-parser takes many responsibilities: <o:p></o:p></li></ul>
<ul type="disc">
<ul type="circle">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l5 level2 lfo2">
Handle FRU device<o:p></o:p></li><li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l5 level2 lfo2">
Implement IPMI FRU commands<o:p></o:p></li></ul>
</ul>
<ul type="disc">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l0 level1 lfo3">
many modules can access the FRU EEPROM device directly<o:p></o:p></li></ul>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">So I changed the design, include:<o:p></o:p></p>
<ol start="1" type="1">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l2 level1 lfo4">
Disable the ipmi-fru-parser<o:p></o:p></li><li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l2 level1 lfo4">
Create new module (like FRU manager package) to handle the FRU device.<o:p></o:p></li></ol>
<p class="m-7908660954218574492m3349455740235281957xmsolistparagraph">Overview about this package, it can:<o:p></o:p></p>
<ul type="disc">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l1 level1 lfo5">
Access (read/write) the FRU device directly.<o:p></o:p></li><li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l1 level1 lfo5">
Parse the multi-record area and public all info to D-Bus interface<o:p></o:p></li><li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l1 level1 lfo5">
Provide some methods (using D-Bus interface) to support the read/write FRU device request from other packages.<o:p></o:p></li></ul>
<ol start="3" type="1">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l4 level1 lfo6">
Update all relate packages (phosphor-host-ipmid is example):<o:p></o:p></li></ol>
<ul type="disc">
<li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l6 level1 lfo7">
Stop accessing FRU device directly and start using FRU manager package by calling supported methods<o:p></o:p></li><li class="m-7908660954218574492m3349455740235281957xmsolistparagraph" style="mso-list:l6 level1 lfo7">
Move IPMI FRU commands to phosphor-host-ipmid<o:p></o:p></li></ul>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">With this design, each package takes only one responsibility; prevent the issue of FRU device accessing from many packages.<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Finally, because this solution is specific for our system, so I did not pushed it.<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">(but it always follow the common specification)<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Best regards,<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Hoang<o:p></o:p></p>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="m-7908660954218574492m3349455740235281957xmsonormal"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Emily Shaffer <<a href="mailto:emilyshaffer@google.com" target="_blank">emilyshaffer@google.com</a>><br>
<b>Date: </b>Thursday, January 24, 2019 at 5:26 AM<br>
<b>To: </b>Hoang Nguyen <<a href="mailto:hnguyen@amperecomputing.com" target="_blank">hnguyen@amperecomputing.com</a>><br>
<b>Subject: </b>ampere-openbmc/phosphor-host-ipmid</span><o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
</div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">[NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.] ________________________________________________________________________________________________________________________
<o:p></o:p></p>
<div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Hi Hoang, <o:p></o:p></p>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">I'm a maintainer of the IPMI stack for OpenBMC (<a href="http://github.com/openbmc" target="_blank">github.com/openbmc</a>) and came across your forked project today.<o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">I noticed that Ampere executed a CLA with OpenBMC in July 2018, but I don't see that you're contributing your IPMI implementations back to OpenBMC. It actually looks like in general Ampere has written
 some code that we want, especially regarding FRU interaction in phosphor-host-ipmid, so I'm curious why it is that you haven't pushed any code back up to us.<o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Can I facilitate getting Ampere to contribute back to the OpenBMC community?<o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal"> <o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="m-7908660954218574492m3349455740235281957xmsonormal">Emily Shaffer<br>
(Github/Freenode: nasamuffin)<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</body>
</html>