Bug#488022: linux-image-2.6.25-2-486: Does not boot on Vortex86SX (BUG: Int 6: CR2 00000000)
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
Reply to: