scsi: ufs-pci: Fix recovery from hibernate exit errors for Intel controllers
Intel controllers can end up in an unrecoverable state after a hibernate exit error unless a full reset and restore is done before anything else. Force that to happen. Link: https://lore.kernel.org/r/20201207083120.26732-4-adrian.hunter@intel.com Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
		
							parent
							
								
									af423534d2
								
							
						
					
					
						commit
						044d5bda71
					
				| @ -178,6 +178,23 @@ static int ufs_intel_resume(struct ufs_hba *hba, enum ufs_pm_op op) | ||||
| 		      REG_UTP_TASK_REQ_LIST_BASE_L); | ||||
| 	ufshcd_writel(hba, upper_32_bits(hba->utmrdl_dma_addr), | ||||
| 		      REG_UTP_TASK_REQ_LIST_BASE_H); | ||||
| 
 | ||||
| 	if (ufshcd_is_link_hibern8(hba)) { | ||||
| 		int ret = ufshcd_uic_hibern8_exit(hba); | ||||
| 
 | ||||
| 		if (!ret) { | ||||
| 			ufshcd_set_link_active(hba); | ||||
| 		} else { | ||||
| 			dev_err(hba->dev, "%s: hibern8 exit failed %d\n", | ||||
| 				__func__, ret); | ||||
| 			/*
 | ||||
| 			 * Force reset and restore. Any other actions can lead | ||||
| 			 * to an unrecoverable state. | ||||
| 			 */ | ||||
| 			ufshcd_set_link_off(hba); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user