Skip to contentSkip to conversation

CONFIG_CPU_IDLE broken for N900

DISCUSSION Ameya Palande 3 participants 6 messages Aug 10, 2010

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

Hi,

When I enable CONFIG_CPU_IDLE and boot kernel, it hangs around the point when it switches to user space. I am able to reproduce this for 2.6.35 on linux-omap and linux-2.6 trees.

Has anyone else noticed the same thing for omap3 based boards?

Cheers,
Ameya.

#1 lore raw
Quoted 7 lines · Palande Ameya (Nokia-MS/Helsinki)

Hi,

When I enable CONFIG_CPU_IDLE and boot kernel, it hangs around the point when it switches to user space. I am able to reproduce this for 2.6.35 on linux-omap and linux-2.6 trees.

Has anyone else noticed the same thing for omap3 based boards?

Broken on linux-omap-pm as well!

Cheers,
Ameya.

#2 lore raw
Quoted 8 lines · On Tue, 10 Aug 2010 15:35:18 +0300 Ameya Palande <[email protected]>…
Quoted 5 lines

When I enable CONFIG_CPU_IDLE and boot kernel, it hangs around the point when it switches to user space. I am able to reproduce this for 2.6.35 on linux-omap and linux-2.6 trees.

Has anyone else noticed the same thing for omap3 based boards?

Broken on linux-omap-pm as well!

I'm able to reproduce with 2.6.35-rc1 but not with l-o head. It seems that the commit below fixes this.

commit c786bcf12e092802496f1bc440b2b189144612a5

Author: Kevin Hilman <[email protected]>
Date:   Thu Jun 3 17:13:22 2010 +0000

OMAP3: PM: fix IO daisy chain enable to use PM_WKEN reg

Signature · 1 line
Jarkko
#3 lore raw

Hi Jarkko,

Quoted 11 lines · ext Jarkko Nikula
Quoted 8 lines · On Tue, 10 Aug 2010 15:35:18 +0300 Ameya Palande <[email protected]>…
Quoted 5 lines

When I enable CONFIG_CPU_IDLE and boot kernel, it hangs around the point when it switches to user space. I am able to reproduce this for 2.6.35 on linux-omap and linux-2.6 trees.

Has anyone else noticed the same thing for omap3 based boards?

Broken on linux-omap-pm as well!

Quoted 8 lines

I'm able to reproduce with 2.6.35-rc1 but not with l-o head. It seems that the commit below fixes this.

commit c786bcf12e092802496f1bc440b2b189144612a5

Author: Kevin Hilman <[email protected]>
Date:   Thu Jun 3 17:13:22 2010 +0000

OMAP3: PM: fix IO daisy chain enable to use PM_WKEN reg

Just tested it on linux-omap with omap3_defconfig and found that it is broken. When kernel bootup is complete, and it switches to user space, device hangs. When I disable CPU IDLE, it works..

Cheers,
Ameya.

#4 lore raw
Quoted 7 lines · On Tue, 10 Aug 2010 16:43:16 +0300 Ameya Palande <[email protected]>…
Quoted 7 lines

I'm able to reproduce with 2.6.35-rc1 but not with l-o head. It seems that the commit below fixes this.

commit c786bcf12e092802496f1bc440b2b189144612a5

Author: Kevin Hilman <[email protected]>
Date:   Thu Jun 3 17:13:22 2010 +0000
Quoted 6 lines
Quoted 1 line

OMAP3: PM: fix IO daisy chain enable to use PM_WKEN reg

Just tested it on linux-omap with omap3_defconfig and found that it is broken. When kernel bootup is complete, and it switches to user space, device hangs. When I disable CPU IDLE, it works..

And I was too fast, problem is there in l-o head but it seems to hang in different places for me. Above commit removed "Wake up daisy chain activation failed." error that was slowing down the boot but this issue seems to be different.

I can boot up to Debian console login but system hangs during user space boot if I send something over serial. This happend with omap3_defconfig in l-o head using N900. However, the same kernel works fine on Beagle. Can this be some silicon dependent issue?

Signature · 1 line
Jarkko
#5 lore raw
In reply to Ameya Palande
Quoted 5 lines · Ameya Palande

When I enable CONFIG_CPU_IDLE and boot kernel, it hangs around the point when it switches to user space. I am able to reproduce this for 2.6.35 on linux-omap and linux-2.6 trees.

Has anyone else noticed the same thing for omap3 based boards?

I was able to reproduce on my n900 and found the problem. I believe this is the same problem that has been haunting the Overo folks in that their console (on UART2 like n900) was not responding after suspend.

The patch below fixes the problem for me, and will post an official version shortly.

Tested with l-o master (omap3_defconfig + CONFIG_CPU_IDLE=y) as well with current PM branch. PM branch (specifically pm-fixes sub-branch) has been updated to include this fix.

Kevin

arch/arm/mach-omap2/pm34xx.c +3 -1
index fb4994a..7b03426 100644
@@ -480,7 +480,9 @@ void omap_sram_idle(void)
 	}
 
 	/* Disable IO-PAD and IO-CHAIN wakeup */
-	if (omap3_has_io_wakeup() && core_next_state < PWRDM_POWER_ON) {
+	if (omap3_has_io_wakeup() &&
+	    (per_next_state < PWRDM_POWER_ON ||
+	     core_next_state < PWRDM_POWER_ON)) {
 		prm_clear_mod_reg_bits(OMAP3430_EN_IO_MASK, WKUP_MOD, PM_WKEN);
 		omap3_disable_io_chain();
 	}
Signature · 1 line
1.7.2.1