Message ID | 20241021120313.493371-4-avri.altman@wdc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Untie the host lock entanglement - part 1 | expand |
On 10/21/24 5:03 AM, Avri Altman wrote: > @@ -3100,9 +3100,9 @@ static int ufshcd_clear_cmd(struct ufs_hba *hba, u32 task_tag) > mask = 1U << task_tag; > > /* clear outstanding transaction before retry */ > - spin_lock_irqsave(hba->host->host_lock, flags); > + spin_lock_irqsave(&hba->reg_lock, flags); > ufshcd_utrl_clear(hba, mask); > - spin_unlock_irqrestore(hba->host->host_lock, flags); > + spin_unlock_irqrestore(&hba->reg_lock, flags); > > /* > * wait for h/w to clear corresponding bit in door-bell. Hi Avri, A similar comment as for the previous patch applies to this patch: ufshcd_utrl_clear() performs a single MMIO write so I don't think that calls of this function have to be serialized. Thanks, Bart.
> On 10/21/24 5:03 AM, Avri Altman wrote: > > @@ -3100,9 +3100,9 @@ static int ufshcd_clear_cmd(struct ufs_hba *hba, > u32 task_tag) > > mask = 1U << task_tag; > > > > /* clear outstanding transaction before retry */ > > - spin_lock_irqsave(hba->host->host_lock, flags); > > + spin_lock_irqsave(&hba->reg_lock, flags); > > ufshcd_utrl_clear(hba, mask); > > - spin_unlock_irqrestore(hba->host->host_lock, flags); > > + spin_unlock_irqrestore(&hba->reg_lock, flags); > > > > /* > > * wait for h/w to clear corresponding bit in door-bell. > > Hi Avri, > > A similar comment as for the previous patch applies to this patch: > ufshcd_utrl_clear() performs a single MMIO write so I don't think that calls of > this function have to be serialized. Done. Thanks, Avri > > Thanks, > > Bart.
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 081cbf7174da..4eee737a4fd5 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -3100,9 +3100,9 @@ static int ufshcd_clear_cmd(struct ufs_hba *hba, u32 task_tag) mask = 1U << task_tag; /* clear outstanding transaction before retry */ - spin_lock_irqsave(hba->host->host_lock, flags); + spin_lock_irqsave(&hba->reg_lock, flags); ufshcd_utrl_clear(hba, mask); - spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock_irqrestore(&hba->reg_lock, flags); /* * wait for h/w to clear corresponding bit in door-bell.
Use the host register lock to serialize access to the UTRLCLR as well, instead of the host_lock. Signed-off-by: Avri Altman <avri.altman@wdc.com> --- drivers/ufs/core/ufshcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)