NVIDIA: SAUCE: PCI: tegra194: Disable interrupt before link status check
BugLink: https://bugs.launchpad.net/bugs/2072591 Data abort is observed due to synchronization issue between irq handler and driver shutdown call. Disable interrupt before link status check to avoid this issue. http://nvbugs/3938884 Signed-off-by: Manikanta Maddireddy <mmaddireddy@nvidia.com> Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-by: Prathamesh Shete <pshete@nvidia.com> Tested-by: Prathamesh Shete <pshete@nvidia.com> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Acked-by: Jacob Martin <jacob.martin@canonical.com> Acked-by: Noah Wager <noah.wager@canonical.com> Signed-off-by: Noah Wager <noah.wager@canonical.com>
This commit is contained in:
committed by
Noah Wager
parent
5192f0241f
commit
d5ea36d92d
@@ -2962,6 +2962,7 @@ static void tegra_pcie_dw_remove(struct platform_device *pdev)
|
||||
#endif
|
||||
|
||||
if (pcie->of_data->mode == DW_PCIE_RC_TYPE) {
|
||||
disable_irq(pcie->prsnt_irq);
|
||||
if (!pcie->link_state)
|
||||
return;
|
||||
|
||||
@@ -3098,17 +3099,15 @@ static void tegra_pcie_dw_shutdown(struct platform_device *pdev)
|
||||
struct tegra_pcie_dw *pcie = platform_get_drvdata(pdev);
|
||||
|
||||
if (pcie->of_data->mode == DW_PCIE_RC_TYPE) {
|
||||
if (!pcie->link_state)
|
||||
return;
|
||||
if (!pm_runtime_enabled(pcie->dev))
|
||||
return;
|
||||
|
||||
debugfs_remove_recursive(pcie->debugfs);
|
||||
disable_irq(pcie->prsnt_irq);
|
||||
disable_irq(pcie->pci.pp.irq);
|
||||
if (IS_ENABLED(CONFIG_PCI_MSI))
|
||||
disable_irq(pcie->pci.pp.msi_irq[0]);
|
||||
|
||||
if (!pcie->link_state)
|
||||
return;
|
||||
if (!pm_runtime_enabled(pcie->dev))
|
||||
return;
|
||||
tegra_pcie_dw_pme_turnoff(pcie);
|
||||
tegra_pcie_unconfig_controller(pcie);
|
||||
pm_runtime_put_sync(pcie->dev);
|
||||
|
||||
Reference in New Issue
Block a user