linux-mips
[Top] [All Lists]

Re: Time slowing down while doing IDE PIO transfer

To: Maxime Bizon <mbizon@freebox.fr>
Subject: Re: Time slowing down while doing IDE PIO transfer
From: Ralf Baechle <ralf@linux-mips.org>
Date: Sat, 21 Jan 2006 11:20:49 +0000
Cc: linux-mips@linux-mips.org
In-reply-to: <1137777997.16631.147.camel@sakura.staff.proxad.net>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <1137777997.16631.147.camel@sakura.staff.proxad.net>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.1i
On Fri, Jan 20, 2006 at 06:26:37PM +0100, Maxime Bizon wrote:

> I have a R4Kec board with an IDE controller, and run linux-mips 2.6.14
> on it. When running a transfer on a cdrom drive, with dma disabled and
> at lowest pio mode, time is slowing down (about 10 times too slow).
> 
> HZ is 1000, I'm using generic mips timer code (arch/mips/kernel/time.c),
> HPT and timer interrupts are R4K.
> 
> This is I guess related to the interrupts being disabled during pio
> transfer (I can't use unmaskirq btw).

This by itself sounds like a bug.

> Looking at timer_interrupt() code, I see that do_timer() will be only
> called once, whether we have lost timer interrupts or not, I guess this
> is the reason of this time problem. Is it a wanted behaviour ?

"Yes" - because properly designed systems shouldn't loose interrupts.
Your problem isn't new but so for everybody was able to solve it by
unmasking interrupts.

> If this is the case, I guess my only hope is running with lower HZ or
> using an RTC ?

Dependig on your processor's clock a lower HZ may indeed be a good idea
just to keep the interrupt overhead down.  You should test yourself what
the optimal balance between latency and overhead it.

If lowering HZ doesn't solve the clock problem you may want to add a
loop to call the timer interrupt repeatedly.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>