[PATCH] Prevent decrementer clockevents from firing early
Benjamin Herrenschmidt
benh at kernel.crashing.org
Tue Oct 9 10:34:16 EST 2007
On Tue, 2007-10-09 at 09:59 +1000, Paul Mackerras wrote:
> On old powermacs, we sometimes set the decrementer to 1 in order to
> trigger a decrementer interrupt, which we use to handle an interrupt
> that was pending at the time when it was re-enabled. This was causing
> the decrementer clock event device to call the event function for the
> next event early, which was causing problems when high-res timers were
> not enabled.
>
> This fixes the problem by recording the timebase value at which the
> next event should occur, and checking the current timebase against the
> recorded value in timer_interrupt. If it isn't time for the next
> event, it just reprograms the decrementer and returns.
>
> This also subtracts 1 from the value stored into the decrementer,
> which is appropriate because the decrementer interrupts on the
> transition from 0 to -1, not when the decrementer reaches 0.
>
> Signed-off-by: Paul Mackerras <paulus at samba.org>
> ---
Do we also need to handle lost ticks ? That is loop & do multiple events
like we used to do with the previous implementation ?
Cheers,
Ben.
More information about the Linuxppc-dev
mailing list