[PATCH] omap: wd_timer: Fix crash frm wdt_probe when !CONFIG_RUNTIME_PM
From: Santosh Shilimkar <hidden>
Date: 2011-01-06 03:53:30
Also in:
linux-omap
-----Original Message----- From: Kevin Hilman [mailto:khilman at ti.com] Sent: Wednesday, January 05, 2011 11:23 PM To: Santosh Shilimkar Cc: Paul Walmsley; linux-arm-kernel at lists.infradead.org; linux- omap at vger.kernel.org Subject: Re: [PATCH] omap: wd_timer: Fix crash frm wdt_probe when !CONFIG_RUNTIME_PM Santosh Shilimkar [off-list ref] writes:quoted
Commit ff2516fb 'wd_timer: disable on boot via hwmod postsetupmechanism'quoted
introduced watchdog timer state state management usingpostsetup_state.quoted
This was done to allow some board files to support watchdogcoveragequoted
throughout kernel initialization and it work as intended whenRUNTIME_PMquoted
is enabled. With !CONFIG_RUNTIME_PM and no board is specifically requestswatchdogquoted
to remain enabled the omap_wdt_probe crashesh. This is becausehwmodquoted
in absense of runtime PM unable to turn watchdog clocks becauseit'squoted
state is set to be disabled. For rest of the device, the state is set as enabled in absense of RUNTIME_PM [ 1.372558] Unhandled fault: imprecise external abort (0x1406)atquoted
0xad733eeb [ 1.379913] Internal error: : 1406 [#1] SMP [ 1.384277] last sysfs file: [ 1.387359] Modules linked in: [ 1.390563] CPU: 0 Tainted: G W (2.6.37-rc7-00265-g4298a4c-dirty #23) [ 1.398468] PC is at omap_wdt_disable+0x2c/0x3c [ 1.403198] LR is at omap_wdt_probe+0x124/0x1e0 [ 1.407928] pc : [<c02f5bf4>] lr : [<c03be10c>] psr:60000013quoted
[ 1.407958] sp : df833f00 ip : 00000000 fp : 00000000 [ 1.419921] r10: c0ac57ac r9 : df959e00 r8 : 00000000 [ 1.425384] r7 : df959e08 r6 : df8000c0 r5 : df95bebc r4 :df87dde0quoted
[ 1.432189] r3 : fc314000 r2 : 00005555 r1 : fc314034 r0 :df87dde0quoted
This patch make the default watchdog state to be enabled in caseofquoted
!CONFIG_RUNTIME_PM. This fixes the crash Signed-off-by: Santosh Shilimkar <redacted> Cc: Paul Walmsley <paul@pwsan.com> --- Paul, I am not too sure if it breaks your _shutdown idea ofwatchdogquoted
timer. Patch generated against 'omap-for-linus' branch and boot tested on OMAP4 with and without CONFIG_OMAP_WATCHDOG. arch/arm/mach-omap2/io.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index e66687b..b879a16 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c@@ -378,7 +378,11 @@ void __initomap2_init_common_infrastructure(void)quoted
* XXX ideally we could detect whether the MPU WDT wascurrentlyquoted
* enabled here and make this conditional */ +#ifdef CONFIG_PM_RUNTIME postsetup_state = _HWMOD_STATE_DISABLED; +#else + postsetup_state = _HWMOD_STATE_ENABLED; +#endifYou shouldn't need the 'else' part of this since the default a few lines above this code is already setting that for the !CONFIG_PM_RUNTIME case.
Yep. Just 'CONFIG_PM_RUNTIME' wrapping is enough.