1.参数
Get Log Page命令返回包含请求的日志页的数据缓冲区。主要使用Data Pointer, cdword 10, cdword 11, cdword 12, cdword 13, cdword 14。如果Get Log Page命令指定了不支持的log ID,则控制器将会中止该命令并且返回 Invalid Field in Command(02)。identify的Controller data structure中Log Page Attributes字段定义了log page的偏移量和扩展DWORD数。具体参数字段如下表所以:
bits | description |
31:16 | Number of Dwords Lower (NUMDL):此字段指定要返回的DWORD数的低16位。如果主机软件指定的大小大于请求的日志页,则控制器将返回完整的日志页,其中包含超出日志页末尾的DWORD的未定义结果。NUMDL和NUMDU字段组合形成一个基于0的值。 |
15 | Retain Asynchronous Event (RAE): 此位指定何时保留或清除异步事件。如果此位清除为“0”,则在命令成功完成后,相应的异步事件将被清除。如果此位设置为“1”,则在命令成功完成后,将保留相应的异步事件。 对于不用于异步事件的日志页,主机软件应将此位清除为“0”。 |
14:12 | 保留位 |
11:08 | Log Specific Field (LSP)如果没有为日志页标识符字段指定的日志定义,则保留此字段。 |
07:00 | Log Page Identifier (LID):日志ID |
bits | description |
31:16 | Log Specific Identifier:此字段指定特定日志页所需的标识符。 Endurance Group Information Endurance Group Identifier耐久性组标识符 Predictable Latency Per NVM Set NVM Set Identifier |
15:00 | Number of Dwords (NUMDU):此字段指定要返回的DWORD的高16位 |
cdw12的(31:00)为Log Page Offset Lower (LPOL),①日志页偏移量指定日志页中开始返回数据的位置。此字段指定日志页偏移量的低32位。偏移量应为双字对齐,以位1:0清除为00b表示。②控制器无需检查位1:0是否清除到00b。如果位1:0未清除到00b,控制器可能会报告命令中无效字段的错误。如果控制器未报告命令中无效字段的错误,则控制器应像位1:0清除到00b一样操作。③如果主机指定的偏移量(即LPOL和LPOU)大于请求的日志页的大小(例如,从偏移量200开始请求包含100字节的日志页),则控制器应以命令中的无效字段的状态中止命令。
cdw13的(31:00)为Log Page Offset Upper (LPOU),此字段指定日志页偏移量的高32位。
对于作用域为NVM subsystem或controller的日志页,控制器应中止在命令中除0h或ffffffffffh以外的NSID(status Invalid Field)的命令。下图是Get Log Page命令检索的日志页以及在这些日志页中返回的信息的范围 。
2. error log (log id=0x1)
①此日志页用于描述已完成但有错误的命令的额外错误信息,或报告不特定于特定命令的错误。当与以错误完成的命令或作为错误状态类型的异步事件的一部分相关联的完成队列条目的状态字段中的More(M)位设置为“1”时,才会提供错误信息。
②此错误日志可能返回最近的n个错误。如果主机软件指定n个错误日志大小的数据传输,则返回最近n个错误的错误日志。entry的顺序基于错误发生的时间,最新的错误作为第一个日志条目返回。
③返回的日志页中的每个entry在下图中定义。日志页是一组64字节的entry;在Identify Controller数据结构的ELPE字段中显示了支持的最大entry数。如果生成新entry时日志页已满,则控制器应将新entry插入日志并丢弃最旧的entry。
④控制器在power cycle和控制器级别reset时,通过重置的所有entry来清除log page。