From: Shawn Lin <shawn.lin@rock-chips.com>
To: palash.kambar@oss.qualcomm.com
Cc: shawn.lin@rock-chips.com, linux-arm-msm@vger.kernel.org,
linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
bvanassche@acm.org, nitin.rawat@oss.qualcomm.com,
mani@kernel.org, James.Bottomley@HansenPartnership.com,
martin.petersen@oracle.com
Subject: Re: [PATCH V2 1/2] ufs: core: Configure only active lanes during link
Date: Fri, 27 Mar 2026 17:31:39 +0800 [thread overview]
Message-ID: <f0685a6c-25f2-293a-cd94-754326abcedd@rock-chips.com> (raw)
In-Reply-To: <20260327090346.656324-2-palash.kambar@oss.qualcomm.com>
Hi Palash
在 2026/03/27 星期五 17:03, palash.kambar@oss.qualcomm.com 写道:
> From: Palash Kambar <palash.kambar@oss.qualcomm.com>
>
> The number of connected lanes detected during UFS link startup can be
> fewer than the lanes specified in the device tree. The current driver
> logic attempts to configure all lanes defined in the device tree,
> regardless of their actual availability. This mismatch may cause
> failures during power mode changes.
>
> Hence, add check to identify only the lanes that were successfully
> discovered during link startup, to warn on power mode change errors
> caused by mismatched lane counts.
The logic of your patch is clear, but I believe there is a slight
inconsistency between the commit message and the current code
implementation. The patch currently returns -ENOLINK immediately when a
lane mismatch is detected. This causes the Link Startup process to
terminate instantly, preventing the UFS device from completing
initialization. Consequently, ufshcd_change_power_mode() will never be
executed, there is nothing about warning on power mode change errors.
How about "to prevents potential failures in subsequent power mode
changes by failing the initialization early" or something similart?
>
> Signed-off-by: Palash Kambar <palash.kambar@oss.qualcomm.com>
> ---
> drivers/ufs/core/ufshcd.c | 39 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
>
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index 31950fc51a4c..cc291cae79f0 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -5035,6 +5035,40 @@ void ufshcd_update_evt_hist(struct ufs_hba *hba, u32 id, u32 val)
> }
> EXPORT_SYMBOL_GPL(ufshcd_update_evt_hist);
>
> +static int ufshcd_validate_link_params(struct ufs_hba *hba)
> +{
> + int ret = 0;
> + int val = 0;
> +
> + ret = ufshcd_dme_get(hba,
> + UIC_ARG_MIB(PA_CONNECTEDTXDATALANES), &val);
> + if (ret)
> + goto out;
> +
> + if (val != hba->lanes_per_direction) {
> + dev_err(hba->dev, "Tx lane mismatch [config,reported] [%d,%d]\n",
> + hba->lanes_per_direction, val);
> + ret = -ENOLINK;
> + goto out;
> + }
> +
> + val = 0;
> +
ufshcd_dme_get() returns 0 on success, non-zero value on failure.
Perhaps you could remove this "val = 0".
> + ret = ufshcd_dme_get(hba,
> + UIC_ARG_MIB(PA_CONNECTEDRXDATALANES), &val);
> + if (ret)
> + goto out;
> +
> + if (val != hba->lanes_per_direction) {
> + dev_err(hba->dev, "Rx lane mismatch [config,reported] [%d,%d]\n",
> + hba->lanes_per_direction, val);
> + ret = -ENOLINK;
> + }
> +
> +out:
> + return ret;
> +}
> +
> /**
> * ufshcd_link_startup - Initialize unipro link startup
> * @hba: per adapter instance
> @@ -5108,6 +5142,11 @@ static int ufshcd_link_startup(struct ufs_hba *hba)
> goto out;
> }
>
> + /* Check successfully detected lanes */
> + ret = ufshcd_validate_link_params(hba);
> + if (ret)
> + goto out;
> +
> /* Include any host controller configuration via UIC commands */
> ret = ufshcd_vops_link_startup_notify(hba, POST_CHANGE);
> if (ret)
next prev parent reply other threads:[~2026-03-27 9:31 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-27 9:03 [PATCH V2 0/2] Add post change sequence for link start notify palash.kambar
2026-03-27 9:03 ` [PATCH V2 1/2] ufs: core: Configure only active lanes during link palash.kambar
2026-03-27 9:31 ` Shawn Lin [this message]
2026-03-27 11:58 ` Palash Kambar
2026-03-27 21:17 ` Bart Van Assche
2026-04-03 11:58 ` Palash Kambar
2026-03-27 9:03 ` [PATCH V2 2/2] ufs: ufs-qcom: Enable Auto Hibern8 clock request support palash.kambar
2026-03-27 21:22 ` Bart Van Assche
2026-04-03 11:59 ` Palash Kambar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f0685a6c-25f2-293a-cd94-754326abcedd@rock-chips.com \
--to=shawn.lin@rock-chips.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bvanassche@acm.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mani@kernel.org \
--cc=martin.petersen@oracle.com \
--cc=nitin.rawat@oss.qualcomm.com \
--cc=palash.kambar@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox