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
> 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.