<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:"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.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
p.m6552336304203016699msoplaintext, li.m6552336304203016699msoplaintext, div.m6552336304203016699msoplaintext
{mso-style-name:m_6552336304203016699msoplaintext;
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.gmailsignatureprefix
{mso-style-name:gmail_signature_prefix;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
.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;}
--></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="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">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="MsoPlainText">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="MsoPlainText">Opcode Command<o:p></o:p></p>
<p class="MsoPlainText">00h Read NVMe-MI Data Structure<o:p></o:p></p>
<p class="MsoPlainText">01h NVM Subsystem Health Status Poll<o:p></o:p></p>
<p class="MsoPlainText">02h Controller Health Status Poll<o:p></o:p></p>
<p class="MsoPlainText">03h Configuration Set<o:p></o:p></p>
<p class="MsoPlainText">04h Configuration Get<o:p></o:p></p>
<p class="MsoPlainText">05h VPD Read<o:p></o:p></p>
<p class="MsoPlainText">06h VPD Write<o:p></o:p></p>
<p class="MsoPlainText">07h Reset<o:p></o:p></p>
<p class="MsoPlainText">08h SES Receive<o:p></o:p></p>
<p class="MsoPlainText">09h SES Send<o:p></o:p></p>
<p class="MsoPlainText">0Ah Management Endpoint Buffer Read<o:p></o:p></p>
<p class="MsoPlainText">0Bh Management Endpoint Buffer Write<o:p></o:p></p>
<p class="MsoPlainText">0Ch to BFh Reserved<o:p></o:p></p>
<p class="MsoPlainText">C0h to FFh Vendor specific<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">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="MsoPlainText">The idea is to start with some manually triggered commands.<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">Lior.<o:p></o:p></p>
<p class="MsoNormal"><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> Friday, April 7, 2023 8:40 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>
<p class="MsoNormal" style="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. <br>
<br>
<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Fri, Apr 7, 2023 at 5:35 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="m6552336304203016699msoplaintext">Thanks Andrew,<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">I am happy to assist and contribute but I need some guidance.<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">I have only 2 weeks experience with OpenBMC.<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">I have succeeded to build few platforms and run them (e.g. qemuarm and RaspberryPi4).<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext">Can we use the PaspberryPi4 for this initial implementation?<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext">(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="m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">Thanks,<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">Lior.<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">-----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="m6552336304203016699msoplaintext"> <o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">CAUTION: External Sender<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">On Fri, 7 Apr 2023, at 19:50, Lior Weintraub wrote:<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> Hi Jet,<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">> My name is Lior Weintraub and I face exactly the same task that you
<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> handled 2 years ago <span style="font-family:"Segoe UI Emoji",sans-serif">
😊</span><o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> I found this mailing list thread on OpenBmc:<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> <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="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">> Can you please advice about the current status of this issue?<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> I need to add OOB support to our NVMe device (supporting NVMe MI ->
<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> MCTP with SMBus binding).<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> For this task we plan to buy the AST2600 development
<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext">> 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="m6552336304203016699msoplaintext">> for our development and testing.<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">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="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">Please help review and test Rashmica's work in Gerrit to speed that process along:<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">Along with Hao Jiang's work to exploit libnvme-mi in nvmesensor:<o:p></o:p></p>
<p class="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext"><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="m6552336304203016699msoplaintext">Andrew<o:p></o:p></p>
</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>
<div>
<div>
<p class="MsoNormal">Hao<o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>