Merge "msm: pci : Avoid deadlock with recovery and enemurate lock"

This commit is contained in:
qctecmdr 2021-06-30 01:37:50 -07:00 • committed by Gerrit - the friendly Code Review server
commit dc8e61bd5a

View file

@ -7898,6 +7898,7 @@ int msm_pcie_pm_control(enum msm_pcie_pm_opt pm_opt, u32 busnr, void *user,
break;
}
mutex_lock(&pcie_dev->recovery_lock);
mutex_lock(&pcie_dev->enumerate_lock);
/*
@ -7928,12 +7929,12 @@ int msm_pcie_pm_control(enum msm_pcie_pm_opt pm_opt, u32 busnr, void *user,
"PCIe: RC%d: request to suspend the link is rejected\n",
pcie_dev->rc_idx);
mutex_unlock(&pcie_dev->enumerate_lock);
mutex_unlock(&pcie_dev->recovery_lock);
break;
}
pcie_dev->user_suspend = true;
mutex_lock(&pcie_dev->recovery_lock);
ret = msm_pcie_pm_suspend(dev, user, data, options);
if (ret) {
@ -7949,9 +7950,9 @@ int msm_pcie_pm_control(enum msm_pcie_pm_opt pm_opt, u32 busnr, void *user,
}
}
mutex_unlock(&pcie_dev->recovery_lock);
mutex_unlock(&pcie_dev->enumerate_lock);
mutex_unlock(&pcie_dev->recovery_lock);
break;
case MSM_PCIE_RESUME:
PCIE_DBG(pcie_dev,
@ -7964,6 +7965,8 @@ int msm_pcie_pm_control(enum msm_pcie_pm_opt pm_opt, u32 busnr, void *user,
break;
}
mutex_lock(&pcie_dev->recovery_lock);
/* when link was suspended and link resume is requested */
mutex_lock(&pcie_dev->enumerate_lock);
list_for_each_entry(dev_info_itr, &pcie_dev->susp_ep_list,
@ -7990,10 +7993,10 @@ int msm_pcie_pm_control(enum msm_pcie_pm_opt pm_opt, u32 busnr, void *user,
PCIE_ERR(pcie_dev,
"PCIe: RC%d: requested to resume when link is already powered on.\n",
pcie_dev->rc_idx);
mutex_unlock(&pcie_dev->recovery_lock);
break;
}
mutex_lock(&pcie_dev->recovery_lock);
ret = msm_pcie_pm_resume(dev, user, data, options);
if (ret) {
PCIE_ERR(pcie_dev,