Hello Martin, This patch series that simplifies and optimizes the UFS driver. Please consider this patch series for kernel v5.5. Thanks, Bart. 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 (4): ufs: Serialize error handling and command submission ufs: Avoid busy-waiting by eliminating tag conflicts ufs: Use blk_{get,put}_request() to allocate and free TMFs ufs: Simplify the clock scaling mechanism implementation Bart Van Assche (4): ufs: Serialize error handling and command submission ufs: Avoid busy-waiting by eliminating tag conflicts ufs: Use blk_{get,put}_request() to allocate and free TMFs ufs: Simplify the clock scaling mechanism implementation drivers/scsi/ufs/ufshcd.c | 386 +++++++++++++++++--------------------- drivers/scsi/ufs/ufshcd.h | 19 +- 2 files changed, 182 insertions(+), 223 deletions(-)