On 5/15/23 20:52, Kiwoong Kim wrote:
+ spin_lock_irqsave(hba->host->host_lock, flags); + hba->active_uic_cmd = NULL; + if (ufshcd_is_link_broken(hba)) { + spin_unlock_irqrestore(hba->host->host_lock, flags); + ret = -ENOLINK; + goto out; + } + hba->uic_async_done = cnf; + cmd->argument2 = 0; + cmd->argument3 = mode; + ret = __ufshcd_send_uic_cmd(hba, cmd, true); + spin_unlock_irqrestore(hba->host->host_lock, flags);
Please consider adding lockdep_assert_held(&hba->uic_cmd_mutex) near the start of __ufshcd_poll_uic_pwr() to document that this function is serialized against other contexts that submit an UIC. Additionally, I don't think that it is necessary to hold the host lock around the ufshcd_is_link_broken() or __ufshcd_send_uic_cmd() calls. Thanks, Bart.