* mx6qsabresd hangs on linux-next
@ 2014-05-05 22:50 Fabio Estevam
2014-05-06 14:13 ` Shawn Guo
0 siblings, 1 reply; 13+ messages in thread
From: Fabio Estevam @ 2014-05-05 22:50 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
I am running linux-next 20140505 on a mx6qsabresd and I am getting the
following hang after ldb is bound:
imx-ipuv3 2400000.ipu: IPUv3H probed
imx-ipuv3 2800000.ipu: IPUv3H probed
[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[drm] No driver support for vblank timestamp query.
imx-drm display-subsystem.11: bound imx-ipuv3-crtc.0 (ops ipu_crtc_ops)
imx-drm display-subsystem.11: bound imx-ipuv3-crtc.1 (ops ipu_crtc_ops)
mmc1: new SDHC card at address e7ac
mmcblk0: mmc1:e7ac SD04G 3.69 GiB
imx-drm display-subsystem.11: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops)
mmcblk0: unknown partition table
imx-drm display-subsystem.11: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops)
imx-hdmi 120000.hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1
imx-drm display-subsystem.11: bound 120000.hdmi (ops hdmi_ops)
imx-drm display-subsystem.11: bound ldb.10 (ops imx_ldb_ops)
(... system hangs)
If I built the kernel without LVDS support then it boots fine until the prompt.
Haven't started debugging it yet, but in case anyone has any
suggestions, please let me know.
I have also tested with Shawn's for-next and the problem does not
happen with his tree.
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
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
0 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2014-05-06 14:13 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, May 05, 2014 at 07:50:24PM -0300, Fabio Estevam wrote:
> Hi,
>
> I am running linux-next 20140505 on a mx6qsabresd and I am getting the
> following hang after ldb is bound:
>
> imx-ipuv3 2400000.ipu: IPUv3H probed
> imx-ipuv3 2800000.ipu: IPUv3H probed
> [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
> [drm] No driver support for vblank timestamp query.
> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.0 (ops ipu_crtc_ops)
> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.1 (ops ipu_crtc_ops)
> mmc1: new SDHC card at address e7ac
> mmcblk0: mmc1:e7ac SD04G 3.69 GiB
> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops)
> mmcblk0: unknown partition table
> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops)
> imx-hdmi 120000.hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1
> imx-drm display-subsystem.11: bound 120000.hdmi (ops hdmi_ops)
> imx-drm display-subsystem.11: bound ldb.10 (ops imx_ldb_ops)
>
> (... system hangs)
I'm seeing the same issue here. It seems to be caused by some clk
divider code change. I'm looking into it further.
Shawn
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-06 14:13 ` Shawn Guo
@ 2014-05-06 15:36 ` Fabio Estevam
2014-05-06 15:49 ` Fabio Estevam
0 siblings, 1 reply; 13+ messages in thread
From: Fabio Estevam @ 2014-05-06 15:36 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 6, 2014 at 11:13 AM, Shawn Guo <shawn.guo@freescale.com> wrote:
> On Mon, May 05, 2014 at 07:50:24PM -0300, Fabio Estevam wrote:
>> Hi,
>>
>> I am running linux-next 20140505 on a mx6qsabresd and I am getting the
>> following hang after ldb is bound:
>>
>> imx-ipuv3 2400000.ipu: IPUv3H probed
>> imx-ipuv3 2800000.ipu: IPUv3H probed
>> [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
>> [drm] No driver support for vblank timestamp query.
>> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.0 (ops ipu_crtc_ops)
>> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.1 (ops ipu_crtc_ops)
>> mmc1: new SDHC card at address e7ac
>> mmcblk0: mmc1:e7ac SD04G 3.69 GiB
>> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops)
>> mmcblk0: unknown partition table
>> imx-drm display-subsystem.11: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops)
>> imx-hdmi 120000.hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1
>> imx-drm display-subsystem.11: bound 120000.hdmi (ops hdmi_ops)
>> imx-drm display-subsystem.11: bound ldb.10 (ops imx_ldb_ops)
>>
>> (... system hangs)
>
> I'm seeing the same issue here. It seems to be caused by some clk
> divider code change. I'm looking into it further.
Indeed, if I revert:
commit e7489693b3a853ab6dfad52f7e6af553ae8d3f28
Author: Maxime COQUELIN <maxime.coquelin@st.com>
Date: Wed Jan 29 17:24:08 2014 +0100
clk: divider: Optimize clk_divider_bestdiv loop
Currently, the for-loop used to try all the different dividers to find the
one that best fit tries all the values from 1 to max_div,
incrementing by one.
In case of power-of-two, or table based divider, the loop isn't optimal.
Instead of incrementing by one, this patch provides directly the
next divider.
Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
Then the board does not hang.
Maxime, Mike
Any suggestion?
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-06 15:36 ` Fabio Estevam
@ 2014-05-06 15:49 ` Fabio Estevam
2014-05-06 16:04 ` Maxime Coquelin
0 siblings, 1 reply; 13+ messages in thread
From: Fabio Estevam @ 2014-05-06 15:49 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 6, 2014 at 12:36 PM, Fabio Estevam <festevam@gmail.com> wrote:
> Indeed, if I revert:
>
> commit e7489693b3a853ab6dfad52f7e6af553ae8d3f28
> Author: Maxime COQUELIN <maxime.coquelin@st.com>
> Date: Wed Jan 29 17:24:08 2014 +0100
>
> clk: divider: Optimize clk_divider_bestdiv loop
>
> Currently, the for-loop used to try all the different dividers to find the
> one that best fit tries all the values from 1 to max_div,
> incrementing by one.
> In case of power-of-two, or table based divider, the loop isn't optimal.
>
> Instead of incrementing by one, this patch provides directly the
> next divider.
>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
> Signed-off-by: Mike Turquette <mturquette@linaro.org>
>
> Then the board does not hang.
Isn't the increment of i missing?
--- a/drivers/clk/clk-divider.c
+++ b/drivers/clk/clk-divider.c
@@ -279,7 +279,7 @@ static int clk_divider_bestdiv(struct clk_hw *hw,
unsigned long rate,
*/
maxdiv = min(ULONG_MAX / rate, maxdiv);
- for (i = 1; i <= maxdiv; i = _next_div(divider, i)) {
+ for (i = 1; i <= maxdiv; i +=_next_div(divider, i)) {
if (!_is_valid_div(divider, i))
continue;
if (rate * i == parent_rate_saved) {
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
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
0 siblings, 2 replies; 13+ messages in thread
From: Maxime Coquelin @ 2014-05-06 16:04 UTC (permalink / raw)
To: linux-arm-kernel
Hi Fabio,
On 05/06/2014 05:49 PM, Fabio Estevam wrote:
> On Tue, May 6, 2014 at 12:36 PM, Fabio Estevam <festevam@gmail.com> wrote:
>
>> Indeed, if I revert:
>>
>> commit e7489693b3a853ab6dfad52f7e6af553ae8d3f28
>> Author: Maxime COQUELIN <maxime.coquelin@st.com>
>> Date: Wed Jan 29 17:24:08 2014 +0100
>>
>> clk: divider: Optimize clk_divider_bestdiv loop
>>
>> Currently, the for-loop used to try all the different dividers to find the
>> one that best fit tries all the values from 1 to max_div,
>> incrementing by one.
>> In case of power-of-two, or table based divider, the loop isn't optimal.
>>
>> Instead of incrementing by one, this patch provides directly the
>> next divider.
>>
>> Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
>> Signed-off-by: Mike Turquette <mturquette@linaro.org>
>>
>> Then the board does not hang.
>
> Isn't the increment of i missing?
i is incremented in _next_div():
+static int _next_div(struct clk_divider *divider, int div)
+{
+ div++;
+
+ if (divider->flags & CLK_DIVIDER_POWER_OF_TWO)
+ return __roundup_pow_of_two(div);
+ if (divider->table)
+ return _round_up_table(divider->table, div);
+
+ return div;
+}
Could you tell me which kind of divider it is? pow2, table, linear?
>
> --- a/drivers/clk/clk-divider.c
> +++ b/drivers/clk/clk-divider.c
> @@ -279,7 +279,7 @@ static int clk_divider_bestdiv(struct clk_hw *hw,
> unsigned long rate,
> */
> maxdiv = min(ULONG_MAX / rate, maxdiv);
>
> - for (i = 1; i <= maxdiv; i = _next_div(divider, i)) {
> + for (i = 1; i <= maxdiv; i +=_next_div(divider, i)) {
This would break power-of-two, and table based dividers.
> if (!_is_valid_div(divider, i))
> continue;
> if (rate * i == parent_rate_saved) {
>
Regards,
Maxime
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-06 16:04 ` Maxime Coquelin
@ 2014-05-06 16:17 ` Fabio Estevam
2014-05-06 20:00 ` Sascha Hauer
1 sibling, 0 replies; 13+ messages in thread
From: Fabio Estevam @ 2014-05-06 16:17 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 6, 2014 at 1:04 PM, Maxime Coquelin <maxime.coquelin@st.com> wrote:
> i is incremented in _next_div():
Yes, I see it now.
> +static int _next_div(struct clk_divider *divider, int div)
> +{
> + div++;
> +
> + if (divider->flags & CLK_DIVIDER_POWER_OF_TWO)
> + return __roundup_pow_of_two(div);
> + if (divider->table)
> + return _round_up_table(divider->table, div);
> +
> + return div;
> +}
>
> Could you tell me which kind of divider it is? pow2, table, linear?
table divider.
Regards,
Fabio Estevam
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
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
1 sibling, 1 reply; 13+ messages in thread
From: Sascha Hauer @ 2014-05-06 20:00 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 06, 2014 at 06:04:45PM +0200, Maxime Coquelin wrote:
> Hi Fabio,
>
> On 05/06/2014 05:49 PM, Fabio Estevam wrote:
> >On Tue, May 6, 2014 at 12:36 PM, Fabio Estevam <festevam@gmail.com> wrote:
> >
> >>Indeed, if I revert:
> >>
> >>commit e7489693b3a853ab6dfad52f7e6af553ae8d3f28
> >>Author: Maxime COQUELIN <maxime.coquelin@st.com>
> >>Date: Wed Jan 29 17:24:08 2014 +0100
> >>
> >> clk: divider: Optimize clk_divider_bestdiv loop
> >>
> >> Currently, the for-loop used to try all the different dividers to find the
> >> one that best fit tries all the values from 1 to max_div,
> >>incrementing by one.
> >> In case of power-of-two, or table based divider, the loop isn't optimal.
> >>
> >> Instead of incrementing by one, this patch provides directly the
> >>next divider.
> >>
> >> Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
> >> Signed-off-by: Mike Turquette <mturquette@linaro.org>
> >>
> >>Then the board does not hang.
> >
> >Isn't the increment of i missing?
>
> i is incremented in _next_div():
>
> +static int _next_div(struct clk_divider *divider, int div)
> +{
> + div++;
> +
> + if (divider->flags & CLK_DIVIDER_POWER_OF_TWO)
> + return __roundup_pow_of_two(div);
> + if (divider->table)
> + return _round_up_table(divider->table, div);
> +
> + return div;
> +}
This cannot work. _round_up_table is implemented like this:
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);
for (clkt = table; clkt->div; clkt++) {
if (clkt->div == div)
return clkt->div;
...
}
...
}
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)) {
...
}
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-06 20:00 ` Sascha Hauer
@ 2014-05-07 2:09 ` Shawn Guo
2014-05-07 3:32 ` Shawn Guo
2014-05-07 6:15 ` Sascha Hauer
0 siblings, 2 replies; 13+ messages in thread
From: Shawn Guo @ 2014-05-07 2:09 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, May 06, 2014 at 10:00:29PM +0200, Sascha Hauer wrote:
> On Tue, May 06, 2014 at 06:04:45PM +0200, Maxime Coquelin wrote:
> > Hi Fabio,
> >
> > On 05/06/2014 05:49 PM, Fabio Estevam wrote:
> > >On Tue, May 6, 2014 at 12:36 PM, Fabio Estevam <festevam@gmail.com> wrote:
> > >
> > >>Indeed, if I revert:
> > >>
> > >>commit e7489693b3a853ab6dfad52f7e6af553ae8d3f28
> > >>Author: Maxime COQUELIN <maxime.coquelin@st.com>
> > >>Date: Wed Jan 29 17:24:08 2014 +0100
> > >>
> > >> clk: divider: Optimize clk_divider_bestdiv loop
> > >>
> > >> Currently, the for-loop used to try all the different dividers to find the
> > >> one that best fit tries all the values from 1 to max_div,
> > >>incrementing by one.
> > >> In case of power-of-two, or table based divider, the loop isn't optimal.
> > >>
> > >> Instead of incrementing by one, this patch provides directly the
> > >>next divider.
> > >>
> > >> Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
> > >> Signed-off-by: Mike Turquette <mturquette@linaro.org>
> > >>
> > >>Then the board does not hang.
> > >
> > >Isn't the increment of i missing?
> >
> > i is incremented in _next_div():
> >
> > +static int _next_div(struct clk_divider *divider, int div)
> > +{
> > + div++;
> > +
> > + if (divider->flags & CLK_DIVIDER_POWER_OF_TWO)
> > + return __roundup_pow_of_two(div);
> > + if (divider->table)
> > + return _round_up_table(divider->table, div);
> > +
> > + return div;
> > +}
>
> This cannot work. _round_up_table is implemented like this:
>
> 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);
>
> for (clkt = table; clkt->div; clkt++) {
> if (clkt->div == div)
> return clkt->div;
> ...
> }
> ...
> }
>
> 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?
Shawn
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-07 2:09 ` Shawn Guo
@ 2014-05-07 3:32 ` Shawn Guo
2014-05-07 8:32 ` Maxime Coquelin
2014-05-07 6:15 ` Sascha Hauer
1 sibling, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2014-05-07 3:32 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, May 07, 2014 at 10:09:51AM +0800, Shawn Guo wrote:
> On Tue, May 06, 2014 at 10:00:29PM +0200, Sascha Hauer wrote:
> > On Tue, May 06, 2014 at 06:04:45PM +0200, Maxime Coquelin wrote:
> > > Hi Fabio,
> > >
> > > On 05/06/2014 05:49 PM, Fabio Estevam wrote:
> > > >On Tue, May 6, 2014 at 12:36 PM, Fabio Estevam <festevam@gmail.com> wrote:
> > > >
> > > >>Indeed, if I revert:
> > > >>
> > > >>commit e7489693b3a853ab6dfad52f7e6af553ae8d3f28
> > > >>Author: Maxime COQUELIN <maxime.coquelin@st.com>
> > > >>Date: Wed Jan 29 17:24:08 2014 +0100
> > > >>
> > > >> clk: divider: Optimize clk_divider_bestdiv loop
> > > >>
> > > >> Currently, the for-loop used to try all the different dividers to find the
> > > >> one that best fit tries all the values from 1 to max_div,
> > > >>incrementing by one.
> > > >> In case of power-of-two, or table based divider, the loop isn't optimal.
> > > >>
> > > >> Instead of incrementing by one, this patch provides directly the
> > > >>next divider.
> > > >>
> > > >> Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
> > > >> Signed-off-by: Mike Turquette <mturquette@linaro.org>
> > > >>
> > > >>Then the board does not hang.
> > > >
> > > >Isn't the increment of i missing?
> > >
> > > i is incremented in _next_div():
> > >
> > > +static int _next_div(struct clk_divider *divider, int div)
> > > +{
> > > + div++;
> > > +
> > > + if (divider->flags & CLK_DIVIDER_POWER_OF_TWO)
> > > + return __roundup_pow_of_two(div);
> > > + if (divider->table)
> > > + return _round_up_table(divider->table, div);
> > > +
> > > + return div;
> > > +}
> >
> > This cannot work. _round_up_table is implemented like this:
> >
> > 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);
> >
> > for (clkt = table; clkt->div; clkt++) {
> > if (clkt->div == div)
> > return clkt->div;
> > ...
> > }
> > ...
> > }
> >
> > 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.
Shawn
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-07 2:09 ` Shawn Guo
2014-05-07 3:32 ` Shawn Guo
@ 2014-05-07 6:15 ` Sascha Hauer
1 sibling, 0 replies; 13+ messages in thread
From: Sascha Hauer @ 2014-05-07 6:15 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, May 07, 2014 at 10:09:51AM +0800, 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?
Sorry, yes. You're right.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-07 3:32 ` Shawn Guo
@ 2014-05-07 8:32 ` Maxime Coquelin
2014-05-07 14:39 ` Fabio Estevam
0 siblings, 1 reply; 13+ messages in thread
From: Maxime Coquelin @ 2014-05-07 8:32 UTC (permalink / raw)
To: linux-arm-kernel
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)
^ permalink raw reply related [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-07 8:32 ` Maxime Coquelin
@ 2014-05-07 14:39 ` Fabio Estevam
2014-05-07 16:54 ` Maxime Coquelin
0 siblings, 1 reply; 13+ messages in thread
From: Fabio Estevam @ 2014-05-07 14:39 UTC (permalink / raw)
To: linux-arm-kernel
Hi Maxime,
On Wed, May 7, 2014 at 5:32 AM, Maxime Coquelin <maxime.coquelin@st.com> wrote:
> 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)?
This works fine for me:
Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
> 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.
Please submit your patch, thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
* mx6qsabresd hangs on linux-next
2014-05-07 14:39 ` Fabio Estevam
@ 2014-05-07 16:54 ` Maxime Coquelin
0 siblings, 0 replies; 13+ messages in thread
From: Maxime Coquelin @ 2014-05-07 16:54 UTC (permalink / raw)
To: linux-arm-kernel
Hi Fabio,
On 05/07/2014 04:39 PM, Fabio Estevam wrote:
> Hi Maxime,
>
> On Wed, May 7, 2014 at 5:32 AM, Maxime Coquelin <maxime.coquelin@st.com> wrote:
>
>> 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)?
>
> This works fine for me:
>
> Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
>
>> 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.
>
> Please submit your patch, thanks.
Thanks for testing it, patch sent.
Regards,
Maxime
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2014-05-07 16:54 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2014-05-07 14:39 ` Fabio Estevam
2014-05-07 16:54 ` Maxime Coquelin
2014-05-07 6:15 ` Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).