Re: [PATCH] i386: Selectable Frequency of the Timer Interrupt

Linus Torvalds
2005-07-15T05:05:49Z

On Fri, 15 Jul 2005, Jesper Juhl wrote:
>
> It's buggy, that I know. setting kernel_hz (the new boot parameter) to
> 250 causes my system clock to run at something like 4-5 times normal
> speed

4 times normal. You don't actually make the timer interrupt happen at
250Hz, so the timer will be programmed to run at the full 1kHz.

You also need to actually change the LATCH define (in
include/linux/jiffies.h) to take this into account (there might be
something else too).

So

/* LATCH is used in the interval timer and ftape setup. */
#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */

should become something like

/* LATCH is used in the interval timer and ftape setup. */
#define LATCH ((CLOCK_TICK_RATE*jiffies_increment + HZ/2) / HZ) /* For divider */

and you might be getting closer.

Of course, you need to make sure that LATCH is used only after
jiffies_increment is set up. See "setup_pit_timer(void)" in
arch/i386/kernel/timers/timer_pit.c for more details.

Linus