On 7/16/05, Jesper Juhl <[EMAIL PROTECTED]> wrote: > On 7/15/05, Jesper Juhl <[EMAIL PROTECTED]> wrote: > > On 7/15/05, Linus Torvalds <[EMAIL PROTECTED]> wrote: > > > > > > 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. > > > > > Right, that's the basic problem. I increase jiffies at a higher rate > > but didn't slow the timer interrupt down at the same time. > > > > > 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). > > > > > [...] > > > 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. > > > > > > > Thank you for all the pointers and hints. This is a new area of code > > for me, so I'll need some time to poke around - the above helps a lot. > > Unfortunately I won't have any time to work on this today, but I'll > > see if I can get a working implementation together tomorrow. > > > > Ok, I'm afraid I'm going to need another hint or two. > > I've been looking at the timer code and getting thoroughly confused. > I've tried to find out where we actually program the interrupt > controller to say "this is the frequency I want you to interrupt me > at", but I can't seem to find it. > I'm aware that there are multiple possible time sources, and I've been > looking at the 8259 code, the ioapic code, the hpet code and various > other bits in arch/i386/kernel/ and arch/i386/kernel/timers/ , but I > seem to end up getting confused about all the different defines like > CLOCK_TICK_RATE, ACTHZ, TICK_NSEC, TICK_USEC, etc... > > Where do we actually program the tick rate we want?
As you've seen, I think it depends on the timesource: for the PIT, it would be arch/i386/kernel/timers/timer_pit.c::setup_pit_timer(). In that function, you'll notice we outb() the LATCH value. I think there are similar functions in the other timesources, e.g. the arch/i386/kernel/apic.c::setup_APIC_timer(). Does that help some? Thanks, Nish - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/