{"id":925,"date":"2015-12-05T19:56:30","date_gmt":"2015-12-05T10:56:30","guid":{"rendered":"http:\/\/naraeon.net\/?p=925"},"modified":"2024-09-24T22:43:38","modified_gmt":"2024-09-24T13:43:38","slug":"intel-750-series-nvme-passthrough","status":"publish","type":"post","link":"https:\/\/www.naraeon.net\/en\/intel-750-series-nvme-passthrough\/","title":{"rendered":"Intel 750 Series&#8217; NVMe Commands"},"content":{"rendered":"<p>This time, I&#8217;ll talk about Intel 750 Series&#8217; NVM Express Admin Command.<\/p>\n<ol>\n<li>Passthrough<\/li>\n<\/ol>\n<p>By now(Dec 2015), there\u2019s no official way to do NVMe Passthrough.<br \/>\nSo Intel 750 Series use the way that used by nvmewin. To try NVMe passthrough to nvmewin-like driver, see <a href=\"https:\/\/svn.openfabrics.org\/svnrepo\/nvmewin\/trunk\/docs\/PT_IOCTL.doc\">this document<\/a>.<\/p>\n<p>Above document says \\\\.\\scsi address is needed to passthrough. You need to change PhysicalDrive%d address into SCSI%d address.<br \/>\nFortunately, <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/ff560500%28v=vs.85%29.aspx\">IOCTL_SCSI_GET_ADDRESS <\/a>can do that.<\/p>\n<p>After that, you&#8217;ll face the 1117 error. You need to get enough buffer. 4Kbytes will be enough.<\/p>\n<p>2. Identify<\/p>\n<p>It&#8217;s easy to send Identify command. One of the Intel way&#8217;s advantage is, you can use the same NVM express command structure.<br \/>\n<a href=\"http:\/\/nvmexpress.org\/wp-content\/uploads\/2013\/04\/NVM_10e_specification.pdf\">NVM express 1.0 <\/a>and <a href=\"http:\/\/www.intel.com\/content\/dam\/www\/public\/us\/en\/documents\/product-specifications\/ssd-dc-p3700-spec.pdf\">Intel P3700 Series<\/a> document will be helpful for you. Because Intel 750&#8217;s spec doc has some omitted information, that of P3700 is better.<\/p>\n<p>3. Get Log Page<\/p>\n<p>As same as Identify command, <a href=\"http:\/\/nvmexpress.org\/wp-content\/uploads\/2013\/04\/NVM_10e_specification.pdf\">NVM express 1.0 <\/a>and <a href=\"http:\/\/www.intel.com\/content\/dam\/www\/public\/us\/en\/documents\/product-specifications\/ssd-dc-p3700-spec.pdf\">Intel P3700 Series<\/a> document will be enough for it.<br \/>\nBeware that you need to double-check the MaxNUMD parameter when you set Log Identifier. Samsung 950 Pro doesn&#8217;t checks MaxNUMD. But Intel driver checks MaxNUMD.<br \/>\nSo if not set properly, you&#8217;ll get abnormal output.<\/p>\n<p>4. Vendor Specific Log Page<\/p>\n<p>One of the feature of Intel NVM express is, Vendor Specific Log Pages.<\/p>\n<p>Temperature(C5h)<br \/>\nThere&#8217;re eight fields. They&#8217;re all 8byte-long.<\/p>\n<p>Additional SMART Attributes(CAh)<br \/>\nIt&#8217;s in the same format as ATA SMART.<\/p>\n<p>5. Full version source<\/p>\n<p><a href=\"https:\/\/github.com\/ebangin127\/nvmetools\/blob\/master\/trunk\/WindowsFileAPI\/CommandSet.NVMe.Intel.PortPart.pas\">Delphi<br \/>\n<\/a><a href=\"https:\/\/www.naraeon.net\/intel-nvme-passthrough-sample-cpp\/\">C++<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This time, I&#8217;ll talk about Intel 750 Series&#8217; NVM Express Admin Command. Passthrough By now(Dec 2015), there\u2019s no official way to do NVMe Passthrough. So Intel 750 Series use the way that used by nvmewin. To try NVMe passthrough to nvmewin-like driver, see this document. Above document says \\\\.\\scsi address is needed to passthrough. You [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[114,115,58,62],"class_list":["post-925","post","type-post","status-publish","format-standard","hentry","category-nvmetools","tag-intel750","tag-intel750series","tag-nvme","tag-nvmexpress"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"en","enabled_languages":["kr","en"],"languages":{"kr":{"title":true,"content":true,"excerpt":false},"en":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/posts\/925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/comments?post=925"}],"version-history":[{"count":17,"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/posts\/925\/revisions"}],"predecessor-version":[{"id":940,"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/posts\/925\/revisions\/940"}],"wp:attachment":[{"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/media?parent=925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/categories?post=925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.naraeon.net\/en\/wp-json\/wp\/v2\/tags?post=925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}