linux/drivers/scsi/ufs
subhashj@codeaurora.org 10fe5888a4 scsi: ufs: increase the scsi query response timeout
It is found thats UFS device may take longer than 30ms to respond to
query requests and in this case we might run into following scenario:

1. UFS host SW sends a query request to UFS device to read an attribute
   value. SW uses tag #31 for this purpose.
2. UFS host SW waits for 30ms to get the query response (and doorbell
   to be cleared by UFS host HW).
3. UFS device doesn't respond back within 30ms hence UFS host SW times
   out waiting for the query response.
4. UFS host SW clears the tag#31 from UTRLCLR register.
5. UFS host SW waits until UFS host HW to clear tag#31 from the doorbell
   register.
6. UFS host SW retries the same query request on same tag#31 (sends a query
   request to device to read an attribute value).
7. UFS host HW gets the query response from the device but this was
   intended as a query response for the 1st query request sent (step-1).
8. Now UFS device sends another query response to host (for query request
   sent @step-6).

Now there are 2 issues that could happen with above scenario:
1. UFS device should have actually responded back with only one query
   response but it is found that device may respond back with 2 query
   responses.
2. If UFS device responds back with 2 resposes on same tag, host HW/SW
   behaviour isn't predictable.

To avoid running into above scenario, we would basically allow device
to take longer (upto 1.5 seconds) for query response.

Reviewed-by: Gilad Broner <gbroner@codeaurora.org>
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2016-11-29 12:06:56 -05:00
..
Kconfig scsi: ufs: Kconfig fix 2016-09-29 21:57:08 -04:00
Makefile ufs: add TC G210 pci driver 2016-07-12 23:16:31 -04:00
tc-dwc-g210-pci.c ufs: add TC G210 pci driver 2016-07-12 23:16:31 -04:00
tc-dwc-g210-pltfrm.c ufs: add TC G210 platform driver 2016-07-12 23:16:31 -04:00
tc-dwc-g210.c scsi: ufs: Add missing header dependencies for tc-dwc-g210 2016-09-04 01:28:08 -04:00
tc-dwc-g210.h ufs: add support for Synopsys G210 Test Chip 2016-07-12 23:16:31 -04:00
ufs_quirks.h scsi: ufs: Enable no vccq quirk for skhynix device 2016-09-28 01:08:05 -04:00
ufs-qcom.c scsi: ufs: qcom: Properly clear hba priv on failure 2016-11-21 22:40:30 -05:00
ufs-qcom.h scsi: ufs-qcom: add printouts of testbus debug registers 2016-03-14 21:04:45 -04:00
ufs.h scsi: ufs: update device descriptor maximum size 2016-11-29 12:06:56 -05:00
ufshcd-dwc.c ufs: Adding license info do tc-dwc-g210 and ufshcd-dwc to enable loadable module 2016-07-12 23:16:31 -04:00
ufshcd-dwc.h ufs: add support for DesignWare Controller 2016-07-12 23:16:31 -04:00
ufshcd-pci.c scsi: ufshcd: release resources if probe fails 2016-11-08 17:30:00 -05:00
ufshcd-pltfrm.c scsi: ufshcd: release resources if probe fails 2016-11-08 17:30:00 -05:00
ufshcd-pltfrm.h scsi: ufs: make the UFS variant a platform device 2015-11-09 18:00:02 -05:00
ufshcd.c scsi: ufs: increase the scsi query response timeout 2016-11-29 12:06:56 -05:00
ufshcd.h scsi: ufs: introduce UFSHCD_QUIRK_PRDT_BYTE_GRAN quirk 2016-11-22 17:03:53 -05:00
ufshci-dwc.h ufs: add support for DesignWare Controller 2016-07-12 23:16:31 -04:00
ufshci.h scsi: ufs: Add missing UFS_MASK macro definition 2016-11-25 10:04:25 -05:00
unipro.h ufs: add unipro attributes 2016-07-12 23:16:31 -04:00