Skip to content

Commit d34caa8

Browse files
ahunter6martinkpetersen
authored andcommitted
scsi: ufs: core: Add a quirk to suppress link_startup_again
ufshcd_link_startup() has a facility (link_startup_again) to issue DME_LINKSTARTUP a 2nd time even though the 1st time was successful. Some older hardware benefits from that, however the behaviour is non-standard, and has been found to cause link startup to be unreliable for some Intel Alder Lake based host controllers. Add UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE to suppress link_startup_again, in preparation for setting the quirk for affected controllers. Fixes: 7dc9fb4 ("scsi: ufs: ufs-pci: Add support for Intel ADL") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Link: https://patch.msgid.link/20251024085918.31825-3-adrian.hunter@intel.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent bb44826 commit d34caa8

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

drivers/ufs/core/ufshcd.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5066,7 +5066,8 @@ static int ufshcd_link_startup(struct ufs_hba *hba)
50665066
* If UFS device isn't active then we will have to issue link startup
50675067
* 2 times to make sure the device state move to active.
50685068
*/
5069-
if (!ufshcd_is_ufs_dev_active(hba))
5069+
if (!(hba->quirks & UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE) &&
5070+
!ufshcd_is_ufs_dev_active(hba))
50705071
link_startup_again = true;
50715072

50725073
link_startup:

include/ufs/ufshcd.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,13 @@ enum ufshcd_quirks {
688688
* single doorbell mode.
689689
*/
690690
UFSHCD_QUIRK_BROKEN_LSDBS_CAP = 1 << 25,
691+
692+
/*
693+
* This quirk indicates that DME_LINKSTARTUP should not be issued a 2nd
694+
* time (refer link_startup_again) after the 1st time was successful,
695+
* because it causes link startup to become unreliable.
696+
*/
697+
UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE = 1 << 26,
691698
};
692699

693700
enum ufshcd_caps {

0 commit comments

Comments
 (0)