From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751347AbdIOJcC (ORCPT ); Fri, 15 Sep 2017 05:32:02 -0400 Received: from hqemgate14.nvidia.com ([216.228.121.143]:8657 "EHLO hqemgate14.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751135AbdIOJb5 (ORCPT ); Fri, 15 Sep 2017 05:31:57 -0400 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Fri, 15 Sep 2017 02:31:49 -0700 Date: Fri, 15 Sep 2017 12:31:45 +0300 From: Peter De Schrijver To: Nicolin Chen CC: , , , , , , , Subject: Re: [PATCH] clk: tegra: Use readl_relaxed_poll_timeout_atomic in tegra210_clock_init Message-ID: <20170915093145.GD6290@tbergstrom-lnx.Nvidia.com> References: <1505439374-8666-1-git-send-email-nicoleotsuka@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1505439374-8666-1-git-send-email-nicoleotsuka@gmail.com> X-NVConfidentiality: public User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [10.21.24.170] X-ClientProxiedBy: UKMAIL101.nvidia.com (10.26.138.13) To UKMAIL101.nvidia.com (10.26.138.13) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Apart from the typo in the commit message (preemption rather than preemtion): Acked-By: Peter De Schrijver On Thu, Sep 14, 2017 at 06:36:14PM -0700, Nicolin Chen wrote: > Below is the call trace of tegra210_init_pllu() function: > start_kernel() > -> time_init() > --> of_clk_init() > ---> tegra210_clock_init() > ----> tegra210_pll_init() > -----> tegra210_init_pllu() > > Because the preemtion is disabled in the start_kernel before calling > time_init, tegra210_init_pllu is actually in an atomic context while > it includes a readl_relaxed_poll_timeout that might sleep. > > So this patch just changes this readl_relaxed_poll_timeout() to its > atomic version. > > Signed-off-by: Nicolin Chen > --- > drivers/clk/tegra/clk-tegra210.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/tegra/clk-tegra210.c b/drivers/clk/tegra/clk-tegra210.c > index 0b9789a..ea695c4 100644 > --- a/drivers/clk/tegra/clk-tegra210.c > +++ b/drivers/clk/tegra/clk-tegra210.c > @@ -2587,8 +2587,8 @@ static int tegra210_enable_pllu(void) > reg |= PLL_ENABLE; > writel(reg, clk_base + PLLU_BASE); > > - readl_relaxed_poll_timeout(clk_base + PLLU_BASE, reg, > - reg & PLL_BASE_LOCK, 2, 1000); > + readl_relaxed_poll_timeout_atomic(clk_base + PLLU_BASE, reg, > + reg & PLL_BASE_LOCK, 2, 1000); > if (!(reg & PLL_BASE_LOCK)) { > pr_err("Timed out waiting for PLL_U to lock\n"); > return -ETIMEDOUT; > -- > 2.1.4 >