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