Re: [PATCH 00/11] OMAP3 CPUidle patches

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"ext Rajendra Nayak" <rnayak@xxxxxx> writes:

>> -----Original Message-----
>> From: "Högander" Jouni [mailto:jouni.hogander@xxxxxxxxx] 
>> Sent: Friday, July 04, 2008 3:02 PM
>> To: ext Rajendra Nayak
>> Cc: 'Peter 'p2' De Schrijver'; linux-omap@xxxxxxxxxxxxxxx
>> Subject: Re: [PATCH 00/11] OMAP3 CPUidle patches
>> 
>> Let's continue this discussion in here to make sure that everybody
>> sees it.
>> 
>> ext Högander Jouni <jouni.hogander@xxxxxxxxx> writes:
>> 
>> > Hi Rajendra,
>> >
>> > "ext Rajendra Nayak" <rnayak@xxxxxx> writes:
>> >
>> >>> -----Original Message-----
>> >>> From: Peter 'p2' De Schrijver 
>> [mailto:peter.de-schrijver@xxxxxxxxx] 
>> >>> Sent: Wednesday, July 02, 2008 9:13 PM
>> >>> To: ext Rajendra Nayak
>> >>> Cc: linux-omap@xxxxxxxxxxxxxxx
>> >>> Subject: Re: [PATCH 00/11] OMAP3 CPUidle patches
>> >>> 
>> >>> Hi Rajendra,
>> >>> 
>> >>> > 
>> >>> > Not sure, but you can try with my .config while I try 
>> with yours. 
>> >>> > I was doing some more testing today, and I saw a hang after 
>> >>> a while of
>> >>> > idle activity with OFF being attempted multiple times.
>> >>> > Using lauterbach showed me it being stuck up in 
>> >>> prcm_interrupt_handler trying 
>> >>> > to clear MPU_IRQSTATUS.
>> >>> > Looks like in the PRCM interrupt handler somehow 
>> >>> PM_WKST1_CORE is not cleared
>> >>> > (I see it set to 0x2000) and hence MPU_IRQSTATUS fails to clear.
>> >>> > 
>> >>> 
>> >>> Ok. I disabled OneNAND support and now I get off mode on 
>> VDD2 as well.
>> >>> Consumption on VDD1 is 4uA and 32uA on VDD2. 
>> Unfortunately after the
>> >>> first wakeup, off mode is never reached again.
>> >>
>> >> Do you see a hang? or OFF is never achieved?
>> >> Can you try with the latest fixes that I posted.
>> >
>> > As it seems to be hard to get similiar results with these patches,
>> > could you please send me your uImage?
>> 
>> So Rajendra sent his uImage and it works quite ok what comes to off
>> mode on my sdp board. I still see problems with serial console (slow)
>> and on boot I need to generate manually interrupts to get it to
>> boot. Otherwise board hangs at this point:
>
> Yes, I noticed this as well. It takes quite long to bootup if you don't 
> generate UART interrupts.
> After bootup once RET/OFF is hit, it takes a few hits to come out of it
> as IO wakeup is missing.
>
>> 
>> eth0: link up
>> Sending DHCP requests ., OK
>> IP-Config: Got DHCP answer from 0.0.0.0, my address is 192.168.2.101
>> IP-Config: Complete:
>>      device=eth0, addr=192.168.2.101, mask=255.255.255.0, 
>> gw=192.168.2.1,
>>      host=192.168.2.101, domain=ntc.nokia.com, nis-domain=(none),
>>      bootserver=0.0.0.0, rootserver=172.22.146.197, rootpath=
>> Looking up port of RPC 100003/2 on 172.22.146.197
>> Looking up port of RPC 100005/1 on 172.22.146.197
>> VFS: Mounted root (nfs filesystem).
>> Freeing init memory: 108K
>> 
>> Rajendra, are you still using .config file you sent to me? Are all the
>> changes in your tree available in l-o list.
>
> Yes, all the changes are part of the 11 patch set + 1 rework fixes patch I sent.
> To debug further, can you put a few prints in omap3_enter_idle and omap3_enter_idle_bm
> to see what states are selected by the menu gov. 
> We will then know if CORE RET/OFF is attempted but not achieved due to some reason, or 
> never attempted altogether.

It seems that I get off state also with my own binary:

diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
index 6440515..545ce99 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -447,7 +447,9 @@ static int omap3_enter_idle(struct cpuidle_device *dev,
 
        if (cx->type > OMAP3_STATE_C1)
                sched_clock_idle_sleep_event(); /* about to enter deep idle */
-
+       if (cx->type == OMAP3_STATE_C6)
+           printk(KERN_ERR"Trying OMAP3_STATE_C6\n");
+       
        mpu_pd = pwrdm_lookup("mpu_pwrdm");
        core_pd = pwrdm_lookup("core_pwrdm");
        per_pd = pwrdm_lookup("per_pwrdm");
@@ -521,6 +523,15 @@ static int omap3_enter_idle(struct cpuidle_device *dev,
                omap2_gpio_resume_after_retention();
        }
 
+       if (!pwrdm_read_prev_pwrst(mpu_pd))
+               printk("mpu off achieved\n");
+       if (!pwrdm_read_prev_pwrst(core_pd))
+               printk("core off achieved\n");
+       if (!pwrdm_read_prev_pwrst(per_pd))
+               printk("per off achieved\n");
+       if (!pwrdm_read_prev_pwrst(neon_pd))
+               printk("neon off achieved\n");
+

And the output is this:

Trying OMAP3_STATE_C6
mpu off achieved
core off achieved
per off achieved

Neon is not printed as it is in off or ret all the time. Basically off
state is achieved using Rajendras patches + config.

I still see that hang on boot. I have feeling that it is related to
other states than C6. I tried to disable all other states than C0 and
C6 by setting valid bit to 0. After this boot works ok, but C6 state
is never tried. Any idea why?

There is still some occasional hangs. Seems to be related to wakeup.

>
>> 
>> >
>> >>
>> >>> 
>> >>> Cheers,
>> >>> 
>> >>> Peter.
>> >>> 
>> >>
>> >> --
>> >> To unsubscribe from this list: send the line "unsubscribe 
>> linux-omap" in
>> >> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> >>
>> >>
>> >
>> > -- 
>> > Jouni Högander
>> >
>> > --
>> > To unsubscribe from this list: send the line "unsubscribe 
>> linux-omap" in
>> > the body of a message to majordomo@xxxxxxxxxxxxxxx
>> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> >
>> >
>> 
>> -- 
>> Jouni Högander
>> 
>> 
>
>
>

-- 
Jouni Högander

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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux