schedule_timeout sleeps too long after dividing CPU frequency
Viresh Kumar
viresh.kumar at linaro.org
Wed May 13 19:13:28 PDT 2015
On Wed, May 13, 2015 at 10:21 PM, Mason <slash.tmp at free.fr> wrote:
> $ git diff v3.14.41 HEAD >tango.patch && xz tango.patch
>
> I don't understand the IRQ-related part yet
> ( arch/arm/mach-tangox/irq.c and drivers/irqchip/irq-gic.c )
>
> If anyone spots the problem, that would make my day.
>
> I tested with a loadable module whose init function is
>
> static int __init ts_init(void)
> {
> long res;
> printk("ABOUT TO SLEEP\n");
> set_current_state(TASK_INTERRUPTIBLE);
> res = schedule_timeout(HZ);
> printk("WAKE UP res=%ld\n", res);
> return 0;
> }
>
> Loading the module, with cpufreq divided by 9, prints:
> [ 1738.962982] ABOUT TO SLEEP
> [ 1747.956191] WAKE UP res=0
I hope you are also matching this time with a physical watch,
to make sure 38->47 is really 9 seconds :)
More information about the linux-arm-kernel
mailing list