stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH stable/v4.0] ARM: OMAP3: Fix booting with thumb2 kernel
@ 2015-07-10 15:28 Kevin Hilman
  2015-07-30 20:27 ` Kevin Hilman
  0 siblings, 1 reply; 3+ messages in thread
From: Kevin Hilman @ 2015-07-10 15:28 UTC (permalink / raw)
  To: stable; +Cc: Tony Lindgren, linux-omap, Kevin Hilman

From: Tony Lindgren <tony@atomide.com>

We get a NULL pointer dereference on omap3 for thumb2 compiled kernels:

Internal error: Oops: 80000005 [#1] SMP THUMB2
...
[<c046497b>] (_raw_spin_unlock_irqrestore) from [<c0024375>]
(omap3_enter_idle_bm+0xc5/0x178)
[<c0024375>] (omap3_enter_idle_bm) from [<c0374e63>]
(cpuidle_enter_state+0x77/0x27c)
[<c0374e63>] (cpuidle_enter_state) from [<c00627f1>]
(cpu_startup_entry+0x155/0x23c)
[<c00627f1>] (cpu_startup_entry) from [<c06b9a47>]
(start_kernel+0x32f/0x338)
[<c06b9a47>] (start_kernel) from [<8000807f>] (0x8000807f)

The power management related assembly on omaps needs to interact with
ARM mode bootrom code, so we need to keep most of the related assembly
in ARM mode.

Turns out this error is because of missing ENDPROC for assembly code
as suggested by Stephen Boyd <sboyd@codeaurora.org>. Let's fix the
problem by adding ENDPROC in two places to sleep34xx.S.

Let's also remove the now duplicate custom code for mode switching.
This has been unnecessary since commit 6ebbf2ce437b ("ARM: convert
all "mov.* pc, reg" to "bx reg" for ARMv6+").

And let's also remove the comments about local variables, they are
now just confusing after the ENDPROC.

The reason why ENDPROC makes a difference is it sets .type and then
the compiler knows what to do with the thumb bit as explained at:

https://wiki.ubuntu.com/ARM/Thumb2PortingHowto

Reported-by: Kevin Hilman <khilman@kernel.org>
Tested-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
(cherry picked from commit d8a50941c91a68da202aaa96a3dacd471ea9c693)
Cc: <stable@vger.kernel.org> # v4.0+
Signed-off-by: Kevin Hilman <khilman@linaro.org>
---
 arch/arm/mach-omap2/sleep34xx.S | 22 ++--------------------
 1 file changed, 2 insertions(+), 20 deletions(-)

diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
index d1dedc8195ed..eafd120b53f1 100644
--- a/arch/arm/mach-omap2/sleep34xx.S
+++ b/arch/arm/mach-omap2/sleep34xx.S
@@ -203,23 +203,8 @@ save_context_wfi:
 	 */
 	ldr	r1, kernel_flush
 	blx	r1
-	/*
-	 * The kernel doesn't interwork: v7_flush_dcache_all in particluar will
-	 * always return in Thumb state when CONFIG_THUMB2_KERNEL is enabled.
-	 * This sequence switches back to ARM.  Note that .align may insert a
-	 * nop: bx pc needs to be word-aligned in order to work.
-	 */
- THUMB(	.thumb		)
- THUMB(	.align		)
- THUMB(	bx	pc	)
- THUMB(	nop		)
-	.arm
-
 	b	omap3_do_wfi
-
-/*
- * Local variables
- */
+ENDPROC(omap34xx_cpu_suspend)
 omap3_do_wfi_sram_addr:
 	.word omap3_do_wfi_sram
 kernel_flush:
@@ -364,10 +349,7 @@ exit_nonoff_modes:
  * ===================================
  */
 	ldmfd	sp!, {r4 - r11, pc}	@ restore regs and return
-
-/*
- * Local variables
- */
+ENDPROC(omap3_do_wfi)
 sdrc_power:
 	.word	SDRC_POWER_V
 cm_idlest1_core:
-- 
2.4.5


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

* Re: [PATCH stable/v4.0] ARM: OMAP3: Fix booting with thumb2 kernel
  2015-07-10 15:28 [PATCH stable/v4.0] ARM: OMAP3: Fix booting with thumb2 kernel Kevin Hilman
@ 2015-07-30 20:27 ` Kevin Hilman
  2015-07-30 20:43   ` Greg Kroah-Hartman
  0 siblings, 1 reply; 3+ messages in thread
From: Kevin Hilman @ 2015-07-30 20:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: stable, Tony Lindgren, linux-omap, Kevin Hilman

Hi Greg,

On Fri, Jul 10, 2015 at 10:28 AM, Kevin Hilman <khilman@kernel.org> wrote:
> From: Tony Lindgren <tony@atomide.com>
>
> We get a NULL pointer dereference on omap3 for thumb2 compiled kernels:
>
> Internal error: Oops: 80000005 [#1] SMP THUMB2
> ...
> [<c046497b>] (_raw_spin_unlock_irqrestore) from [<c0024375>]
> (omap3_enter_idle_bm+0xc5/0x178)
> [<c0024375>] (omap3_enter_idle_bm) from [<c0374e63>]
> (cpuidle_enter_state+0x77/0x27c)
> [<c0374e63>] (cpuidle_enter_state) from [<c00627f1>]
> (cpu_startup_entry+0x155/0x23c)
> [<c00627f1>] (cpu_startup_entry) from [<c06b9a47>]
> (start_kernel+0x32f/0x338)
> [<c06b9a47>] (start_kernel) from [<8000807f>] (0x8000807f)
>
> The power management related assembly on omaps needs to interact with
> ARM mode bootrom code, so we need to keep most of the related assembly
> in ARM mode.
>
> Turns out this error is because of missing ENDPROC for assembly code
> as suggested by Stephen Boyd <sboyd@codeaurora.org>. Let's fix the
> problem by adding ENDPROC in two places to sleep34xx.S.
>
> Let's also remove the now duplicate custom code for mode switching.
> This has been unnecessary since commit 6ebbf2ce437b ("ARM: convert
> all "mov.* pc, reg" to "bx reg" for ARMv6+").
>
> And let's also remove the comments about local variables, they are
> now just confusing after the ENDPROC.
>
> The reason why ENDPROC makes a difference is it sets .type and then
> the compiler knows what to do with the thumb bit as explained at:
>
> https://wiki.ubuntu.com/ARM/Thumb2PortingHowto
>
> Reported-by: Kevin Hilman <khilman@kernel.org>
> Tested-by: Kevin Hilman <khilman@linaro.org>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> (cherry picked from commit d8a50941c91a68da202aaa96a3dacd471ea9c693)
> Cc: <stable@vger.kernel.org> # v4.0+
> Signed-off-by: Kevin Hilman <khilman@linaro.org>

This  one seems to be missing in v4.0.9, though it was submitted ~10
days before.  I missed noticing it was not present in the stable queue
because I've been on vacation.

I know you mentioned you were wrapping up v4.0, but any chance of this
being included?

Thanks,

Kevin

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

* Re: [PATCH stable/v4.0] ARM: OMAP3: Fix booting with thumb2 kernel
  2015-07-30 20:27 ` Kevin Hilman
