Author: imp
Date: Fri Aug 25 21:38:43 2017
New Revision: 322903
URL: https://svnweb.freebsd.org/changeset/base/322903

Log:
  Fill in reserved areas from NVMe spec in the IDENTIFY structure
  (struct nvme_controller_data) as defined in the NVM Express
  specification, revsion 1.3.
  
  Sponsored by: Netflix

Modified:
  head/sys/dev/nvme/nvme.h

Modified: head/sys/dev/nvme/nvme.h
==============================================================================
--- head/sys/dev/nvme/nvme.h    Fri Aug 25 21:38:38 2017        (r322902)
+++ head/sys/dev/nvme/nvme.h    Fri Aug 25 21:38:43 2017        (r322903)
@@ -490,8 +490,28 @@ struct nvme_controller_data {
        /** Controller ID */
        uint16_t                ctrlr_id;
 
-       uint8_t                 reserved1[176];
+       /** Version */
+       uint32_t                ver;
 
+       /** RTD3 Resume Latency */
+       uint32_t                rtd3r;
+
+       /** RTD3 Enter Latency */
+       uint32_t                rtd3e;
+
+       /** Optional Asynchronous Events Supported */
+       uint32_t                oaes;   /* bitfield really */
+
+       /** Controller Attributes */
+       uint32_t                ctratt; /* bitfield really */
+
+       uint8_t                 reserved1[12];
+
+       /** FRU Globally Unique Identifier */
+       uint8_t                 fguid[16];
+
+       uint8_t                 reserved2[128];
+
        /* bytes 256-511: admin command set attributes */
 
        /** optional admin command support */
@@ -550,8 +570,29 @@ struct nvme_controller_data {
                uint8_t         avscc_rsvd  : 7;
        } __packed avscc;
 
-       uint8_t                 reserved2[15];
+       /** Autonomous Power State Transition Attributes */
+       struct {
+               /* Autonmous Power State Transitions supported */
+               uint8_t         apst_supp : 1;
 
+               uint8_t         apsta_rsvd : 7;
+       } __packed apsta;
+
+       /** Warning Composite Temperature Threshold */
+       uint16_t                wctemp;
+
+       /** Critical Composite Temperature Threshold */
+       uint16_t                cctemp;
+
+       /** Maximum Time for Firmware Activation */
+       uint16_t                mtfa;
+
+       /** Host Memory Buffer Preferred Size */
+       uint32_t                hmpre;
+
+       /** Host Memory Buffer Minimum Size */
+       uint32_t                hmmin;
+
        /** Name space capabilities  */
        struct {
                /* if nsmgmt, report tnvmcap and unvmcap */
@@ -559,7 +600,34 @@ struct nvme_controller_data {
                uint8_t    unvmcap[16];
        } __packed untncap;
 
-       uint8_t reserved3[200];
+       /** Replay Protected Memory Block Support */
+       uint32_t                rpmbs; /* Really a bitfield */
+
+       /** Extended Device Self-test Time */
+       uint16_t                edstt;
+
+       /** Device Self-test Options */
+       uint8_t                 dsto; /* Really a bitfield */
+
+       /** Firmware Update Granularity */
+       uint8_t                 fwug;
+
+       /** Keep Alive Support */
+       uint16_t                kas;
+
+       /** Host Controlled Thermal Management Attributes */
+       uint16_t                hctma; /* Really a bitfield */
+
+       /** Minimum Thermal Management Temperature */
+       uint16_t                mntmt;
+
+       /** Maximum Thermal Management Temperature */
+       uint16_t                mxtmt;
+
+       /** Sanitize Capabilities */
+       uint32_t                sanicap; /* Really a bitfield */
+
+       uint8_t reserved3[180];
        /* bytes 512-703: nvm command set attributes */
 
        /** submission queue entry size */
@@ -574,7 +642,8 @@ struct nvme_controller_data {
                uint8_t         max : 4;
        } __packed cqes;
 
-       uint8_t                 reserved4[2];
+       /** Maximum Outstanding Commands */
+       uint16_t                maxcmd;
 
        /** number of namespaces */
        uint32_t                nn;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to