[lkml]   [2008]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [patch 2/3] s3cmci - call pio_tasklet from IRQ
Ben Dooks wrote:
> On Mon, Sep 08, 2008 at 02:48:50PM +0200, Christer Weinigel wrote:
>> Scheduling a tasklet to perform the pio transfer introduces a bit of
>> extra processing, just call pio_tasklet directly from the interrupt
>> instead. Writing up to 64 bytes to a FIFO is probably uses less CPU
>> than scheduling a tasklet anyway.
> Hmm, i'd be interested to find out how long these are taking... I might
> try and rig up something to test the time being taken via an SMDK.
> If the fifo read/writes are taking significant amounts of time, then the
> pio tasklet will at least improve the interrupt latencies invloved, as
> iirc we're currently running the main irq handler in IRQ_DISABLED mode
> to stop any problems with re-enternancy.... I'll check this and see what
> is going on.

Ok, I just measured this on the 200 MHz S3C24A0, when running the SDIO
bus at 10 MHz, the longest time I saw the driver spend in the pio_read
function was ~10us. I guess that means that the hardware managed to
empty the fifo enough to do yet another spin through the loop. So with
a faster SDIO clock the time spent in pio_read ought to go up, and for a
long transfer it could grow without bounds.

I also tried to run the code with the schedule_tasklet still there, and
then I saw ~13us as the longest time spent in the loop, and every now
and then there was a ~10ms gap when the clock stopped.

If we have working DMA, I think the PIO tasklet is unneccesary, then
we'll do PIO for short transfers which won't affect latency much, and
use DMA for long transfers that would have affected latency if done with
PIO from interrupt context.


 \ /
  Last update: 2008-09-08 17:15    [W:0.077 / U:0.256 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site