From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751314AbcGNFPb (ORCPT ); Thu, 14 Jul 2016 01:15:31 -0400 Received: from relay1.mentorg.com ([192.94.38.131]:59839 "EHLO relay1.mentorg.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751208AbcGNFP3 (ORCPT ); Thu, 14 Jul 2016 01:15:29 -0400 Message-ID: <57871FF3.2030306@mentor.com> Date: Thu, 14 Jul 2016 14:15:31 +0900 From: Jiada Wang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Michael Turquette , , CC: , , Subject: Re: [RFC PATCH v2] clk: move check of CLK_SET_RATE_GATE flag to clk_propagate_rate_change() References: <1468215208-14576-1-git-send-email-jiada_wang@mentor.com> <146836257017.73491.10485892804134671614@resonance> In-Reply-To: <146836257017.73491.10485892804134671614@resonance> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Michael On 07/13/2016 07:29 AM, Michael Turquette wrote: > Quoting jiada_wang@mentor.com (2016-07-10 22:33:28) >> From: Jiada Wang >> >> Previously CLK_SET_RATE_GATE flag is only checked in clk_set_rate() >> which only ensures the clock being called by clk_set_rate() won't >> change rate when it has been prepared if CLK_SET_RATE_GATE flag is set. >> But a clk_set_rate() request may propagate rate change to these clocks >> from the requested clock's topmost parent clock to all its offsprings, >> when any one of these clocks has CLK_SET_RATE_GATE flag set >> and it has been prepared, the clk_set_rate() request should fail. >> >> This patch moves check of CLK_SET_RATE_GATE flag to >> clk_propagate_rate_change() to ensure all affected clocks will >> be checked if their rate will be changed after clk_set_rate(). >> >> Signed-off-by: Jiada Wang >> --- > > What's different in version 2? It's tradition to put a little version > changelog here, below the "---" line and above the "diff --git a/..." > line. > version 2 resolves the following kernel warning " drivers/clk/clk.c: In function 'clk_propagate_rate_change': >> drivers/clk/clk.c:1441:3: warning: return makes pointer from integer without a cast return -EBUSY; ^ " I forgot to add a changelog in v2 patch, sorry for the confusion caused. Thanks, Jiada > Regards, > Mike > >> drivers/clk/clk.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c >> index 820a939..2f930c8 100644 >> --- a/drivers/clk/clk.c >> +++ b/drivers/clk/clk.c >> @@ -1437,6 +1437,9 @@ static struct clk_core *clk_propagate_rate_change(struct clk_core *core, >> if (core->rate == core->new_rate) >> return NULL; >> >> + if ((core->flags & CLK_SET_RATE_GATE) && core->prepare_count) >> + return core; >> + >> if (core->notifier_count) { >> ret = __clk_notify(core, event, core->rate, core->new_rate); >> if (ret & NOTIFY_STOP_MASK) >> @@ -1571,9 +1574,6 @@ static int clk_core_set_rate_nolock(struct clk_core *core, >> if (rate == clk_core_get_rate_nolock(core)) >> return 0; >> >> - if ((core->flags & CLK_SET_RATE_GATE) && core->prepare_count) >> - return -EBUSY; >> - >> /* calculate new rates and get the topmost changed clock */ >> top = clk_calc_new_rates(core, rate); >> if (!top) >> -- >> 1.7.9.5 >> >>