From: maxime.coquelin@st.com (Maxime Coquelin)
To: linux-arm-kernel@lists.infradead.org
Subject: mx6qsabresd hangs on linux-next
Date: Wed, 7 May 2014 10:32:35 +0200 [thread overview]
Message-ID: <5369EFA3.8070908@st.com> (raw)
In-Reply-To: <20140507033223.GB2798@dragon>
Hi Shawn,
On 05/07/2014 05:32 AM, Shawn Guo wrote:
...
>>>
>>> Here when a table entry matches the input div this function will return
>>> exactly the input div. This means _next_div() will always return the
>>> same value and clk_divider_bestdiv() has an infinite loop:
>>>
>>> for (i = 1; i <= maxdiv; i = _next_div(divider, i)) {
>>> ...
>>> }
>>
>> Hmmm, isn't the first thing that _next_div() does to increment the input
>> div?
>
> I think the infinite loop happens in this case because "i" will never
> exceed maxdiv for a table divider.
You are right. Sorry for the regression.
I thought I tested it, as I had some table-based dividers in my test setup.
After checking again, it appears that I didn't had the
CLK_SET_RATE_PARENT flag set on these clocks, so I didn't entered the
for loop...
Could the fix be to initialize "up" variable to INT_MAX in
_round_up_table (see below)?
I can send the patch if you are fine with it.
I have no hardware to test on this week, I only have compiled this
patch, not tested it.
Thanks,
Maxime
>
> Shawn
>
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
index b3c8396..cf9114a 100644
--- a/drivers/clk/clk-divider.c
+++ b/drivers/clk/clk-divider.c
@@ -158,7 +158,7 @@ static bool _is_valid_div(struct clk_divider
*divider, unsigned int div)
static int _round_up_table(const struct clk_div_table *table, int div)
{
const struct clk_div_table *clkt;
- int up = _get_table_maxdiv(table);
+ int up = INT_MAX;
for (clkt = table; clkt->div; clkt++) {
if (clkt->div == div)
next prev parent reply other threads:[~2014-05-07 8:32 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-05 22:50 mx6qsabresd hangs on linux-next Fabio Estevam
2014-05-06 14:13 ` Shawn Guo
2014-05-06 15:36 ` Fabio Estevam
2014-05-06 15:49 ` Fabio Estevam
2014-05-06 16:04 ` Maxime Coquelin
2014-05-06 16:17 ` Fabio Estevam
2014-05-06 20:00 ` Sascha Hauer
2014-05-07 2:09 ` Shawn Guo
2014-05-07 3:32 ` Shawn Guo
2014-05-07 8:32 ` Maxime Coquelin [this message]
2014-05-07 14:39 ` Fabio Estevam
2014-05-07 16:54 ` Maxime Coquelin
2014-05-07 6:15 ` Sascha Hauer
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=5369EFA3.8070908@st.com \
--to=maxime.coquelin@st.com \
--cc=linux-arm-kernel@lists.infradead.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.