Message ID | 20241021120313.493371-3-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: > if (!test_bit(tag, &hba->outstanding_tasks)) > goto out; > > - spin_lock_irqsave(hba->host->host_lock, flags); > + spin_lock_irqsave(&hba->reg_lock, flags); > ufshcd_utmrl_clear(hba, tag); > - spin_unlock_irqrestore(hba->host->host_lock, flags); > + spin_unlock_irqrestore(&hba->reg_lock, flags); > > /* poll for max. 1 sec to clear door bell register by h/w */ > err = ufshcd_wait_for_register(hba, Hi Avri, ufshcd_utmrl_clear() performs a single write so I assume that calls of that function do not have to be serialized? Thanks, Bart.
> > On 10/21/24 5:03 AM, Avri Altman wrote: > > if (!test_bit(tag, &hba->outstanding_tasks)) > > goto out; > > > > - spin_lock_irqsave(hba->host->host_lock, flags); > > + spin_lock_irqsave(&hba->reg_lock, flags); > > ufshcd_utmrl_clear(hba, tag); > > - spin_unlock_irqrestore(hba->host->host_lock, flags); > > + spin_unlock_irqrestore(&hba->reg_lock, flags); > > > > /* poll for max. 1 sec to clear door bell register by h/w */ > > err = ufshcd_wait_for_register(hba, > > Hi Avri, > > ufshcd_utmrl_clear() performs a single write so I assume that calls of that > function do not have to be serialized? Done. Thanks, Avri > > Thanks, > > Bart.
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 21eda055fb7d..081cbf7174da 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -7025,9 +7025,9 @@ static int ufshcd_clear_tm_cmd(struct ufs_hba *hba, int tag) if (!test_bit(tag, &hba->outstanding_tasks)) goto out; - spin_lock_irqsave(hba->host->host_lock, flags); + spin_lock_irqsave(&hba->reg_lock, flags); ufshcd_utmrl_clear(hba, tag); - spin_unlock_irqrestore(hba->host->host_lock, flags); + spin_unlock_irqrestore(&hba->reg_lock, flags); /* poll for max. 1 sec to clear door bell register by h/w */ err = ufshcd_wait_for_register(hba,
Use the host register lock to serialize access to the UTMRLCLR 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(-)