diff mbox

clk: nomadik: fix multiplatform problem

Message ID 1390291581-5858-1-git-send-email-linus.walleij@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Linus Walleij Jan. 21, 2014, 8:06 a.m. UTC
The Nomadik debugfs screws up multiplatform boots if debugfs
is enabled on the multiplatform image, since it's a simple
initcall that is unconditionally executed and reads from certain
memory locations.

Fix this by checking that the driver has been properly
initialized, so a base offset to the Nomadik SRC controller
exists, before proceeding to register debugfs files.

Reported-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/clk/clk-nomadik.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Andrew Lunn Jan. 21, 2014, 10:52 a.m. UTC | #1
On Tue, Jan 21, 2014 at 09:06:21AM +0100, Linus Walleij wrote:
> The Nomadik debugfs screws up multiplatform boots if debugfs
> is enabled on the multiplatform image, since it's a simple
> initcall that is unconditionally executed and reads from certain
> memory locations.
> 
> Fix this by checking that the driver has been properly
> initialized, so a base offset to the Nomadik SRC controller
> exists, before proceeding to register debugfs files.
> 
> Reported-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Hi Linus

Thanks for fixing this so quick. I tested on my kirkwood, no longer
crashes.

Tested-by: Andrew Lunn <andrew@lunn.ch>

Thanks
	Andrew

> ---
>  drivers/clk/clk-nomadik.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/clk/clk-nomadik.c b/drivers/clk/clk-nomadik.c
> index 6a934a5296bd..05e04ce0f148 100644
> --- a/drivers/clk/clk-nomadik.c
> +++ b/drivers/clk/clk-nomadik.c
> @@ -494,6 +494,9 @@ static const struct file_operations nomadik_src_clk_debugfs_ops = {
>  
>  static int __init nomadik_src_clk_init_debugfs(void)
>  {
> +	/* Vital for multiplatform */
> +	if (!src_base)
> +		return -ENODEV;
>  	src_pcksr0_boot = readl(src_base + SRC_PCKSR0);
>  	src_pcksr1_boot = readl(src_base + SRC_PCKSR1);
>  	debugfs_create_file("nomadik-src-clk", S_IFREG | S_IRUGO,
> -- 
> 1.8.4.2
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Linus Walleij Jan. 29, 2014, 8:07 a.m. UTC | #2
On Tue, Jan 21, 2014 at 9:06 AM, Linus Walleij <linus.walleij@linaro.org> wrote:

> The Nomadik debugfs screws up multiplatform boots if debugfs
> is enabled on the multiplatform image, since it's a simple
> initcall that is unconditionally executed and reads from certain
> memory locations.
>
> Fix this by checking that the driver has been properly
> initialized, so a base offset to the Nomadik SRC controller
> exists, before proceeding to register debugfs files.
>
> Reported-by: Andrew Lunn <andrew@lunn.ch>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Ping Mike, pls pick this for fixes!

Yours,
Linus Walleij
Linus Walleij Feb. 25, 2014, 9:35 p.m. UTC | #3
On Wed, Jan 29, 2014 at 9:07 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Tue, Jan 21, 2014 at 9:06 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
>
>> The Nomadik debugfs screws up multiplatform boots if debugfs
>> is enabled on the multiplatform image, since it's a simple
>> initcall that is unconditionally executed and reads from certain
>> memory locations.
>>
>> Fix this by checking that the driver has been properly
>> initialized, so a base offset to the Nomadik SRC controller
>> exists, before proceeding to register debugfs files.
>>
>> Reported-by: Andrew Lunn <andrew@lunn.ch>
>> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
>
> Ping Mike, pls pick this for fixes!

Ping Mike, this needs to go into fixes!

ARM SoC folks: Mike seems to be busy, maybe you can pick
this patch into the ARM SoC tree instead?

Yours,
Linus Walleij
Mike Turquette Feb. 26, 2014, 8:38 a.m. UTC | #4
Quoting Linus Walleij (2014-02-25 13:35:37)
> On Wed, Jan 29, 2014 at 9:07 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> > On Tue, Jan 21, 2014 at 9:06 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> >
> >> The Nomadik debugfs screws up multiplatform boots if debugfs
> >> is enabled on the multiplatform image, since it's a simple
> >> initcall that is unconditionally executed and reads from certain
> >> memory locations.
> >>
> >> Fix this by checking that the driver has been properly
> >> initialized, so a base offset to the Nomadik SRC controller
> >> exists, before proceeding to register debugfs files.
> >>
> >> Reported-by: Andrew Lunn <andrew@lunn.ch>
> >> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> >
> > Ping Mike, pls pick this for fixes!
> 
> Ping Mike, this needs to go into fixes!

Taken into clk-fixes for the next batch.

Thanks!
Mike

> 
> ARM SoC folks: Mike seems to be busy, maybe you can pick
> this patch into the ARM SoC tree instead?
> 
> Yours,
> Linus Walleij
diff mbox

Patch

diff --git a/drivers/clk/clk-nomadik.c b/drivers/clk/clk-nomadik.c
index 6a934a5296bd..05e04ce0f148 100644
--- a/drivers/clk/clk-nomadik.c
+++ b/drivers/clk/clk-nomadik.c
@@ -494,6 +494,9 @@  static const struct file_operations nomadik_src_clk_debugfs_ops = {
 
 static int __init nomadik_src_clk_init_debugfs(void)
 {
+	/* Vital for multiplatform */
+	if (!src_base)
+		return -ENODEV;
 	src_pcksr0_boot = readl(src_base + SRC_PCKSR0);
 	src_pcksr1_boot = readl(src_base + SRC_PCKSR1);
 	debugfs_create_file("nomadik-src-clk", S_IFREG | S_IRUGO,