@ 2015-07-30 20:43   ` Greg Kroah-Hartman
  0 siblings, 0 replies; 3+ messages in thread
From: Greg Kroah-Hartman @ 2015-07-30 20:43 UTC (permalink / raw)
  To: Kevin Hilman; +Cc: stable, Tony Lindgren, linux-omap, Kevin Hilman

On Thu, Jul 30, 2015 at 03:27:54PM -0500, Kevin Hilman wrote:
> Hi Greg,
> 
> On Fri, Jul 10, 2015 at 10:28 AM, Kevin Hilman <khilman@kernel.org> wrote:
> > From: Tony Lindgren <tony@atomide.com>
> >
> > We get a NULL pointer dereference on omap3 for thumb2 compiled kernels:
> >
> > Internal error: Oops: 80000005 [#1] SMP THUMB2
> > ...
> > [<c046497b>] (_raw_spin_unlock_irqrestore) from [<c0024375>]
> > (omap3_enter_idle_bm+0xc5/0x178)
> > [<c0024375>] (omap3_enter_idle_bm) from [<c0374e63>]
> > (cpuidle_enter_state+0x77/0x27c)
> > [<c0374e63>] (cpuidle_enter_state) from [<c00627f1>]
> > (cpu_startup_entry+0x155/0x23c)
> > [<c00627f1>] (cpu_startup_entry) from [<c06b9a47>]
> > (start_kernel+0x32f/0x338)
> > [<c06b9a47>] (start_kernel) from [<8000807f>] (0x8000807f)
> >
> > The power management related assembly on omaps needs to interact with
> > ARM mode bootrom code, so we need to keep most of the related assembly
> > in ARM mode.
> >
> > Turns out this error is because of missing ENDPROC for assembly code
> > as suggested by Stephen Boyd <sboyd@codeaurora.org>. Let's fix the
> > problem by adding ENDPROC in two places to sleep34xx.S.
> >
> > Let's also remove the now duplicate custom code for mode switching.
> > This has been unnecessary since commit 6ebbf2ce437b ("ARM: convert
> > all "mov.* pc, reg" to "bx reg" for ARMv6+").
> >
> > And let's also remove the comments about local variables, they are
> > now just confusing after the ENDPROC.
> >
> > The reason why ENDPROC makes a difference is it sets .type and then
> > the compiler knows what to do with the thumb bit as explained at:
> >
> > https://wiki.ubuntu.com/ARM/Thumb2PortingHowto
> >
> > Reported-by: Kevin Hilman <khilman@kernel.org>
> > Tested-by: Kevin Hilman <khilman@linaro.org>
> > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > (cherry picked from commit d8a50941c91a68da202aaa96a3dacd471ea9c693)
> > Cc: <stable@vger.kernel.org> # v4.0+
> > Signed-off-by: Kevin Hilman <khilman@linaro.org>
> 
> This  one seems to be missing in v4.0.9, though it was submitted ~10
> days before.  I missed noticing it was not present in the stable queue
> because I've been on vacation.
> 
> I know you mentioned you were wrapping up v4.0, but any chance of this
> being included?

There isn't going to be any more 4.0-stable releases, sorry, so it
doesn't really matter as everyone should be on 4.1 by now :)

thanks,

greg k-h

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

end of thread, other threads:[~2015-07-30 20:43 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-10 15:28 [PATCH stable/v4.0] ARM: OMAP3: Fix booting with thumb2 kernel Kevin Hilman
2015-07-30 20:27 ` Kevin Hilman
2015-07-30 20:43   ` Greg Kroah-Hartman

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).