public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash.
@ 2009-08-22  8:00 Santosh Shilimkar
  2009-08-22  8:00 ` [PATCH 2/2 v2] ARM: OMAP4: Bypass the clock check Santosh Shilimkar
  2009-08-23 19:56 ` [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Kevin Hilman
  0 siblings, 2 replies; 7+ messages in thread
From: Santosh Shilimkar @ 2009-08-22  8:00 UTC (permalink / raw)
  To: tony, khilman, rmk
  Cc: linux-arm-kernel, linux-arm-kernel, linux-omap, Santosh Shilimkar,
	Syed Rafiuddin

After the patch series "[PATCH 00/14] OMAP PM fixes for .31-rc"
merge in 2.6.31-rc5, the kernel crashed during boot on OMAP4430.
This patch fixes it by adding UART4 support and related code.
Without this patch omap_serial_init() would produce " NULL pointer
dereference" and kernel crashes in the bootup on OMAP4430 platform.

Some more info on the merge issue can be found here.
More info- http://lkml.org/lkml/2009/8/20/192

Note: While merging this patch,"IO_ADDRESS" needs to be changed
to "OMAP2_IO_ADDRESS" if the Tony's below series is already merged in.
http://www.mail-archive.com/linux-omap@vger.kernel.org/msg15072.html

Signed-off-by: Syed Rafiuddin <rafiuddin.syed@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
---
 arch/arm/mach-omap2/board-4430sdp.c |    2 +-
 arch/arm/mach-omap2/serial.c        |   27 ++++++++++++++++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index b0c7402..1b22307 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -39,7 +39,7 @@ static struct platform_device *sdp4430_devices[] __initdata = {
 };
 
 static struct omap_uart_config sdp4430_uart_config __initdata = {
-	.enabled_uarts	= (1 << 0) | (1 << 1) | (1 << 2),
+	.enabled_uarts	= (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3),
 };
 
 static struct omap_lcd_config sdp4430_lcd_config __initdata = {
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index a7421a5..e1be77b 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -112,7 +112,21 @@ static struct plat_serial8250_port serial_platform_data2[] = {
 		.flags		= 0
 	}
 };
-
+#ifdef CONFIG_ARCH_OMAP4
+static struct plat_serial8250_port serial_platform_data3[] = {
+	{
+		.membase	= IO_ADDRESS(OMAP_UART4_BASE),
+		.mapbase	= OMAP_UART4_BASE,
+		.irq		= 70,
+		.flags		= UPF_BOOT_AUTOCONF,
+		.iotype		= UPIO_MEM,
+		.regshift	= 2,
+		.uartclk	= OMAP24XX_BASE_BAUD * 16,
+	}, {
+		.flags		= 0
+	}
+};
+#endif
 static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
 					   int offset)
 {
@@ -550,6 +564,17 @@ static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = {
 			},
 		},
 	},
+#ifdef CONFIG_ARCH_OMAP4
+	{
+		.pdev = {
+			.name			= "serial8250",
+			.id			= PLAT8250_DEV_FOURPORT,
+			.dev			= {
+				.platform_data	= serial_platform_data3,
+			},
+		},
+	},
+#endif
 };
 
 void __init omap_serial_init(void)
