]> git.baikalelectronics.ru Git - kernel.git/commit
[POWERPC] Prevent decrementer clockevents from firing early
authorPaul Mackerras <paulus@samba.org>
Mon, 8 Oct 2007 23:59:17 +0000 (09:59 +1000)
committerPaul Mackerras <paulus@samba.org>
Thu, 11 Oct 2007 11:39:31 +0000 (21:39 +1000)
commitb0a9dcc85382743cfa0cbfeb54142fdcf9a4b373
tree579a94f3b9e76fdd88113d4ac707425926e4dfaa
parent90fbf3d3216740b26a3ce9ba1d7c6aed119b6a62
[POWERPC] Prevent decrementer clockevents from firing early

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@samba.org>
arch/powerpc/kernel/time.c