All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Guenter Roeck <linux@roeck-us.net>,
	Jerome Brunet <jbrunet@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Sasha Levin <sashal@kernel.org>,
	linux-clk@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 06/32] clk: Don't try to enable critical clocks if prepare failed
Date: Fri, 24 Jan 2020 09:20:53 -0500	[thread overview]
Message-ID: <20200124142119.30484-6-sashal@kernel.org> (raw)
In-Reply-To: <20200124142119.30484-1-sashal@kernel.org>

From: Guenter Roeck <linux@roeck-us.net>

[ Upstream commit 12ead77432f2ce32dea797742316d15c5800cb32 ]

The following traceback is seen if a critical clock fails to prepare.

bcm2835-clk 3f101000.cprman: plld: couldn't lock PLL
------------[ cut here ]------------
Enabling unprepared plld_per
WARNING: CPU: 1 PID: 1 at drivers/clk/clk.c:1014 clk_core_enable+0xcc/0x2c0
...
Call trace:
 clk_core_enable+0xcc/0x2c0
 __clk_register+0x5c4/0x788
 devm_clk_hw_register+0x4c/0xb0
 bcm2835_register_pll_divider+0xc0/0x150
 bcm2835_clk_probe+0x134/0x1e8
 platform_drv_probe+0x50/0xa0
 really_probe+0xd4/0x308
 driver_probe_device+0x54/0xe8
 device_driver_attach+0x6c/0x78
 __driver_attach+0x54/0xd8
...

Check return values from clk_core_prepare() and clk_core_enable() and
bail out if any of those functions returns an error.

Cc: Jerome Brunet <jbrunet@baylibre.com>
Fixes: 99652a469df1 ("clk: migrate the count of orphaned clocks at init")
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lkml.kernel.org/r/20191225163429.29694-1-linux@roeck-us.net
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/clk/clk.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index a3f52f6782115..8341a128dab1d 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -2482,11 +2482,17 @@ static int __clk_core_init(struct clk_core *core)
 	if (core->flags & CLK_IS_CRITICAL) {
 		unsigned long flags;
 
-		clk_core_prepare(core);
+		ret = clk_core_prepare(core);
+		if (ret)
+			goto out;
 
 		flags = clk_enable_lock();
-		clk_core_enable(core);
+		ret = clk_core_enable(core);
 		clk_enable_unlock(flags);
+		if (ret) {
+			clk_core_unprepare(core);
+			goto out;
+		}
 	}
 
 	/*
-- 
2.20.1


  parent reply	other threads:[~2020-01-24 14:21 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-24 14:20 [PATCH AUTOSEL 4.14 01/32] batman-adv: Fix DAT candidate selection on little endian systems Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 02/32] dt-bindings: reset: meson8b: fix duplicate reset IDs Sasha Levin
2020-01-24 14:20   ` Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 03/32] ARM: dts: sun8i: a83t: Correct USB3503 GPIOs polarity Sasha Levin
2020-01-24 14:20   ` Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 04/32] ARM: dts: beagle-x15-common: Model 5V0 regulator Sasha Levin
2020-01-24 14:20   ` Sasha Levin
2020-01-24 14:20   ` Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 05/32] soc: ti: wkup_m3_ipc: Fix race condition with rproc_boot Sasha Levin
2020-01-24 14:20   ` Sasha Levin
2020-01-24 14:20 ` Sasha Levin [this message]
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 07/32] mac80211: mesh: restrict airtime metric to peered established plinks Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 08/32] clk: mmp2: Fix the order of timer mux parents Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 09/32] ixgbevf: Remove limit of 10 entries for unicast filter list Sasha Levin
2020-01-24 14:20   ` [Intel-wired-lan] " Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 10/32] ixgbe: Fix calculation of queue with VFs and flow director on interface flap Sasha Levin
2020-01-24 14:20   ` [Intel-wired-lan] " Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 11/32] igb: Fix SGMII SFP module discovery for 100FX/LX Sasha Levin
2020-01-24 14:20   ` [Intel-wired-lan] " Sasha Levin
2020-01-24 14:20 ` [PATCH AUTOSEL 4.14 12/32] ASoC: msm8916-wcd-analog: Fix selected events for MIC BIAS External1 Sasha Levin
2020-01-24 14:20   ` [alsa-devel] " Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 13/32] ASoC: sti: fix possible sleep-in-atomic Sasha Levin
2020-01-24 14:21   ` [alsa-devel] " Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 14/32] netfilter: fix a use-after-free in mtype_destroy() Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 15/32] netfilter: arp_tables: init netns pointer in xt_tgdtor_param struct Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 16/32] qmi_wwan: Add support for Quectel RM500Q Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 17/32] NFC: pn533: fix bulk-message timeout Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 18/32] ptp: free ptp device pin descriptors properly Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 19/32] net: usb: lan78xx: limit size of local TSO packets Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 20/32] r8152: add missing endpoint sanity check Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 21/32] wireless: fix enabling channel 12 for custom regulatory domain Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 22/32] cfg80211: Fix radar event during another phy CAC Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 23/32] mac80211: Fix TKIP replay protection immediately after key setup Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 24/32] wireless: wext: avoid gcc -O3 warning Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 25/32] cfg80211: check for set_wiphy_params Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 26/32] tick/sched: Annotate lockless access to last_jiffies_update Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 27/32] hv_netvsc: Fix memory leak when removing rndis device Sasha Levin
2020-01-24 14:21   ` Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 28/32] net/wan/fsl_ucc_hdlc: fix out of bounds write on array utdm_info Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 29/32] scsi: mptfusion: Fix double fetch bug in ioctl Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 30/32] net: hns: fix soft lockup when there is not enough memory Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 31/32] net: dsa: bcm_sf2: Configure IMP port for 2Gb/sec Sasha Levin
2020-01-24 14:21 ` [PATCH AUTOSEL 4.14 32/32] bnxt_en: Fix ipv6 RFS filter matching logic 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=20200124142119.30484-6-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=jbrunet@baylibre.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=sboyd@kernel.org \
    --cc=stable@vger.kernel.org \
    /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: link
Be 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.