mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 05:34:13 -05:00
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: 7dc9fb47bc ("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>
This commit is contained in:
committed by
Martin K. Petersen
parent
bb44826c3b
commit
d34caa89a1
@@ -5066,7 +5066,8 @@ static int ufshcd_link_startup(struct ufs_hba *hba)
|
||||
* If UFS device isn't active then we will have to issue link startup
|
||||
* 2 times to make sure the device state move to active.
|
||||
*/
|
||||
if (!ufshcd_is_ufs_dev_active(hba))
|
||||
if (!(hba->quirks & UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE) &&
|
||||
!ufshcd_is_ufs_dev_active(hba))
|
||||
link_startup_again = true;
|
||||
|
||||
link_startup:
|
||||
|
||||
@@ -688,6 +688,13 @@ enum ufshcd_quirks {
|
||||
* single doorbell mode.
|
||||
*/
|
||||
UFSHCD_QUIRK_BROKEN_LSDBS_CAP = 1 << 25,
|
||||
|
||||
/*
|
||||
* This quirk indicates that DME_LINKSTARTUP should not be issued a 2nd
|
||||
* time (refer link_startup_again) after the 1st time was successful,
|
||||
* because it causes link startup to become unreliable.
|
||||
*/
|
||||
UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE = 1 << 26,
|
||||
};
|
||||
|
||||
enum ufshcd_caps {
|
||||
|
||||
Reference in New Issue
Block a user