Hi All,
I have a question regarding the behavior of cpuidle on pandaboard.
1. cpuidle is enabled
2. The deep idle states seem to be reach
for i in $(find /sys/devices/system/cpu -name "usage"); do echo "$i : $(cat $i)"; done /sys/devices/system/cpu/cpu0/cpuidle/state0/usage : 7049 /sys/devices/system/cpu/cpu0/cpuidle/state1/usage : 17 /sys/devices/system/cpu/cpu0/cpuidle/state2/usage : 1341 /sys/devices/system/cpu/cpu1/cpuidle/state0/usage : 6318 /sys/devices/system/cpu/cpu1/cpuidle/state1/usage : 17 /sys/devices/system/cpu/cpu1/cpuidle/state2/usage : 1341
3. Regarding the cpuidle driver code : the "state1" and "state2" are coupled states where the broadcast timer is used instead of the local timer. I assume this is because they go down when we reach these idle states.
4. The content of /proc/interrupts shows no broadcast timer used at all.
... IPI1: 0 0 Timer broadcast interrupts ...
Shouldn't be the broadcast timer used sometimes ? or did I miss something ?
Thanks.
-- Daniel
On Monday 21 January 2013 07:47 PM, Daniel Lezcano wrote:
Hi All,
I have a question regarding the behavior of cpuidle on pandaboard.
cpuidle is enabled
The deep idle states seem to be reach
for i in $(find /sys/devices/system/cpu -name "usage"); do echo "$i : $(cat $i)"; done /sys/devices/system/cpu/cpu0/cpuidle/state0/usage : 7049 /sys/devices/system/cpu/cpu0/cpuidle/state1/usage : 17 /sys/devices/system/cpu/cpu0/cpuidle/state2/usage : 1341 /sys/devices/system/cpu/cpu1/cpuidle/state0/usage : 6318 /sys/devices/system/cpu/cpu1/cpuidle/state1/usage : 17 /sys/devices/system/cpu/cpu1/cpuidle/state2/usage : 1341
- Regarding the cpuidle driver code : the "state1" and "state2" are
coupled states where the broadcast timer is used instead of the local timer. I assume this is because they go down when we reach these idle states.
Thats correct. Local timer are not wakeup capable and hence we switch to a wakeup capable broadcast timer.
- The content of /proc/interrupts shows no broadcast timer used at all.
... IPI1: 0 0 Timer broadcast interrupts ...
Shouldn't be the broadcast timer used sometimes ? or did I miss something ?
There might be an issue with status updating. Just look for gptimer1 interrupts. if they are incrementing then, broadcast is being used but just the status update isn't happening some how.
regards santosh
On 01/21/2013 03:38 PM, Santosh Shilimkar wrote:
On Monday 21 January 2013 07:47 PM, Daniel Lezcano wrote:
Hi All,
I have a question regarding the behavior of cpuidle on pandaboard.
cpuidle is enabled
The deep idle states seem to be reach
for i in $(find /sys/devices/system/cpu -name "usage"); do echo "$i : $(cat $i)"; done /sys/devices/system/cpu/cpu0/cpuidle/state0/usage : 7049 /sys/devices/system/cpu/cpu0/cpuidle/state1/usage : 17 /sys/devices/system/cpu/cpu0/cpuidle/state2/usage : 1341 /sys/devices/system/cpu/cpu1/cpuidle/state0/usage : 6318 /sys/devices/system/cpu/cpu1/cpuidle/state1/usage : 17 /sys/devices/system/cpu/cpu1/cpuidle/state2/usage : 1341
- Regarding the cpuidle driver code : the "state1" and "state2" are
coupled states where the broadcast timer is used instead of the local timer. I assume this is because they go down when we reach these idle states.
Thats correct. Local timer are not wakeup capable and hence we switch to a wakeup capable broadcast timer.
- The content of /proc/interrupts shows no broadcast timer used at all.
... IPI1: 0 0 Timer broadcast interrupts ...
Shouldn't be the broadcast timer used sometimes ? or did I miss something ?
There might be an issue with status updating. Just look for gptimer1 interrupts. if they are incrementing then, broadcast is being used but just the status update isn't happening some how.
Is it the interrupt 69 ?
29: 293 395 GIC twd 41: 0 0 GIC l3-dbg-irq 42: 0 0 GIC l3-app-irq 44: 0 0 GIC DMA 69: 61 0 GIC gp_timer 88: 0 0 GIC i2c.9 89: 0 0 GIC i2c.10 93: 0 0 GIC i2c.11 94: 0 0 GIC i2c.12 106: 93 0 GIC OMAP UART2 169: 0 0 PRCM hwmod_io IPI0: 0 0 Timer broadcast interrupts IPI1: 1424 1260 Rescheduling interrupts IPI2: 0 0 Function call interrupts IPI3: 81 90 Single function call interrupts IPI4: 0 0 CPU stop interrupts Err: 0
regards santosh