Skip to content

Commit 1a9dcda

Browse files
ahunter6gregkh
authored andcommitted
scsi: ufs: core: Add a quirk to suppress link_startup_again
commit d34caa8 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: 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 2d80fad commit 1a9dcda

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
@@ -5028,7 +5028,8 @@ static int ufshcd_link_startup(struct ufs_hba *hba)
50285028
* If UFS device isn't active then we will have to issue link startup
50295029
* 2 times to make sure the device state move to active.
50305030
*/
5031-
if (!ufshcd_is_ufs_dev_active(hba))
5031+
if (!(hba->quirks & UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE) &&
5032+
!ufshcd_is_ufs_dev_active(hba))
50325033
link_startup_again = true;
50335034

50345035
link_startup:

include/ufs/ufshcd.h

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

692699
enum ufshcd_caps {

0 commit comments

Comments
 (0)