Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'remotes/lorenzo/pci/runtime-pm'

- Fix runtime power management imbalance for cadence, dra7xx, qcom, rcar
(Dinghao Liu)

* remotes/lorenzo/pci/runtime-pm:
PCI: rcar: Fix runtime PM imbalance on error
PCI: qcom: Fix runtime PM imbalance on error
PCI: cadence: Fix runtime PM imbalance on error
PCI: dwc: pci-dra7xx: Fix runtime PM imbalance on error

+5 -11
+1 -2
drivers/pci/controller/cadence/pcie-cadence-plat.c
··· 128 128 } 129 129 130 130 err_init: 131 - pm_runtime_put_sync(dev); 132 - 133 131 err_get_sync: 132 + pm_runtime_put_sync(dev); 134 133 pm_runtime_disable(dev); 135 134 cdns_pcie_disable_phy(cdns_plat_pcie->pcie); 136 135 phy_count = cdns_plat_pcie->pcie->phy_count;
+1 -2
drivers/pci/controller/dwc/pci-dra7xx.c
··· 995 995 return 0; 996 996 997 997 err_gpio: 998 - pm_runtime_put(dev); 999 - 1000 998 err_get_sync: 999 + pm_runtime_put(dev); 1001 1000 pm_runtime_disable(dev); 1002 1001 dra7xx_pcie_disable_phy(dra7xx); 1003 1002
+2 -4
drivers/pci/controller/dwc/pcie-qcom.c
··· 1382 1382 1383 1383 pm_runtime_enable(dev); 1384 1384 ret = pm_runtime_get_sync(dev); 1385 - if (ret < 0) { 1386 - pm_runtime_disable(dev); 1387 - return ret; 1388 - } 1385 + if (ret < 0) 1386 + goto err_pm_runtime_put; 1389 1387 1390 1388 pci->dev = dev; 1391 1389 pci->ops = &dw_pcie_ops;
+1 -3
drivers/pci/controller/pcie-rcar-host.c
··· 986 986 err = pm_runtime_get_sync(pcie->dev); 987 987 if (err < 0) { 988 988 dev_err(pcie->dev, "pm_runtime_get_sync failed\n"); 989 - goto err_pm_disable; 989 + goto err_pm_put; 990 990 } 991 991 992 992 err = rcar_pcie_get_resources(host); ··· 1057 1057 1058 1058 err_pm_put: 1059 1059 pm_runtime_put(dev); 1060 - 1061 - err_pm_disable: 1062 1060 pm_runtime_disable(dev); 1063 1061 pci_free_resource_list(&host->resources); 1064 1062