-- 
1.5.4.7


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2 v2] ARM: OMAP4: Bypass the clock check.
  2009-08-22  8:00 [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Santosh Shilimkar
@ 2009-08-22  8:00 ` Santosh Shilimkar
  2009-08-23 19:56 ` [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Kevin Hilman
  1 sibling, 0 replies; 7+ messages in thread
From: Santosh Shilimkar @ 2009-08-22  8:00 UTC (permalink / raw)
  To: tony, khilman, rmk
  Cc: linux-arm-kernel, linux-arm-kernel, linux-omap, Santosh Shilimkar,
	Syed Rafiuddin

Second reason of OMAP4 boot failure on 2.6.31.rc6, the UART
platform data is not getting registered to kernel.
Registration was failing because of clock check failure in
omap_serial_init().
Below patch fix the same.

OMAP4 clock framework patches are still getting discussed on mailing
list so till then we need this.

Signed-off-by: Syed Rafiuddin <rafiuddin.syed@ti.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
---
 arch/arm/mach-omap2/serial.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index e1be77b..6bbdfe0 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -620,8 +620,11 @@ void __init omap_serial_init(void)
 			uart->fck = NULL;
 		}
 
-		if (!uart->ick || !uart->fck)
-			continue;
+		/* FIXME: Remove this once the clkdev is ready */
+		if (!cpu_is_omap44xx()) {
+			if (!uart->ick || !uart->fck)
+				continue;
+		}
 
 		uart->num = i;
 		p->private_data = uart;
-- 
1.5.4.7


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash.
  2009-08-22  8:00 [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Santosh Shilimkar
  2009-08-22  8:00 ` [PATCH 2/2 v2] ARM: OMAP4: Bypass the clock check Santosh Shilimkar
@ 2009-08-23 19:56 ` Kevin Hilman
  2009-08-24 11:49   ` Kevin Hilman
  2009-09-18 11:51   ` Russell King
  1 sibling, 2 replies; 7+ messages in thread
From: Kevin Hilman @ 2009-08-23 19:56 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: tony, rmk, linux-arm-kernel, linux-arm-kernel, linux-omap,
	Syed Rafiuddin

Santosh Shilimkar <santosh.shilimkar@ti.com> writes:

> After the patch series "[PATCH 00/14] OMAP PM fixes for .31-rc"
> merge in 2.6.31-rc5, the kernel crashed during boot on OMAP4430.
> This patch fixes it by adding UART4 support and related code.
> Without this patch omap_serial_init() would produce " NULL pointer
> dereference" and kernel crashes in the bootup on OMAP4430 platform.
>
> Some more info on the merge issue can be found here.
> More info- http://lkml.org/lkml/2009/8/20/192
>
> Note: While merging this patch,"IO_ADDRESS" needs to be changed
> to "OMAP2_IO_ADDRESS" if the Tony's below series is already merged in.
> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg15072.html
>
> Signed-off-by: Syed Rafiuddin <rafiuddin.syed@ti.com>
> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> Acked-by: Tony Lindgren <tony@atomide.com>
> Acked-by: Kevin Hilman <khilman@deeprootsystems.com>

One other problem, after looking at the Zoom2 UART stuff...

> ---
>  arch/arm/mach-omap2/board-4430sdp.c |    2 +-
>  arch/arm/mach-omap2/serial.c        |   27 ++++++++++++++++++++++++++-
>  2 files changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
> index b0c7402..1b22307 100644
> --- a/arch/arm/mach-omap2/board-4430sdp.c
> +++ b/arch/arm/mach-omap2/board-4430sdp.c
> @@ -39,7 +39,7 @@ static struct platform_device *sdp4430_devices[] __initdata = {
>  };
>  
>  static struct omap_uart_config sdp4430_uart_config __initdata = {
> -	.enabled_uarts	= (1 << 0) | (1 << 1) | (1 << 2),
> +	.enabled_uarts	= (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3),
>  };
>  
>  static struct omap_lcd_config sdp4430_lcd_config __initdata = {
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index a7421a5..e1be77b 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -112,7 +112,21 @@ static struct plat_serial8250_port serial_platform_data2[] = {
>  		.flags		= 0
>  	}
>  };
> -
> +#ifdef CONFIG_ARCH_OMAP4
> +static struct plat_serial8250_port serial_platform_data3[] = {
> +	{
> +		.membase	= IO_ADDRESS(OMAP_UART4_BASE),
> +		.mapbase	= OMAP_UART4_BASE,
> +		.irq		= 70,
> +		.flags		= UPF_BOOT_AUTOCONF,
> +		.iotype		= UPIO_MEM,
> +		.regshift	= 2,
> +		.uartclk	= OMAP24XX_BASE_BAUD * 16,
> +	}, {
> +		.flags		= 0
> +	}
> +};
> +#endif
>  static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
>  					   int offset)
>  {
> @@ -550,6 +564,17 @@ static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = {
>  			},
>  		},
>  	},
> +#ifdef CONFIG_ARCH_OMAP4
> +	{
> +		.pdev = {
> +			.name			= "serial8250",
> +			.id			= PLAT8250_DEV_FOURPORT,

This should not be FOURPORT, it should just be a number.  In this case,
it should be 3 (the others start from zero.)

The Zoom2 one should then be changed to something >= 4.

Kevin

> +			.dev			= {
> +				.platform_data	= serial_platform_data3,
> +			},
> +		},
> +	},
> +#endif
>  };
>  
>  void __init omap_serial_init(void)
> -- 
> 1.5.4.7


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash.
  2009-08-23 19:56 ` [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Kevin Hilman
@ 2009-08-24 11:49   ` Kevin Hilman
  2009-08-24 12:26     ` Shilimkar, Santosh
  2009-09-18 11:51   ` Russell King
  1 sibling, 1 reply; 7+ messages in thread
