From 70db3155404b9915ee5eee568c33c919c6e2a280 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 7 Nov 2019 19:08:57 -0500 Subject: [PATCH] fixes for 5.3 Signed-off-by: Sasha Levin --- ...form-fix-regulator_get_optional-misu.patch | 121 ------------------ queue-5.3/series | 1 - 2 files changed, 122 deletions(-) delete mode 100644 queue-5.3/ata-libahci_platform-fix-regulator_get_optional-misu.patch diff --git a/queue-5.3/ata-libahci_platform-fix-regulator_get_optional-misu.patch b/queue-5.3/ata-libahci_platform-fix-regulator_get_optional-misu.patch deleted file mode 100644 index 5d2054bc68f..00000000000 --- a/queue-5.3/ata-libahci_platform-fix-regulator_get_optional-misu.patch +++ /dev/null @@ -1,121 +0,0 @@ -From aaf306c5945100fc0f02ad0aa877c499a92f83d4 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 16 Oct 2019 11:51:05 +0100 -Subject: ata: libahci_platform: Fix regulator_get_optional() misuse - -From: Mark Brown - -[ Upstream commit 962399bb7fbf5ce0c5b768ca7115614f31ff8f3f ] - -This driver is using regulator_get_optional() to handle all the supplies -that it handles, and only ever enables and disables all supplies en masse -without ever doing any other configuration of the device to handle missing -power. These are clear signs that the API is being misused - it should only -be used for supplies that may be physically absent from the system and in -these cases the hardware usually needs different configuration if the -supply is missing. Instead use normal regualtor_get(), if the supply is -not described in DT then the framework will substitute a dummy regulator in -so no special handling is needed by the consumer driver. - -In the case of the PHY regulator the handling in the driver is a hack to -deal with integrated PHYs; the supplies are only optional in the sense -that that there's some confusion in the code about where they're bound to. -From a code point of view they function exactly as normal supplies so can -be treated as such. It'd probably be better to model this by instantiating -a PHY object for integrated PHYs. - -Reviewed-by: Hans de Goede -Signed-off-by: Mark Brown -Signed-off-by: Jens Axboe -Signed-off-by: Sasha Levin ---- - drivers/ata/libahci_platform.c | 38 +++++++++++++--------------------- - 1 file changed, 14 insertions(+), 24 deletions(-) - -diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c -index 9e9583a6bba99..57882b3e46eb4 100644 ---- a/drivers/ata/libahci_platform.c -+++ b/drivers/ata/libahci_platform.c -@@ -153,17 +153,13 @@ int ahci_platform_enable_regulators(struct ahci_host_priv *hpriv) - { - int rc, i; - -- if (hpriv->ahci_regulator) { -- rc = regulator_enable(hpriv->ahci_regulator); -- if (rc) -- return rc; -- } -+ rc = regulator_enable(hpriv->ahci_regulator); -+ if (rc) -+ return rc; - -- if (hpriv->phy_regulator) { -- rc = regulator_enable(hpriv->phy_regulator); -- if (rc) -- goto disable_ahci_pwrs; -- } -+ rc = regulator_enable(hpriv->phy_regulator); -+ if (rc) -+ goto disable_ahci_pwrs; - - for (i = 0; i < hpriv->nports; i++) { - if (!hpriv->target_pwrs[i]) -@@ -181,11 +177,9 @@ int ahci_platform_enable_regulators(struct ahci_host_priv *hpriv) - if (hpriv->target_pwrs[i]) - regulator_disable(hpriv->target_pwrs[i]); - -- if (hpriv->phy_regulator) -- regulator_disable(hpriv->phy_regulator); -+ regulator_disable(hpriv->phy_regulator); - disable_ahci_pwrs: -- if (hpriv->ahci_regulator) -- regulator_disable(hpriv->ahci_regulator); -+ regulator_disable(hpriv->ahci_regulator); - return rc; - } - EXPORT_SYMBOL_GPL(ahci_platform_enable_regulators); -@@ -207,10 +201,8 @@ void ahci_platform_disable_regulators(struct ahci_host_priv *hpriv) - regulator_disable(hpriv->target_pwrs[i]); - } - -- if (hpriv->ahci_regulator) -- regulator_disable(hpriv->ahci_regulator); -- if (hpriv->phy_regulator) -- regulator_disable(hpriv->phy_regulator); -+ regulator_disable(hpriv->ahci_regulator); -+ regulator_disable(hpriv->phy_regulator); - } - EXPORT_SYMBOL_GPL(ahci_platform_disable_regulators); - /** -@@ -359,7 +351,7 @@ static int ahci_platform_get_regulator(struct ahci_host_priv *hpriv, u32 port, - struct regulator *target_pwr; - int rc = 0; - -- target_pwr = regulator_get_optional(dev, "target"); -+ target_pwr = regulator_get(dev, "target"); - - if (!IS_ERR(target_pwr)) - hpriv->target_pwrs[port] = target_pwr; -@@ -436,16 +428,14 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev, - hpriv->clks[i] = clk; - } - -- hpriv->ahci_regulator = devm_regulator_get_optional(dev, "ahci"); -+ hpriv->ahci_regulator = devm_regulator_get(dev, "ahci"); - if (IS_ERR(hpriv->ahci_regulator)) { - rc = PTR_ERR(hpriv->ahci_regulator); -- if (rc == -EPROBE_DEFER) -+ if (rc != 0) - goto err_out; -- rc = 0; -- hpriv->ahci_regulator = NULL; - } - -- hpriv->phy_regulator = devm_regulator_get_optional(dev, "phy"); -+ hpriv->phy_regulator = devm_regulator_get(dev, "phy"); - if (IS_ERR(hpriv->phy_regulator)) { - rc = PTR_ERR(hpriv->phy_regulator); - if (rc == -EPROBE_DEFER) --- -2.20.1 - diff --git a/queue-5.3/series b/queue-5.3/series index f3c4928658a..0f2243ce1f7 100644 --- a/queue-5.3/series +++ b/queue-5.3/series @@ -76,7 +76,6 @@ cifs-fix-cifsinodeinfo-lock_sem-deadlock-when-reconn.patch irqchip-sifive-plic-skip-contexts-except-supervisor-.patch nbd-protect-cmd-status-with-cmd-lock.patch nbd-handle-racing-with-error-ed-out-commands.patch -ata-libahci_platform-fix-regulator_get_optional-misu.patch cxgb4-fix-panic-when-attaching-to-uld-fail.patch cxgb4-request-the-tx-cidx-updates-to-status-page.patch dccp-do-not-leak-jiffies-on-the-wire.patch -- 2.47.2