I've now been running git. I started with git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.25.y.git
I did a git bisect and found that the commit that introduced the bug is commit 94aa6550e8668fab1997e2d57a48b22cf68090b2 Author: Thomas Gleixner Date: Tue May 13 12:31:00 2008 +0200 x86: distangle user disabled TSC from unstable upstream commit: 9ccc906c97e34fd91dc6aaf5b69b52d824386910 tsc_enabled is set to 0 from the command line switch "notsc" and from the mark_tsc_unstable code. Seperate those functionalities and replace tsc_enable with tsc_disable. This makes also the native_sched_clock() decision when to use TSC understandable. Preparatory patch to solve the sched_clock() issue on 32 bit. Signed-off-by: Thomas Gleixner Signed-off-by: Chris Wright This commit changes file arch/x86/kernel/tsc_32.c I tried booting with notsc but I still got "BUG: Int 6: CR2 00000000" After looking at the commitdiff, I guessed that native_sched_clock() gets called before tsc_init(). http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.25.y.git;a=commitdiff;h=94aa6550e8668fab1997e2d57a48b22cf68090b2 Prior to the commit native_sched_clock() looked at unitialised tsc_enable which holds 0 so didn't attempt to access a TSC. After the commit native_sched_clock() looks at unitialised tsc_disable which holds 0 so attempts to access a TSC leading to the BUG: Starting with a kernel tree from immediately after the faulty commit. I made the following change which stops the BUG occuring. *** arch/x86/kernel/tsc_32.c.000 2008-07-30 13:07:57.000000000 +0100 --- arch/x86/kernel/tsc_32.c 2008-07-30 13:09:57.000000000 +0100 *************** unsigned long long native_sched_clock(vo *** 121,127 **** * very important for it to be as fast as the platform * can achive it. ) */ ! if (unlikely(tsc_disabled)) /* No locking but a rare wrong value is not a big deal: */ return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); --- 121,127 ---- * very important for it to be as fast as the platform * can achive it. ) */ ! if (unlikely(tsc_disabled || !cpu_has_tsc)) /* No locking but a rare wrong value is not a big deal: */ return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); _________________________________________________________________ Stay in touch when you're away with Windows Live Messenger. http://www.windowslive.com/messenger/overview.html?ocid=TXT_TAGLM_WL_messenger2_072008 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]