On 07.04.2011 [21:54:07 +1000], Anton Blanchard wrote:
> 
> RTAS returns extended error codes as a hint of how long the
> OS might want to wait before retrying a call. If we have nothing
> else useful to do we may as well call back straight away.
> 
> This was found when testing the new dynamic dma window feature.
> Firmware split the zeroing of the TCE table into 32k chunks but
> returned 9901 (which is a suggested wait of 10ms). All up this took
> about 10 minutes to complete since msleep is jiffies based and will
> round 10ms up to 20ms.
> 
> With the patch below we take 3 seconds to complete the same test.
> The hint firmware is returning in the RTAS call should definitely
> be decreased, but even if we slept 1ms each iteration this would
> take 32s.
> 
> Signed-off-by: Anton Blanchard <an...@samba.org>

Acked-by: Nishanth Aravamudan <n...@us.ibm.com>

> ---
> 
> Index: linux-2.6/arch/powerpc/kernel/rtas.c
> ===================================================================
> --- linux-2.6.orig/arch/powerpc/kernel/rtas.c 2011-04-05 11:19:35.023234011 
> +1000
> +++ linux-2.6/arch/powerpc/kernel/rtas.c      2011-04-07 21:25:24.646414629 
> +1000
> @@ -494,7 +494,7 @@ unsigned int rtas_busy_delay(int status)
> 
>       might_sleep();
>       ms = rtas_busy_delay_time(status);
> -     if (ms)
> +     if (ms && need_resched())
>               msleep(ms);
> 
>       return ms;
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to