• David Fries's avatar
    system timer: fix crash in <100Hz system timer · 6ffc787a
    David Fries authored
    The kernel has a divide by zero crash when trying to run the system timer
    less than 100Hz.  The problem is x/(HZ/USER_HZ) and related.  Now
    x*(USER_HZ/HZ) will be used if HZ<USER_HZ.
    
    I'm running the Linux kernel under qemu and went to run a slower system
    timer to take less CPU (and battery) on the host.  I found that the kernel
    paniced under emulation because of a divide by zero in three places.  Here
    is the patch.  The base git was updated today 01-05-2008.  I went for a
    20Hz system time by adding config HZ_20 etc to kernel/Kconfig.hz.  With
    this patch I verified the system timer by looking at /proc/interrupts.
    
    [akpm@linux-foundation.org: partially clean up the macro maze]
    Signed-off-by: default avatarDavid Fries <david@fries.net>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6ffc787a
time.c 17 KB