Index: amd64/amd64/local_apic.c =================================================================== RCS file: /usr/cvs/src/sys/amd64/amd64/local_apic.c,v retrieving revision 1.38 diff -u -r1.38 local_apic.c --- amd64/amd64/local_apic.c 25 Apr 2007 19:58:41 -0000 1.38 +++ amd64/amd64/local_apic.c 4 May 2007 21:13:50 -0000 @@ -392,7 +392,12 @@ * both of the other timers with similarly small but relatively * prime divisors. */ - lapic_timer_hz = hz * LAPIC_TIMER_HZ_DIVIDER; + if (hz >= 1000) + lapic_timer_hz = hz * LAPIC_TIMER_HZ_DIVIDER; + else { + lapic_timer_hz = 1000 * LAPIC_TIMER_HZ_DIVIDER; + hz = lapic_timer_hz * hz / lapic_timer_hz; + } stathz = lapic_timer_hz / LAPIC_TIMER_STATHZ_DIVIDER; profhz = lapic_timer_hz / LAPIC_TIMER_PROFHZ_DIVIDER; lapic_timer_period = value / lapic_timer_hz; Index: i386/i386/local_apic.c =================================================================== RCS file: /usr/cvs/src/sys/i386/i386/local_apic.c,v retrieving revision 1.40 diff -u -r1.40 local_apic.c --- i386/i386/local_apic.c 25 Apr 2007 19:58:42 -0000 1.40 +++ i386/i386/local_apic.c 4 May 2007 21:13:26 -0000 @@ -394,7 +394,12 @@ * both of the other timers with similarly small but relatively * prime divisors. */ - lapic_timer_hz = hz * LAPIC_TIMER_HZ_DIVIDER; + if (hz >= 1000) + lapic_timer_hz = hz * LAPIC_TIMER_HZ_DIVIDER; + else { + lapic_timer_hz = 1000 * LAPIC_TIMER_HZ_DIVIDER; + hz = lapic_timer_hz * hz / lapic_timer_hz; + } stathz = lapic_timer_hz / LAPIC_TIMER_STATHZ_DIVIDER; profhz = lapic_timer_hz / LAPIC_TIMER_PROFHZ_DIVIDER; lapic_timer_period = value / lapic_timer_hz;