On Thu, Sep 22, 2022 at 06:05:07PM -0700, Asutosh Das wrote: > > UFS Multi-Circular Queue (MCQ) has been added in UFSHCI v4.0 to improve storage performance. > This patch series is a RFC implementation of this. This is no more an RFC series. Also, it would be good if you can provide a summary on how the implementation has been done. Thanks, Mani > > This is the initial driver implementation and it has been verified by booting on an emulation > platform. During testing, all low power modes were disabled and it was in HS-G1 mode. > > Please take a look and let us know your thoughts. > > v1: > - Split the changes > - Addressed Bart's comments > - Addressed Bean's comments > > * RFC versions: > v2 -> v3: > - Split the changes based on functionality > - Addressed queue configuration issues > - Faster SQE tail pointer increments > - Addressed comments from Bart and Manivannan > > v1 -> v2: > - Enabled host_tagset > - Added queue num configuration support > - Added one more vops to allow vendor provide the wanted MAC > - Determine nutrs and can_queue by considering both MAC, bqueuedepth and EXT_IID support > - Postponed MCQ initialization and scsi_add_host() to async probe > - Used (EXT_IID, Task Tag) tuple to support up to 4096 tasks (theoretically) > > Asutosh Das (16): > ufs: core: Probe for ext_iid support > ufs: core: Introduce Multi-circular queue capability > ufs: core: Defer adding host to scsi if mcq is supported > ufs: core: mcq: Introduce Multi Circular Queue > ufs: core: mcq: Configure resource regions > ufs: core: mcq: Calculate queue depth > ufs: core: mcq: Allocate memory for mcq mode > ufs: core: mcq: Configure operation and runtime interface > ufs: core: mcq: Use shared tags for MCQ mode > ufs: core: Prepare ufshcd_send_command for mcq > ufs: core: mcq: Find hardware queue to queue request > ufs: core: Prepare for completion in mcq > ufs: mcq: Add completion support of a cqe > ufs: core: mcq: Add completion support in poll > ufs: core: mcq: Enable Multi Circular Queue > ufs: qcom-host: Enable multi circular queue capability > > drivers/ufs/core/Makefile | 2 +- > drivers/ufs/core/ufs-mcq.c | 511 +++++++++++++++++++++++++++++++++++++++++ > drivers/ufs/core/ufshcd-priv.h | 84 ++++++- > drivers/ufs/core/ufshcd.c | 322 +++++++++++++++++++++----- > drivers/ufs/host/ufs-qcom.c | 49 ++++ > drivers/ufs/host/ufs-qcom.h | 4 + > include/ufs/ufs.h | 6 + > include/ufs/ufshcd.h | 136 +++++++++++ > include/ufs/ufshci.h | 63 +++++ > 9 files changed, 1117 insertions(+), 60 deletions(-) > create mode 100644 drivers/ufs/core/ufs-mcq.c > > -- > 2.7.4 > -- மணிவண்ணன் சதாசிவம்