On Mon, Jun 03, 2019 at 11:07:11AM +0100, John Garry wrote: > On 03/06/2019 10:54, Ming Lei wrote: > > On Mon, Jun 03, 2019 at 09:57:26AM +0100, John Garry wrote: > > > > > > Otherwise duplicated slot can be used from different blk-mq hw queue. > > > > > > > > > > > > > > > > > > > > > The worsen thing is that V3's actual max queue depth is (4096 - 96), but > > > > > > > > this patch claims that the device can support (4096 - 96) * 32 command > > > > > > > > slots > > > > > > > > > > To be clear about the hw, the hw supports max 4096 command tags and has 16 > > > > > > > > Is 4096 the max allowed host-wide command tags? Or per-queue's max commands > > > > tags? > > > > > > 4096 is max allowed host wide, in range [0, 4096), and tags are not per > > > queue. HW delivery queues can be configured to be as large as desired. > > > > Then all delivery(and complete) queues share the 4096 command slots, we can't > > convert hisi_sas V3 into typical blk-mq MQ model simply as done by Hannes's patch. > > > > Or you may partition the 4096 tags into 16 queues, then each queue's > > depth is ~256. Depends on if performance is good for workloads. > > You still can build a unique tag easily in [0, 4096), such as > > (req->tag * hw_queue_index). > > > > blk-mq's hw queue has independent tags, which is from NVMe's submission/completion > > queue. > > ehhhh, and this is what I thought you were addressing in "[PATCH 1/9] > blk-mq: allow hw queues to share hostwide tags", right? That patch allows drivers, such as hisi_sas v3, to share the same single tags among all hw queues, then the private hw queue(reply queue, or delivery/complete queue) can be converted to blk-mq hw queue. > > > > > > > > > And on another point I saw mentioned, the device supports multiple > > > submission and multiple completion queues. They are symmetrical, and any > > > command will always complete on the same queue index which it was submitted. > > > > DQ & CQ did confuse me a bit, :-) > > DQ is "delivery" queue. Interna; terminolgy. > > In response to earlier "It depends on if hisi_sas V3 hardware supports > independent tags for each queue. " > > As you now know, it doesn't. > > TBH, I would be slightly surprised if any SCSI host supported independent > tags per HW queue (ignoring these tri-mode types). The reason is that > hisi_sas uses this tag as SAS SSP frame tag, and later used for TMF tag. If > we sent different commands to a SCSI end device from different queues, then > possibly non-unique tags and this would break the model. But maybe other > SCSI host work differently. When I tested some SCSI FC at MQ mode years ago, I did suspect if their tags is hw queue wide, but result is really true. Thanks, Ming