diff mbox

clk: reverse default clk provider initialization order in of_clk_init()

Message ID 1395917012-23483-1-git-send-email-s.nawrocki@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

This restores the default clocks registration order as parsed from
devicetree, i.e. as before commit 1771b10d605d26ccee771a7fb4b08718
"clk: respect the clock dependencies in of_clk_init", for when there
is no explicit parent clock dependencies between clock providers
specified in the device tree.

It prevents regressions (boot failure, division by 0 errors) on
imx and exynos platforms.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
 drivers/clk/clk.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

On 27/03/14 11:43, Sylwester Nawrocki wrote:
> This restores the default clocks registration order as parsed from
> devicetree, i.e. as before commit 1771b10d605d26ccee771a7fb4b08718
> "clk: respect the clock dependencies in of_clk_init", for when there
> is no explicit parent clock dependencies between clock providers
> specified in the device tree.
> 
> It prevents regressions (boot failure, division by 0 errors) on
> imx and exynos platforms.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

Oops, I've forgotten to add:

Tested-by: Fabio Estevam <fabio.estevam@freescale.com>

> ---
>  drivers/clk/clk.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 07cba07..c859adf 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -2596,7 +2596,7 @@ void __init of_clk_init(const struct of_device_id *matches)
>  
>  		parent->clk_init_cb = match->data;
>  		parent->np = np;
> -		list_add(&parent->node, &clk_provider_list);
> +		list_add_tail(&parent->node, &clk_provider_list);
>  	}
>  
>  	while (!list_empty(&clk_provider_list)) {
Mike Turquette March 29, 2014, 8:41 a.m. UTC | #2
Quoting Sylwester Nawrocki (2014-03-27 03:43:32)
> This restores the default clocks registration order as parsed from
> devicetree, i.e. as before commit 1771b10d605d26ccee771a7fb4b08718
> "clk: respect the clock dependencies in of_clk_init", for when there
> is no explicit parent clock dependencies between clock providers
> specified in the device tree.
> 
> It prevents regressions (boot failure, division by 0 errors) on
> imx and exynos platforms.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

I pulled this into clk-next but it didn't seem to get picked up by
linux-next in time for today's build. Let's test the next linux-next to
insure that the regressions are gone. If not then I'll likely need to
drop "clk: respect the clock dependencies in of_clk_init" from clk-next
for 3.15.

Regards,
Mike

> ---
>  drivers/clk/clk.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 07cba07..c859adf 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -2596,7 +2596,7 @@ void __init of_clk_init(const struct of_device_id *matches)
>  
>                 parent->clk_init_cb = match->data;
>                 parent->np = np;
> -               list_add(&parent->node, &clk_provider_list);
> +               list_add_tail(&parent->node, &clk_provider_list);
>         }
>  
>         while (!list_empty(&clk_provider_list)) {
> -- 
> 1.7.9.5
>
Kevin Hilman March 31, 2014, 3 p.m. UTC | #3
Mike Turquette <mturquette@linaro.org> writes:

> Quoting Sylwester Nawrocki (2014-03-27 03:43:32)
>> This restores the default clocks registration order as parsed from
>> devicetree, i.e. as before commit 1771b10d605d26ccee771a7fb4b08718
>> "clk: respect the clock dependencies in of_clk_init", for when there
>> is no explicit parent clock dependencies between clock providers
>> specified in the device tree.
>> 
>> It prevents regressions (boot failure, division by 0 errors) on
>> imx and exynos platforms.
>> 
>> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>
> I pulled this into clk-next but it didn't seem to get picked up by
> linux-next in time for today's build. Let's test the next linux-next to
> insure that the regressions are gone. If not then I'll likely need to
> drop "clk: respect the clock dependencies in of_clk_init" from clk-next
> for 3.15.

It looks like all the boot failures caused by this problem are gone as
of next-20140331[1], so it looks good to me.

Kevin

[1] http://lists.linaro.org/pipermail/kernel-build-reports/2014-March/002988.html
Mike Turquette March 31, 2014, 5:05 p.m. UTC | #4
Quoting Kevin Hilman (2014-03-31 08:00:18)
> Mike Turquette <mturquette@linaro.org> writes:
> 
> > Quoting Sylwester Nawrocki (2014-03-27 03:43:32)
> >> This restores the default clocks registration order as parsed from
> >> devicetree, i.e. as before commit 1771b10d605d26ccee771a7fb4b08718
> >> "clk: respect the clock dependencies in of_clk_init", for when there
> >> is no explicit parent clock dependencies between clock providers
> >> specified in the device tree.
> >> 
> >> It prevents regressions (boot failure, division by 0 errors) on
> >> imx and exynos platforms.
> >> 
> >> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> >
> > I pulled this into clk-next but it didn't seem to get picked up by
> > linux-next in time for today's build. Let's test the next linux-next to
> > insure that the regressions are gone. If not then I'll likely need to
> > drop "clk: respect the clock dependencies in of_clk_init" from clk-next
> > for 3.15.
> 
> It looks like all the boot failures caused by this problem are gone as
> of next-20140331[1], so it looks good to me.

Great, thanks for testing and letting us know!

Regards,
Mike

> 
> Kevin
> 
> [1] http://lists.linaro.org/pipermail/kernel-build-reports/2014-March/002988.html
diff mbox

Patch

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 07cba07..c859adf 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -2596,7 +2596,7 @@  void __init of_clk_init(const struct of_device_id *matches)
 
 		parent->clk_init_cb = match->data;
 		parent->np = np;
-		list_add(&parent->node, &clk_provider_list);
+		list_add_tail(&parent->node, &clk_provider_list);
 	}
 
 	while (!list_empty(&clk_provider_list)) {