Skip to contentSkip to conversation

Question regarding broadcast timer/cpuidle and /proc/interrupts

DISCUSSION Daniel Lezcano 2 participants 3 messages Jan 21, 2013

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw
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/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

#2 lore raw
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 : 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 6 lines

4. The content of /proc/interrupts shows 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