Hi Martin, This patch series simplifies and optimizes the UFS driver. Please consider this patch series for kernel v5.6. Thanks, Bart. Changes compared to v6: - Reduced this patch series to include only those patches that received positive reviews. Changes compared to v5: - Reworked patch 4/4 such that it only modifies the clock scaling code and no other code. Added more comments in the code and improved the patch description. - Rebased this patch series on top of the 5.5/scsi-queue branch. Changes compared to v4: - Reverted back to scsi_block_requests() / scsi_unblock_requests() for the UFS error handler. - Added a new patch that serializes error handling and command submission. - Fixed a blk_mq_init_queue() return value check. Changes compared to v3: - Left out "scsi" from the name of the functions that suspend and resume command processing. Changes compared to v2: - Use a separate tag set for TMF tags. Changes compared to v1: - Use the block layer tag infrastructure for managing TMF tags. Bart Van Assche (2): ufs: Avoid busy-waiting by eliminating tag conflicts ufs: Use blk_{get,put}_request() to allocate and free TMFs drivers/scsi/ufs/ufshcd.c | 249 +++++++++++++++++++------------------- drivers/scsi/ufs/ufshcd.h | 18 +-- 2 files changed, 129 insertions(+), 138 deletions(-)