> On 11/21/24 1:06 PM, Avri Altman wrote: > >> On 11/18/24 6:41 AM, Avri Altman wrote: > >>> + spin_lock_irqsave(hba->host->host_lock, flags); > >>> + if (ufshcd_has_pending_tasks(hba) || > >>> + hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL) { > >>> + spin_unlock_irqrestore(hba->host->host_lock, flags); > >>> + return; > >>> + } > >>> + spin_unlock_irqrestore(hba->host->host_lock, flags); > >> > >> Why explicit lock/unlock calls instead of using scoped_guard()? > > Should I apply those to host_lock as well? > > Yes, please use scoped_guard() and guard() in new code. I expect that using > scoped_guard() here will lead to code that is easier to read. Done. > > >>> + * @clk_gating_workq: workqueue for clock gating work. > >>> + * @lock: serialize access to some struct ufs_clk_gating members > >> > >> Please document that @lock is the outer lock relative to the host lock. > > Not sure what you mean? > > host_lock is nested in one place only, should this goes to the @lock > documentation? > > Whenever locks are nested, the nesting order must be consistent > everywhere. Otherwise there is a risk of triggering an ABBA deadlock. > So I think it is a good practice to document in which order locks should be > nested. Done. Thanks, Avri > > Thanks, > > Bart.