Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Neither signals nor wait-queue events are important at this point in the code, I believe. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/arch/arm/mach-sa1100/cpu-sa1110.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) diff -puN arch/arm/mach-sa1100/cpu-sa1110.c~msleep-arch_arm_mach-sa1100_cpu-sa1110 arch/arm/mach-sa1100/cpu-sa1110.c --- kj/arch/arm/mach-sa1100/cpu-sa1110.c~msleep-arch_arm_mach-sa1100_cpu-sa1110 2005-04-05 12:56:01.000000000 +0200 +++ kj-domen/arch/arm/mach-sa1100/cpu-sa1110.c 2005-04-05 12:56:01.000000000 +0200 @@ -271,8 +271,7 @@ static int sa1110_target(struct cpufreq_ */ sdram_set_refresh(2); if (!irqs_disabled()) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(20 * HZ / 1000); + msleep(20); } else { mdelay(20); } _