diff mbox

[2/7] OMAP2xxx clock: fix broken cpu_mask code

Message ID 20090414182327.22344.64686.stgit@localhost.localdomain (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Paul Walmsley April 14, 2009, 6:23 p.m. UTC
Commit 8ad8ff6548f1c0bcbeaa02f274b3927c5015a921 breaks the OMAP2xxx
cpu_mask code, which causes OMAP2xxx to panic on boot.  Fix by
removing the cpu_mask auto variable and by changing CK_242X
and CK_243X to use RATE_IN_242X/RATE_IN_243X.

Resolves

<1>Unable to handle kernel NULL pointer dereference at virtual address 0000000c
<1>pgd = c0004000
<1>[0000000c] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0    Not tainted  (2.6.29-omap1 #32)
PC is at omap2_clk_set_parent+0x104/0x120
LR is at omap2_clk_set_parent+0x28/0x120

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Tested-by: Jarkko Nikula <jarkko.nikula@nokia.com>
Cc: Russell King <linux@arm.linux.org.uk>
---
 arch/arm/mach-omap2/clock24xx.c |   12 +++---------
 1 files changed, 3 insertions(+), 9 deletions(-)



--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Paul Walmsley April 14, 2009, 6:32 p.m. UTC | #1
Modifying subject line since lists.arm.linux.org.uk mail server bounces
subjects containing "xxx".

- Paul

On Tue, 14 Apr 2009, Paul Walmsley wrote:

> Commit 8ad8ff6548f1c0bcbeaa02f274b3927c5015a921 breaks the OMAP2xxx
> cpu_mask code, which causes OMAP2xxx to panic on boot.  Fix by
> removing the cpu_mask auto variable and by changing CK_242X
> and CK_243X to use RATE_IN_242X/RATE_IN_243X.
> 
> Resolves
> 
> <1>Unable to handle kernel NULL pointer dereference at virtual address 0000000c
> <1>pgd = c0004000
> <1>[0000000c] *pgd=00000000
> Internal error: Oops: 5 [#1]
> Modules linked in:
> CPU: 0    Not tainted  (2.6.29-omap1 #32)
> PC is at omap2_clk_set_parent+0x104/0x120
> LR is at omap2_clk_set_parent+0x28/0x120
> 
> Signed-off-by: Paul Walmsley <paul@pwsan.com>
> Tested-by: Jarkko Nikula <jarkko.nikula@nokia.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> ---
>  arch/arm/mach-omap2/clock24xx.c |   12 +++---------
>  1 files changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
> index 3b7ecc6..4306392 100644
> --- a/arch/arm/mach-omap2/clock24xx.c
> +++ b/arch/arm/mach-omap2/clock24xx.c
> @@ -60,8 +60,8 @@ struct omap_clk {
>  		},			\
>  	}
>  
> -#define CK_243X	(1 << 0)
> -#define CK_242X	(1 << 1)
> +#define CK_243X			RATE_IN_243X
> +#define CK_242X			RATE_IN_242X
>  
>  static struct omap_clk omap24xx_clks[] = {
>  	/* external root sources */
> @@ -711,7 +711,7 @@ int __init omap2_clk_init(void)
>  {
>  	struct prcm_config *prcm;
>  	struct omap_clk *c;
> -	u32 clkrate, cpu_mask;
> +	u32 clkrate;
>  
>  	if (cpu_is_omap242x())
>  		cpu_mask = RATE_IN_242X;
> @@ -730,12 +730,6 @@ int __init omap2_clk_init(void)
>  	for (c = omap24xx_clks; c < omap24xx_clks + ARRAY_SIZE(omap24xx_clks); c++)
>  		clk_init_one(c->lk.clk);
>  
> -	cpu_mask = 0;
> -	if (cpu_is_omap2420())
> -		cpu_mask |= CK_242X;
> -	if (cpu_is_omap2430())
> -		cpu_mask |= CK_243X;
> -
>  	for (c = omap24xx_clks; c < omap24xx_clks + ARRAY_SIZE(omap24xx_clks); c++)
>  		if (c->cpu & cpu_mask) {
>  			clkdev_add(&c->lk);
> 
> 


- Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
index 3b7ecc6..4306392 100644
--- a/arch/arm/mach-omap2/clock24xx.c
+++ b/arch/arm/mach-omap2/clock24xx.c
@@ -60,8 +60,8 @@  struct omap_clk {
 		},			\
 	}
 
-#define CK_243X	(1 << 0)
-#define CK_242X	(1 << 1)
+#define CK_243X			RATE_IN_243X
+#define CK_242X			RATE_IN_242X
 
 static struct omap_clk omap24xx_clks[] = {
 	/* external root sources */
@@ -711,7 +711,7 @@  int __init omap2_clk_init(void)
 {
 	struct prcm_config *prcm;
 	struct omap_clk *c;
-	u32 clkrate, cpu_mask;
+	u32 clkrate;
 
 	if (cpu_is_omap242x())
 		cpu_mask = RATE_IN_242X;
@@ -730,12 +730,6 @@  int __init omap2_clk_init(void)
 	for (c = omap24xx_clks; c < omap24xx_clks + ARRAY_SIZE(omap24xx_clks); c++)
 		clk_init_one(c->lk.clk);
 
-	cpu_mask = 0;
-	if (cpu_is_omap2420())
-		cpu_mask |= CK_242X;
-	if (cpu_is_omap2430())
-		cpu_mask |= CK_243X;
-
 	for (c = omap24xx_clks; c < omap24xx_clks + ARRAY_SIZE(omap24xx_clks); c++)
 		if (c->cpu & cpu_mask) {
 			clkdev_add(&c->lk);