Question regarding broadcast timer/cpuidle and /proc/interrupts
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
Signature · 10 lines
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 18 lines · Daniel Lezcano
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
Quoted 5 lines
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.
Thats correct. Local timer are not wakeup capable and hence we switch to a wakeup capable broadcast timer.
Quoted 8 lines
4. The content of
/proc/interruptsshows 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
Quoted 33 lines · Santosh Shilimkar
Quoted 18 lines · Daniel Lezcano
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: 1341Quoted 5 lines
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.
Thats correct. Local timer are not wakeup capable and hence we switch to a wakeup capable broadcast timer.
Quoted 6 lines
4. The content of
/proc/interruptsshows no broadcast timer used at all....
IPI1: 0 0 Timer broadcast interrupts
...
Quoted 6 lines
Quoted 3 lines
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
Quoted 4 lines
regards
santosh
Signature · 10 lines
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html