linux/drivers/scsi/ufs
Sujit Reddy Thumma e293313262 scsi: ufs: Fix broken task management command implementation
Currently, sending Task Management (TM) command to the card might
be broken in some scenarios as listed below:

Problem: If there are more than 8 TM commands the implementation
         returns error to the caller.
Fix:     Wait for one of the slots to be emptied and send the command.

Problem: Sometimes it is necessary for the caller to know the TM service
         response code to determine the task status.
Fix:     Propogate the service response to the caller.

Problem: If the TM command times out no proper error recovery is
         implemented.
Fix:     Clear the command in the controller door-bell register, so that
         further commands for the same slot don't fail.

Problem: While preparing the TM command descriptor, the task tag used
         should be unique across SCSI/NOP/QUERY/TM commands and not the
	 task tag of the command which the TM command is trying to manage.
Fix:     Use a unique task tag instead of task tag of SCSI command.

Problem: Since the TM command involves H/W communication, abruptly ending
         the request on kill interrupt signal might cause h/w malfunction.
Fix:     Wait for hardware completion interrupt with TASK_UNINTERRUPTIBLE
         set.

Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
Reviewed-by: Yaniv Gardi <ygardi@codeaurora.org>
Tested-by: Dolev Raviv <draviv@codeaurora.org>
Acked-by: Vinayak Holikatti <vinholikatti@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2014-05-28 12:25:13 +02:00
..
Kconfig [SCSI] ufs: SCSI_UFSHCD should depend on SCSI_DMA 2013-06-04 11:16:20 -07:00
Makefile [SCSI] ufs: Add Platform glue driver for ufshcd 2013-05-02 16:16:50 -07:00
ufs.h scsi: ufs: fix endianness sparse warnings 2014-05-28 12:25:13 +02:00
ufshcd-pci.c SCSI: remove unnecessary pci_set_drvdata() 2013-10-14 15:26:04 +02:00
ufshcd-pltfrm.c [SCSI] ufs: don't check resource with devm_ioremap_resource 2013-08-26 12:51:29 +04:00
ufshcd.c scsi: ufs: Fix broken task management command implementation 2014-05-28 12:25:13 +02:00
ufshcd.h scsi: ufs: Fix broken task management command implementation 2014-05-28 12:25:13 +02:00
ufshci.h scsi: ufs: fix endianness sparse warnings 2014-05-28 12:25:13 +02:00
unipro.h [SCSI] ufs: configure the attribute for power mode 2013-09-06 16:08:37 -07:00