Skip to content

Commit dbd6c27

Browse files
ahunter6gregkh
authored andcommitted
scsi: ufs: core: Add a quirk to suppress link_startup_again
commit d34caa89a132cd69efc48361d4772251546fdb88 upstream. 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: [email protected] Signed-off-by: Adrian Hunter <[email protected]> Reviewed-by: Bart Van Assche <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Martin K. Petersen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent cf09ef5 commit dbd6c27

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

drivers/ufs/core/ufshcd.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5060,7 +5060,8 @@ static int ufshcd_link_startup(struct ufs_hba *hba)
50605060
* If UFS device isn't active then we will have to issue link startup
50615061
* 2 times to make sure the device state move to active.
50625062
*/
5063-
if (!ufshcd_is_ufs_dev_active(hba))
5063+
if (!(hba->quirks & UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE) &&
5064+
!ufshcd_is_ufs_dev_active(hba))
50645065
link_startup_again = true;
50655066

50665067
link_startup:

include/ufs/ufshcd.h

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

694701
enum ufshcd_caps {

0 commit comments

Comments
 (0)