scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION
PATCH 1/1 scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION
From: Jaegeuk Kim <[email protected]>
commit af21c3fd5b3ec540a97b367a70b26616ff7e0c55 upstream.
Note for stable: This patch is required if commit edc0596cc04bf ("scsi:
ufs: core: Stop clearing UNIT ATTENTIONS") has been cherry-picked.
Commit 57d104c153d3 ("ufs: add UFS power management support") made the UFS driver submit a REQUEST SENSE command before submitting a power management command to a WLUN to clear the POWER ON unit attention. Instead of submitting a REQUEST SENSE command before submitting a power management command, retry the power management command until it succeeds.
This is the preparation to get rid of all UNIT ATTENTION code which should be handled by users.
--- drivers/scsi/ufs/ufshcd.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/scsi/ufs/ufshcd.c +9 -3
@@ -8477,7 +8477,7 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,struct scsi_sense_hdr sshdr;struct scsi_device *sdp;unsigned long flags; -int ret; +int ret, retries;spin_lock_irqsave (hba->host->host_lock, flags); sdp = hba->sdev_ufs_device;
@@ -8510,8 +8510,14 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,* callbacks hence set the RQF_PM flag so that it doesn't resume the * already suspended childs. */ - ret =scsi_execute (sdp, cmd,DMA_NONE ,NULL ,0 ,NULL , &sshdr, -START_STOP_TIMEOUT ,0 ,0 ,RQF_PM ,NULL ); +for (retries =3 ; retries >0 ; --retries) { + ret =scsi_execute (sdp, cmd,DMA_NONE ,NULL ,0 ,NULL , &sshdr, +START_STOP_TIMEOUT ,0 ,0 ,RQF_PM ,NULL ); +if (!scsi_status_is_check_condition (ret) || + !scsi_sense_valid (&sshdr) || + sshdr.sense_key !=UNIT_ATTENTION ) +break ; + }if (ret) { sdev_printk(KERN_WARNING, sdp, "START_STOP failed for power mode: %d, result %x\n",
Signature · 1 line
2.25.1
Quoted 23 lines · Adrian Hunter
From: Jaegeuk Kim <[email protected]>
commit
af21c3fd5b3ec540a97b367a70b26616ff7e0c55upstream.Note for stable: This patch is required if commit
edc0596cc04bf("scsi:
ufs: core: Stop clearing UNIT ATTENTIONS") has been cherry-picked.Commit
57d104c153d3("ufs: add UFS power management support") made the UFS driver submit a REQUEST SENSE command before submitting a power management command to a WLUN to clear the POWER ON unit attention. Instead of submitting a REQUEST SENSE command before submitting a power management command, retry the power management command until it succeeds.This is the preparation to get rid of all UNIT ATTENTION code which should be handled by users.
Cc Adrian Hunter <[email protected]>Reviewed-by Bart Van Assche <[email protected]>Signed-off-by Jaegeuk Kim <[email protected]>Signed-off-by Martin K. Petersen <[email protected]>[Adrian: For stable]Signed-off-by Adrian Hunter <[email protected]>
Quoted 3 lines
--- drivers/scsi/ufs/ufshcd.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
Now queued up, thanks.
greg k-h