From: Kevin Hilman @ 2009-08-24 11:49 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: tony, rmk, linux-arm-kernel, linux-arm-kernel, linux-omap,
	Syed Rafiuddin

Kevin Hilman <khilman@deeprootsystems.com> writes:

> Santosh Shilimkar <santosh.shilimkar@ti.com> writes:
>
>> After the patch series "[PATCH 00/14] OMAP PM fixes for .31-rc"
>> merge in 2.6.31-rc5, the kernel crashed during boot on OMAP4430.
>> This patch fixes it by adding UART4 support and related code.
>> Without this patch omap_serial_init() would produce " NULL pointer
>> dereference" and kernel crashes in the bootup on OMAP4430 platform.
>>
>> Some more info on the merge issue can be found here.
>> More info- http://lkml.org/lkml/2009/8/20/192
>>
>> Note: While merging this patch,"IO_ADDRESS" needs to be changed
>> to "OMAP2_IO_ADDRESS" if the Tony's below series is already merged in.
>> http://www.mail-archive.com/linux-omap@vger.kernel.org/msg15072.html
>>
>> Signed-off-by: Syed Rafiuddin <rafiuddin.syed@ti.com>
>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> Acked-by: Tony Lindgren <tony@atomide.com>
>> Acked-by: Kevin Hilman <khilman@deeprootsystems.com>
>
> One other problem, after looking at the Zoom2 UART stuff...
>
>> ---
>>  arch/arm/mach-omap2/board-4430sdp.c |    2 +-
>>  arch/arm/mach-omap2/serial.c        |   27 ++++++++++++++++++++++++++-
>>  2 files changed, 27 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
>> index b0c7402..1b22307 100644
>> --- a/arch/arm/mach-omap2/board-4430sdp.c
>> +++ b/arch/arm/mach-omap2/board-4430sdp.c
>> @@ -39,7 +39,7 @@ static struct platform_device *sdp4430_devices[] __initdata = {
>>  };
>>  
>>  static struct omap_uart_config sdp4430_uart_config __initdata = {
>> -	.enabled_uarts	= (1 << 0) | (1 << 1) | (1 << 2),
>> +	.enabled_uarts	= (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3),
>>  };
>>  
>>  static struct omap_lcd_config sdp4430_lcd_config __initdata = {
>> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
>> index a7421a5..e1be77b 100644
>> --- a/arch/arm/mach-omap2/serial.c
>> +++ b/arch/arm/mach-omap2/serial.c
>> @@ -112,7 +112,21 @@ static struct plat_serial8250_port serial_platform_data2[] = {
>>  		.flags		= 0
>>  	}
>>  };
>> -
>> +#ifdef CONFIG_ARCH_OMAP4
>> +static struct plat_serial8250_port serial_platform_data3[] = {
>> +	{
>> +		.membase	= IO_ADDRESS(OMAP_UART4_BASE),
>> +		.mapbase	= OMAP_UART4_BASE,
>> +		.irq		= 70,
>> +		.flags		= UPF_BOOT_AUTOCONF,
>> +		.iotype		= UPIO_MEM,
>> +		.regshift	= 2,
>> +		.uartclk	= OMAP24XX_BASE_BAUD * 16,
>> +	}, {
>> +		.flags		= 0
>> +	}
>> +};
>> +#endif
>>  static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
>>  					   int offset)
>>  {
>> @@ -550,6 +564,17 @@ static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = {
>>  			},
>>  		},
>>  	},
>> +#ifdef CONFIG_ARCH_OMAP4
>> +	{
>> +		.pdev = {
>> +			.name			= "serial8250",
>> +			.id			= PLAT8250_DEV_FOURPORT,
>
> This should not be FOURPORT, it should just be a number.  In this case,
> it should be 3 (the others start from zero.)

Santosh,

I've changed the .id field to '3' and will queue up this fix for the
next merge window along with my fixes queue[1].  Please let me know if you
want to do otherwise.

Kevin

[1] My fixes queue for the next window is the pm-upstream/fixes-32 branch
    which is based on Tony's for-next branch.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash.
  2009-08-24 11:49   ` Kevin Hilman
@ 2009-08-24 12:26     ` Shilimkar, Santosh
  2009-08-24 12:39       ` Kevin Hilman
  0 siblings, 1 reply; 7+ messages in thread
From: Shilimkar, Santosh @ 2009-08-24 12:26 UTC (permalink / raw)
  To: Kevin Hilman
  Cc: tony@atomide.com, rmk@arm.linux.org.uk,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-kernel@lists.arm.linux.org.uk,
	linux-omap@vger.kernel.org, Syed, Rafiuddin

> >>  static inline unsigned int serial_read_reg(struct plat_serial8250_port
> *up,
> >>  					   int offset)
> >>  {
> >> @@ -550,6 +564,17 @@ static struct omap_uart_state
> omap_uart[OMAP_MAX_NR_PORTS] = {
> >>  			},
> >>  		},
> >>  	},
> >> +#ifdef CONFIG_ARCH_OMAP4
> >> +	{
> >> +		.pdev = {
> >> +			.name			= "serial8250",
> >> +			.id			= PLAT8250_DEV_FOURPORT,
> >
> > This should not be FOURPORT, it should just be a number.  In this case,
> > it should be 3 (the others start from zero.)
> 
> Santosh,
> 
> I've changed the .id field to '3' and will queue up this fix for the
> next merge window along with my fixes queue[1].  Please let me know if you
> want to do otherwise.

This is fine Kevin. Thanks !!

Bye the way I have also posted v3 version in which I changed the .id field to 3.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash.
  2009-08-24 12:26     ` Shilimkar, Santosh
@ 2009-08-24 12:39       ` Kevin Hilman
  0 siblings, 0 replies; 7+ messages in thread
From: Kevin Hilman @ 2009-08-24 12:39 UTC (permalink / raw)
  To: Shilimkar, Santosh
  Cc: tony@atomide.com, rmk@arm.linux.org.uk,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-kernel@lists.arm.linux.org.uk,
	linux-omap@vger.kernel.org, Syed, Rafiuddin

"Shilimkar, Santosh" <santosh.shilimkar@ti.com> writes:

>> >>  static inline unsigned int serial_read_reg(struct plat_serial8250_port
>> *up,
>> >>  					   int offset)
>> >>  {
>> >> @@ -550,6 +564,17 @@ static struct omap_uart_state
>> omap_uart[OMAP_MAX_NR_PORTS] = {
>> >>  			},
>> >>  		},
>> >>  	},
>> >> +#ifdef CONFIG_ARCH_OMAP4
>> >> +	{
>> >> +		.pdev = {
>> >> +			.name			= "serial8250",
>> >> +			.id			= PLAT8250_DEV_FOURPORT,
>> >
>> > This should not be FOURPORT, it should just be a number.  In this case,
>> > it should be 3 (the others start from zero.)
>> 
>> Santosh,
>> 
>> I've changed the .id field to '3' and will queue up this fix for the
>> next merge window along with my fixes queue[1].  Please let me know if you
>> want to do otherwise.
>
> This is fine Kevin. Thanks !!
>
> Bye the way I have also posted v3 version in which I changed the .id field to 3.

Yeah, saw that after I replied.  Thanks!

Kevin



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash.
  2009-08-23 19:56 ` [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Kevin Hilman
  2009-08-24 11:49   ` Kevin Hilman
@ 2009-09-18 11:51   ` Russell King
  1 sibling, 0 replies; 7+ messages in thread
From: Russell King @ 2009-09-18 11:51 UTC (permalink / raw)
  To: Kevin Hilman
  Cc: Santosh Shilimkar, tony, linux-arm-kernel, linux-arm-kernel,
	linux-omap, Syed Rafiuddin

On Sun, Aug 23, 2009 at 10:56:14PM +0300, Kevin Hilman wrote:
> This should not be FOURPORT, it should just be a number.  In this case,
> it should be 3 (the others start from zero.)
> 
> The Zoom2 one should then be changed to something >= 4.

No it should not.  There's an enum to control the numbering of these.
Use that.

-- 
Russell King
 Linux kernel    2.6 ARM Linux   - http://www.arm.linux.org.uk/
 maintainer of:

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-09-18 11:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-22  8:00 [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Santosh Shilimkar
2009-08-22  8:00 ` [PATCH 2/2 v2] ARM: OMAP4: Bypass the clock check Santosh Shilimkar
2009-08-23 19:56 ` [PATCH 1/2 v2] ARM: OMAP4: Fix NULL pointer dereference crash Kevin Hilman
2009-08-24 11:49   ` Kevin Hilman
2009-08-24 12:26     ` Shilimkar, Santosh
2009-08-24 12:39       ` Kevin Hilman
2009-09-18 11:51   ` Russell King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox