From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Thierry Reding <treding@nvidia.com>, Heiko Stuebner <heiko@sntech.de>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Andrew Murray <andrew.murray@arm.com>, Shawn Lin <shawn.lin@rock-chips.com>, linux-rockchip@lists.infradead.org, Sasha Levin <sashal@kernel.org>, linux-pci@vger.kernel.org Subject: [PATCH AUTOSEL 4.19 17/33] PCI: rockchip: Propagate errors for optional regulators Date: Sun, 29 Sep 2019 13:34:05 -0400 [thread overview] Message-ID: <20190929173424.9361-17-sashal@kernel.org> (raw) In-Reply-To: <20190929173424.9361-1-sashal@kernel.org> From: Thierry Reding <treding@nvidia.com> [ Upstream commit 0e3ff0ac5f71bdb6be2a698de0ed0c7e6e738269 ] regulator_get_optional() can fail for a number of reasons besides probe deferral. It can for example return -ENOMEM if it runs out of memory as it tries to allocate data structures. Propagating only -EPROBE_DEFER is problematic because it results in these legitimately fatal errors being treated as "regulator not specified in DT". What we really want is to ignore the optional regulators only if they have not been specified in DT. regulator_get_optional() returns -ENODEV in this case, so that's the special case that we need to handle. So we propagate all errors, except -ENODEV, so that real failures will still cause the driver to fail probe. Tested-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Andrew Murray <andrew.murray@arm.com> Reviewed-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Shawn Lin <shawn.lin@rock-chips.com> Cc: Shawn Lin <shawn.lin@rock-chips.com> Cc: Heiko Stuebner <heiko@sntech.de> Cc: linux-rockchip@lists.infradead.org Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/pci/controller/pcie-rockchip-host.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c index 1372d270764f9..5ce8e63756875 100644 --- a/drivers/pci/controller/pcie-rockchip-host.c +++ b/drivers/pci/controller/pcie-rockchip-host.c @@ -608,29 +608,29 @@ static int rockchip_pcie_parse_host_dt(struct rockchip_pcie *rockchip) rockchip->vpcie12v = devm_regulator_get_optional(dev, "vpcie12v"); if (IS_ERR(rockchip->vpcie12v)) { - if (PTR_ERR(rockchip->vpcie12v) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie12v) != -ENODEV) + return PTR_ERR(rockchip->vpcie12v); dev_info(dev, "no vpcie12v regulator found\n"); } rockchip->vpcie3v3 = devm_regulator_get_optional(dev, "vpcie3v3"); if (IS_ERR(rockchip->vpcie3v3)) { - if (PTR_ERR(rockchip->vpcie3v3) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie3v3) != -ENODEV) + return PTR_ERR(rockchip->vpcie3v3); dev_info(dev, "no vpcie3v3 regulator found\n"); } rockchip->vpcie1v8 = devm_regulator_get_optional(dev, "vpcie1v8"); if (IS_ERR(rockchip->vpcie1v8)) { - if (PTR_ERR(rockchip->vpcie1v8) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie1v8) != -ENODEV) + return PTR_ERR(rockchip->vpcie1v8); dev_info(dev, "no vpcie1v8 regulator found\n"); } rockchip->vpcie0v9 = devm_regulator_get_optional(dev, "vpcie0v9"); if (IS_ERR(rockchip->vpcie0v9)) { - if (PTR_ERR(rockchip->vpcie0v9) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie0v9) != -ENODEV) + return PTR_ERR(rockchip->vpcie0v9); dev_info(dev, "no vpcie0v9 regulator found\n"); } -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Sasha Levin <sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Lorenzo Pieralisi <lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>, Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Andrew Murray <andrew.murray-5wv7dgnIgG8@public.gmane.org>, Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Subject: [PATCH AUTOSEL 4.19 17/33] PCI: rockchip: Propagate errors for optional regulators Date: Sun, 29 Sep 2019 13:34:05 -0400 [thread overview] Message-ID: <20190929173424.9361-17-sashal@kernel.org> (raw) In-Reply-To: <20190929173424.9361-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> From: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> [ Upstream commit 0e3ff0ac5f71bdb6be2a698de0ed0c7e6e738269 ] regulator_get_optional() can fail for a number of reasons besides probe deferral. It can for example return -ENOMEM if it runs out of memory as it tries to allocate data structures. Propagating only -EPROBE_DEFER is problematic because it results in these legitimately fatal errors being treated as "regulator not specified in DT". What we really want is to ignore the optional regulators only if they have not been specified in DT. regulator_get_optional() returns -ENODEV in this case, so that's the special case that we need to handle. So we propagate all errors, except -ENODEV, so that real failures will still cause the driver to fail probe. Tested-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> Signed-off-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org> Reviewed-by: Andrew Murray <andrew.murray-5wv7dgnIgG8@public.gmane.org> Reviewed-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> Acked-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> Cc: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org> Cc: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> Cc: linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Signed-off-by: Sasha Levin <sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> --- drivers/pci/controller/pcie-rockchip-host.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c index 1372d270764f9..5ce8e63756875 100644 --- a/drivers/pci/controller/pcie-rockchip-host.c +++ b/drivers/pci/controller/pcie-rockchip-host.c @@ -608,29 +608,29 @@ static int rockchip_pcie_parse_host_dt(struct rockchip_pcie *rockchip) rockchip->vpcie12v = devm_regulator_get_optional(dev, "vpcie12v"); if (IS_ERR(rockchip->vpcie12v)) { - if (PTR_ERR(rockchip->vpcie12v) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie12v) != -ENODEV) + return PTR_ERR(rockchip->vpcie12v); dev_info(dev, "no vpcie12v regulator found\n"); } rockchip->vpcie3v3 = devm_regulator_get_optional(dev, "vpcie3v3"); if (IS_ERR(rockchip->vpcie3v3)) { - if (PTR_ERR(rockchip->vpcie3v3) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie3v3) != -ENODEV) + return PTR_ERR(rockchip->vpcie3v3); dev_info(dev, "no vpcie3v3 regulator found\n"); } rockchip->vpcie1v8 = devm_regulator_get_optional(dev, "vpcie1v8"); if (IS_ERR(rockchip->vpcie1v8)) { - if (PTR_ERR(rockchip->vpcie1v8) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie1v8) != -ENODEV) + return PTR_ERR(rockchip->vpcie1v8); dev_info(dev, "no vpcie1v8 regulator found\n"); } rockchip->vpcie0v9 = devm_regulator_get_optional(dev, "vpcie0v9"); if (IS_ERR(rockchip->vpcie0v9)) { - if (PTR_ERR(rockchip->vpcie0v9) == -EPROBE_DEFER) - return -EPROBE_DEFER; + if (PTR_ERR(rockchip->vpcie0v9) != -ENODEV) + return PTR_ERR(rockchip->vpcie0v9); dev_info(dev, "no vpcie0v9 regulator found\n"); } -- 2.20.1
next prev parent reply other threads:[~2019-09-29 17:39 UTC|newest] Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-29 17:33 [PATCH AUTOSEL 4.19 01/33] MIPS: Ingenic: Disable broken BTB lookup optimization Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 02/33] clk: jz4740: Add TCU clock Sasha Levin 2019-09-29 17:33 ` Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 03/33] MIPS: tlbex: Explicitly cast _PAGE_NO_EXEC to a boolean Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 04/33] i2c-cht-wc: Fix lockdep warning Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 05/33] mfd: intel-lpss: Remove D3cold delay Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 06/33] PCI: tegra: Fix OF node reference leak Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 07/33] HID: wacom: Fix several minor compiler warnings Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 08/33] livepatch: Nullify obj->mod in klp_module_coming()'s error path Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 09/33] ARM: 8898/1: mm: Don't treat faults reported from cache maintenance as writes Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 10/33] soundwire: intel: fix channel number reported by hardware Sasha Levin 2019-09-29 17:33 ` [PATCH AUTOSEL 4.19 11/33] ARM: 8875/1: Kconfig: default to AEABI w/ Clang Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 12/33] MIPS: lantiq: update the clock alias' for the mainline PCIe PHY driver Sasha Levin 2019-09-29 17:40 ` Martin Blumenstingl 2019-10-05 23:01 ` Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 13/33] firmware: bcm47xx_nvram: Correct size_t printf format Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 14/33] rtc: snvs: fix possible race condition Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 15/33] rtc: pcf85363/pcf85263: fix regmap error in set_time Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 16/33] HID: apple: Fix stuck function keys when using FN Sasha Levin 2019-09-29 17:34 ` Sasha Levin [this message] 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 17/33] PCI: rockchip: Propagate errors for optional regulators Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 18/33] PCI: histb: " Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 19/33] PCI: imx6: " Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 20/33] PCI: exynos: Propagate errors for optional PHYs Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 21/33] security: smack: Fix possible null-pointer dereferences in smack_socket_sock_rcv_skb() Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 22/33] ARM: 8903/1: ensure that usable memory in bank 0 starts from a PMD-aligned address Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 23/33] fat: work around race with userspace's read via blockdev while mounting Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 24/33] pktcdvd: remove warning on attempting to register non-passthrough dev Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 25/33] hypfs: Fix error number left in struct pointer member Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 26/33] crypto: hisilicon - Fix double free in sec_free_hw_sgl() Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 27/33] kbuild: clean compressed initramfs image Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 28/33] ocfs2: wait for recovering done after direct unlock request Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 29/33] kmemleak: increase DEBUG_KMEMLEAK_EARLY_LOG_SIZE default to 16K Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 30/33] arm64: consider stack randomization for mmap base only when necessary Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 31/33] mips: properly account for stack randomization and stack guard gap Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 32/33] arm: " Sasha Levin 2019-09-29 17:34 ` [PATCH AUTOSEL 4.19 33/33] arm: use STACK_TOP when computing mmap base address Sasha Levin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190929173424.9361-17-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=andrew.murray@arm.com \ --cc=heiko@sntech.de \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=shawn.lin@rock-chips.com \ --cc=stable@vger.kernel.org \ --cc=treding@nvidia.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.