Thread (6 messages) 6 messages, 3 authors, 2021-01-14

Re: fabrics connect cmd with a non-zero reserved value

From: Sagi Grimberg <sagi@grimberg.me>
Date: 2021-01-14 01:10:46


On 1/13/21 4:34 PM, Sagi Grimberg wrote:
quoted
Hello,
We see that when executing nvme connect cmd (Opcode: 0x7f Fabric Cmd)
The host is submitting the cmd with reserved filed set to non-zero 
value - which is out of spec.
Seems like this issue is not only for connect but also for other 
fabrics cmds.

Here is a packet capture for nvme connect :

     NVM Express Fabrics (Cmd)
         Opcode: 0x7f Fabric Cmd
         [Fabric Cqe in: 302]
         Reserved: 0x40
         Command ID: 0x0000
         Fabric Cmd Type: Connect (0x01)
         Reserved: 00000000000000000000000000000000000000
         SGL1
         Record Format: 0x0000
         Queue ID: 0x0000
         SQ Size: 0x001f
         Connect Attributes: 0x00
         Reserved: 00
         Keep Alive Timeout: 15000ms
         Reserved: 000000000000000000000000
     Data
         Host Identifier: f1aa9784-195b-4814-893d-44f90a6a92d9
         Controller ID: 0xffff
         Reserved: 
000000000000000000000000000000000000000000000000000000000000000000000000... 

         Subsystem NQN: 
nqn.2015-10.com.dell:dellemc-powerstore-23b5145591975EDFF2FE
         Host NQN: nqn.2014-08.org.nvmexpress:uuid:nc5199007
         Reserved: 
000000000000000000000000000000000000000000000000000000000000000000000000... 


0x40 value is corresponding to PSDT, in a normal (non-fabric) nvme 
cmd, PSDT field exists.
Do we expect for the same for fabric cmd?
If so, the spec can't mark the second byte of connect cmd as reserved.
Based on nvme spec:
"A reserved bit, byte, word, field, or register shall be cleared to 
0h, or in accordance with a future extension to this specification"

Is this a real bug or a spec bug?
We shouldn't be setting reserved bits. But from what I see, we zero the 
nvme commands before setting it so this is strange to me..
OK, now I see the issue.

This appears to me this would be an issue with the spec. As the connect
data (like any command payload) is coming in the form of an sgl.

Adding Fred for this question.

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help