<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:x="urn:schemas-microsoft-com:office:excel" 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:"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:"Segoe UI Emoji";
panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
p.m-3247337819342318172msoplaintext, li.m-3247337819342318172msoplaintext, div.m-3247337819342318172msoplaintext
{mso-style-name:m_-3247337819342318172msoplaintext;
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-3247337819342318172m6552336304203016699msoplaintext, li.m-3247337819342318172m6552336304203016699msoplaintext, div.m-3247337819342318172m6552336304203016699msoplaintext
{mso-style-name:m_-3247337819342318172m6552336304203016699msoplaintext;
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.m-3247337819342318172gmailsignatureprefix
{mso-style-name:m_-3247337819342318172gmailsignatureprefix;}
span.gmailsignatureprefix
{mso-style-name:gmail_signature_prefix;}
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:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:1074814511;
mso-list-type:hybrid;
mso-list-template-ids:21295044 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@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:-18.0pt;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@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:-18.0pt;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
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" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Thanks Hao,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This looks very promising. <o:p></o:p></p>
<p class="MsoNormal">I would appreciate some more details as I am new to OpenBMC.<o:p></o:p></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">If I understand correctly, in order to run this tool as OOB, it needs to be compiled for OpenBMC platform and somehow be included in the image.<o:p></o:p></li><ol style="margin-top:0cm" start="1" type="a">
<li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level2 lfo1">If so, can you please guide me how to do that?<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level2 lfo1">Can this tool be tested on QEMU or RaspberryPi (running OpenBMC image)?<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level2 lfo1">I found on OpenBMC the meta-openembedded/meta-oe/recipes-bsp/nvme-cli/nvme-cli_1.13.bb but it looks like it is pointing to an old version of the repo (commit f0e9569df9289d6ee55ba2c23615cc7c73a9b088
from Oct 21, 2020). Should I change that?<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level2 lfo1">It looks like this cli tool also needs an updated (latest) version of libnvme. How to make sure the OpenBMC image is built with latest version of this library?<o:p></o:p></li></ol>
<li class="MsoListParagraph" style="margin-left:0cm;mso-list:l0 level1 lfo1">When the cli tool is used for OOB, it needs to have mctp:<net>,<eid>[:ctrl-id].<o:p></o:p></li></ol>
<p class="MsoListParagraph">How do I obtain this information (net, eid, ctrl-id)?<o:p></o:p></p>
<p class="MsoListParagraph">Is there a tool that runs auto discovery and will give a map of the devices it finds? (kind of like nvme list)?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks again,<o:p></o:p></p>
<p class="MsoNormal">Kind regards,<o:p></o:p></p>
<p class="MsoNormal">Lior.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> Hao Jiang <jianghao@google.com> <br>
<b>Sent:</b> Monday, April 10, 2023 7:28 PM<br>
<b>To:</b> Lior Weintraub <liorw@pliops.com><br>
<b>Cc:</b> Andrew Jeffery <andrew@aj.id.au>; Ed Tanous <ed@tanous.net>; openbmc@lists.ozlabs.org; rashmica@linux.ibm.com<br>
<b>Subject:</b> Re: OpenBMC - Support NVMe drive health monitoring<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:solid #9C6500 1.0pt;padding:2.0pt 2.0pt 2.0pt 2.0pt">
<div>
<p class="MsoNormal" style="background:#FFEB9C"><span style="font-size:10.0pt;color:#9C6500">CAUTION:</span><span style="font-size:10.0pt;color:red"> External Sender</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">We have upstreamed the support for libnvme-mi in the opensource nvme-cli tool. <a href="https://github.com/linux-nvme/nvme-cli">https://github.com/linux-nvme/nvme-cli</a><br>
<br>
The cli tool has only nvme admin command set support, since it is co-used for inband and oob. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">For the MI cmd set, we have a really simple demo tool, but it doesn't have all MI CMD (it is a demo only :) )<br>
<a href="https://github.com/linux-nvme/libnvme/blob/master/examples/mi-mctp.c">https://github.com/linux-nvme/libnvme/blob/master/examples/mi-mctp.c</a><o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Sat, Apr 8, 2023 at 2:42 AM Lior Weintraub <<a href="mailto:liorw@pliops.com">liorw@pliops.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>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks Hao,<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">Do you know if there is a tool (e.g. ipmitool) that can be used to generate a basic NVMe MI command?<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">For example, the NVMe MI Revision 1.1 spec defines a "Management Interface Command Set" that can be used to:<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">Opcode Command<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">00h Read NVMe-MI Data Structure<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">01h NVM Subsystem Health Status Poll<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">02h Controller Health Status Poll<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">03h Configuration Set<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">04h Configuration Get<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">05h VPD Read<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">06h VPD Write<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">07h Reset<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">08h SES Receive<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">09h SES Send<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">0Ah Management Endpoint Buffer Read<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">0Bh Management Endpoint Buffer Write<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">0Ch to BFh Reserved<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">C0h to FFh Vendor specific<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">If we had a tool that can send such a command it would help with the development of this feature.<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">The idea is to start with some manually triggered commands.<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">Thanks,<o:p></o:p></p>
<p class="m-3247337819342318172msoplaintext">Lior.<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>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>From:</b> Hao Jiang <<a href="mailto:jianghao@google.com" target="_blank">jianghao@google.com</a>>
<br>
<b>Sent:</b> Friday, April 7, 2023 8:40 PM<br>
<b>To:</b> Lior Weintraub <<a href="mailto:liorw@pliops.com" target="_blank">liorw@pliops.com</a>><br>
<b>Cc:</b> Andrew Jeffery <<a href="mailto:andrew@aj.id.au" target="_blank">andrew@aj.id.au</a>>; Ed Tanous <<a href="mailto:ed@tanous.net" target="_blank">ed@tanous.net</a>>;
<a href="mailto:openbmc@lists.ozlabs.org" target="_blank">openbmc@lists.ozlabs.org</a>;
<a href="mailto:rashmica@linux.ibm.com" target="_blank">rashmica@linux.ibm.com</a><br>
<b>Subject:</b> Re: OpenBMC - Support NVMe drive health monitoring<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 style="border:solid #9C6500 1.0pt;padding:2.0pt 2.0pt 2.0pt 2.0pt">
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:#FFEB9C">
<span style="font-size:10.0pt;color:#9C6500">CAUTION:</span><span style="font-size:10.0pt;color:red"> External Sender</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt">Hi Lior and Andrew, <br>
<br>
The goal of enhancing nvmesensor with nvme-mi is to fulfill the full stack management of NVMe devices, including health monitoring but beyond. An example could be SSD firmware update and security protocol transportation. <br>
<br>
The MCTP support has improved compared to two years ago. The MCTP I2C binding has been upstreamed to linux kernel and there is an mctp daemon for openbmc for the MCTP management. <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">On Fri, Apr 7, 2023 at 5:35 AM Lior Weintraub <<a href="mailto:liorw@pliops.com" target="_blank">liorw@pliops.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>
<div>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Thanks Andrew,<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">I wish I had the experience to help with the review process
<span style="font-family:"Segoe UI Emoji",sans-serif">😊</span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">I have more than 2 decades experience with bare metal embedded systems but no experience with Embedded Linux\Yocto nor OpenBMC (nor Gerrit).<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">It's all new to me and came to realize that many guides \ documentations I find on the web are old and doesn't work anymore on OpenBMC (e.g. using the oe-init-build-env vs setup script).<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">I am happy to assist and contribute but I need some guidance.<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">I have only 2 weeks experience with OpenBMC.<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">I have succeeded to build few platforms and run them (e.g. qemuarm and RaspberryPi4).<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">I watched many youtube videos on OpenBMC which gave me a good overall understanding but when it comes to start coding or adding new stuff I am lost.<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">If we start our development with NVMe-MI basic management command as a starting point, what steps would you recommend we need to take?<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Can we use the PaspberryPi4 for this initial implementation?<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">We have a basic OpenBMC image on this RaspPi and we have it's I2C connected to our PCIe card (which is using a Desktop as the host PC).<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">(BTW, the i2c-dev module is not loaded automatically and we still haven't figured out why. As a workaround, we load the module manually with modprobe i2c-dev on the OpenBMC UART terminal)<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Thanks,<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Lior.<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">-----Original Message-----<br>
From: Andrew Jeffery <<a href="mailto:andrew@aj.id.au" target="_blank">andrew@aj.id.au</a>>
<br>
Sent: Friday, April 7, 2023 2:46 PM<br>
To: Lior Weintraub <<a href="mailto:liorw@pliops.com" target="_blank">liorw@pliops.com</a>><br>
Cc: Ed Tanous <<a href="mailto:ed@tanous.net" target="_blank">ed@tanous.net</a>>;
<a href="mailto:openbmc@lists.ozlabs.org" target="_blank">openbmc@lists.ozlabs.org</a>;
<a href="mailto:rashmica@linux.ibm.com" target="_blank">rashmica@linux.ibm.com</a>;
<a href="mailto:jianghao@google.com" target="_blank">jianghao@google.com</a><br>
Subject: Re: OpenBMC - Support NVMe drive health monitoring<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">CAUTION: External Sender<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">On Fri, 7 Apr 2023, at 19:50, Lior Weintraub wrote:<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> Hi Jet,<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span>> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> My name is Lior Weintraub and I face exactly the same task that you
<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> handled 2 years ago
<span style="font-family:"Segoe UI Emoji",sans-serif">😊</span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> I found this mailing list thread on OpenBmc:<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> <a href="https://lists.ozlabs.org/pipermail/openbmc/2020-November/024012.html" target="_blank">
<span style="color:windowtext;text-decoration:none">https://lists.ozlabs.org/pipermail/openbmc/2020-November/024012.html</span></a><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span>> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> Can you please advice about the current status of this issue?<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> I need to add OOB support to our NVMe device (supporting NVMe MI ->
<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> MCTP with SMBus binding).<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> For this task we plan to buy the AST2600 development
<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> kit<<a href="https://portwell.com/solutions/openBMC.php" target="_blank"><span style="color:windowtext;text-decoration:none">https://portwell.com/solutions/openBMC.php</span></a>> and use the
OpenBMC <o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">> for our development and testing.<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Currently OpenBMC only supports NVMe-MI via the basic management command. See phosphor-nvme or nvmesensor from dbus-sensors. We're working on migrating the OpenBMC MCTP stack to the AF_MCTP sockets
that are now provided by Linux.<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Please help review and test Rashmica's work in Gerrit to speed that process along:<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><a href="https://gerrit.openbmc.org/q/topic:AF_MCTP" target="_blank"><span style="color:windowtext;text-decoration:none">https://gerrit.openbmc.org/q/topic:AF_MCTP</span></a><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Along with Hao Jiang's work to exploit libnvme-mi in nvmesensor:<o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><a href="https://gerrit.openbmc.org/q/topic:nvme-mi" target="_blank"><span style="color:windowtext;text-decoration:none">https://gerrit.openbmc.org/q/topic:nvme-mi</span></a><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext"><span dir="RTL"></span><span dir="RTL"></span><span lang="HE" dir="RTL" style="font-size:10.5pt;font-family:"Times New Roman",serif"><span dir="RTL"></span><span dir="RTL"></span> </span><o:p></o:p></p>
<p class="m-3247337819342318172m6552336304203016699msoplaintext">Andrew<o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><br clear="all">
<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>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span class="m-3247337819342318172gmailsignatureprefix">--
</span><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hao<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><span class="gmailsignatureprefix">-- </span><o:p></o:p></p>
<p class="MsoNormal">Hao<o:p></o:p></p>
</div>
</body>
</html>