[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <12308ca3-f824-596e-078f-bc00fa674aef@acm.org>
Date: Tue, 25 Apr 2023 17:08:44 -0700
From: Bart Van Assche <bvanassche@....org>
To: "Bao D. Nguyen" <quic_nguyenb@...cinc.com>,
quic_asutoshd@...cinc.com, quic_cang@...cinc.com, mani@...nel.org,
Powen.Kao@...iatek.com, stanley.chu@...iatek.com,
adrian.hunter@...el.com, beanhuo@...ron.com, avri.altman@....com,
martin.petersen@...cle.com
Cc: linux-scsi@...r.kernel.org, Alim Akhtar <alim.akhtar@...sung.com>,
"James E.J. Bottomley" <jejb@...ux.ibm.com>,
open list <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v2 2/5] ufs: mcq: Add support for clean up mcq resources
On 4/17/23 14:05, Bao D. Nguyen wrote:
> @@ -3110,7 +3128,7 @@ static int ufshcd_wait_for_dev_cmd(struct ufs_hba *hba,
> err = -ETIMEDOUT;
> dev_dbg(hba->dev, "%s: dev_cmd request timedout, tag %d\n",
> __func__, lrbp->task_tag);
> - if (ufshcd_clear_cmds(hba, 1U << lrbp->task_tag) == 0) {
> + if (ufshcd_clear_cmds(hba, 1UL << lrbp->task_tag) == 0) {
> /* successfully cleared the command, retry if needed */
> err = -EAGAIN;
> /*
Is this change necessary?
> @@ -7379,6 +7397,20 @@ static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
> */
> dev_err(hba->dev, "%s: cmd at tag %d not pending in the device.\n",
> __func__, tag);
> + if (is_mcq_enabled(hba)) {
> + /* MCQ mode */
> + if (lrbp->cmd) {
> + /* sleep for max. 200us to stabilize */
What is being stabilized here? Please make this comment more clear.
> + usleep_range(100, 200);
> + continue;
> + }
> + /* command completed already */
> + dev_err(hba->dev, "%s: cmd at tag=%d is cleared.\n",
> + __func__, tag);
> + goto out;
> + }
Please do not use lrbp->cmd to check whether or not a command has
completed. See also my patch "scsi: ufs: Fix handling of lrbp->cmd".
> @@ -7415,7 +7447,7 @@ static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
> goto out;
> }
>
> - err = ufshcd_clear_cmds(hba, 1U << tag);
> + err = ufshcd_clear_cmds(hba, 1UL << tag);
> if (err)
> dev_err(hba->dev, "%s: Failed clearing cmd at tag %d, err %d\n",
> __func__, tag, err);
Is this change necessary?
> - if (!(test_bit(tag, &hba->outstanding_reqs))) {
> + if (!is_mcq_enabled(hba) && !(test_bit(tag, &hba->outstanding_reqs))) {
Please leave out one pair of superfluous parentheses from the above
expression.
Thanks,
Bart.
Powered by blists - more mailing lists