diff options
author | Bart Van Assche <[email protected]> | 2021-05-13 09:49:12 -0700 |
---|---|---|
committer | Martin K. Petersen <[email protected]> | 2021-05-14 22:24:54 -0400 |
commit | d0b2b70eb12e9ffaf95e11b16b230a4e015a536c (patch) | |
tree | c40f7d599c05500d17e8fd7f1ae0feb837aa3f87 /tools/testing | |
parent | 56f396146af278135c0ff958c79b5ee1bd22453d (diff) |
scsi: ufs: core: Increase the usable queue depth
With the current implementation of the UFS driver active_queues is 1
instead of 0 if all UFS request queues are idle. That causes
hctx_may_queue() to divide the queue depth by 2 when queueing a request and
hence reduces the usable queue depth.
The shared tag set code in the block layer keeps track of the number of
active request queues. blk_mq_tag_busy() is called before a request is
queued onto a hwq and blk_mq_tag_idle() is called some time after the hwq
became idle. blk_mq_tag_idle() is called from inside blk_mq_timeout_work().
Hence, blk_mq_tag_idle() is only called if a timer is associated with each
request that is submitted to a request queue that shares a tag set with
another request queue.
Adds a blk_mq_start_request() call in ufshcd_exec_dev_cmd(). This doubles
the queue depth on my test setup from 16 to 32.
In addition to increasing the usable queue depth, also fix the
documentation of the 'timeout' parameter in the header above
ufshcd_exec_dev_cmd().
Link: https://lore.kernel.org/r/[email protected]
Fixes: 7252a3603015 ("scsi: ufs: Avoid busy-waiting by eliminating tag conflicts")
Cc: Can Guo <[email protected]>
Cc: Alim Akhtar <[email protected]>
Cc: Avri Altman <[email protected]>
Cc: Stanley Chu <[email protected]>
Cc: Bean Huo <[email protected]>
Cc: Adrian Hunter <[email protected]>
Reviewed-by: Can Guo <[email protected]>
Signed-off-by: Bart Van Assche <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
Diffstat (limited to 'tools/testing')
0 files changed, 0 insertions, 0 deletions