Re: Cyrix 6x86MX and Centaur C6 CPUs in 2.1.102

Phil's Kernel Account (
Mon, 18 May 1998 04:48:18 -0400 (EDT)

On Mon, 18 May 1998, [ISO-8859-1] André Derrick Balsa wrote:

#Hello Linus,

Hi Linus and Andre (Goddamned pine:)! :)

#I have noticed that, as a result of my previous posts, you modified the
#apm driver, setup.c and time.c in kernel 2.1.102.
#The mod in setup.c is more or less:
#if (cyrix_CPU_detected)
# turn_off_tsc_flag;
#which is sub-optimal, and breaks code that tries to detect TSC
#capability by reading /proc/cpuinfo, in machines equipped with a 6x86MX
#or a C6.

Definitely agreed on the sub-optimal part. Especially since the issue
doesn't exist in ALL Cx6x86MX's. See below for suggestions. (Don't ask me
how to implement it unless you wanna wait six million years. I'm
backlogged on lotsa work I gotta do around the house, much less with

#The Cyrix 6x86MX has a fully compatible TSC implementation. However, it
#also allows turning off the CPU when a Halt state is entered, something
#the Intel CPUs can't do, and this breaks the current implementation of
#do_fast_gettimeoffset() in time.c.

*dingdingding!* We have a weiner! %) I checked up on it a bit, and never
remembered to mention it to the list; this IS correct. I forgot ENTIRELY
about the 'PowerOff on Halt' feature. Whoops. :) And, gee, I wonder why
Intel's can't do this... gee, could it be cuz Intel isn't owned by
NatSemi? };)

#The mod above also ignores the Centaur C6.

GAH! No! Evil! C6! Run! Hide! Don't Put Quarter In Vending Machine! ;)

#The following single mod to function time_init() in time.c correctly
#handles both the 6x86MX and the Centaur C6 power-down features:
#if (boot_cpu_data.x86_capability & 16) {
# ...



#if ((boot_cpu_data.x86_capability & 16) && (boot_cpu_data.x86_vendor !=
#X86_VENDOR_CYRIX) && (boot_cpu_data.x86_vendor != X86_VENDOR_CENTAUR)) {
# ...

Okay, if SOMEBODY can get me the exact steppings that have this 'problem'
(I never call features that break stuff features:), this (it's 3:30a here,
*PLEASE* don't bitch if I get this totally wrong:) would work a bit

if ((boot_cpu_data.x86_capability & 16) && (boot_cpu_data.x86_vendor !=
X86_VENDOR_CYRIX (boot_cpu_data.x86_stepping <= STEPPINGHERE)) &&
(boot_cpu_data.x86_vendor != X86_VENDOR_CENTAUR)) {

yaddayadda. It's 3:30a, as I said above, so this MAY not seem totally
coherent (I'm not quite sure I am, to be honest:). I'm afraid that
assuming if x86_vendor == X86_VENDOR_CYRIX, it MAY break on processors
that do NOT have the 'PowerOff on Halt' feature. I still haven't found
anyone with an mII, so somebody find me a vendor. ;) Also, IIRC, the
Cx5x86 and Cx6x86 (NOT Cx6x86 L-series) processors do NOT have 'PowerOff
on Halt,' which could result in breakage. Generally, generalizing
by vendor has had a tendency to break many things, in my experience. ;P
Perhaps it would also be a good idea to check the feature flags for mmx.
flags != mmx, not Cx6x86MX, doesn't do weird things. ;) (of course, this
leaves the L's broken, but gimme a break! I can't figure out everything
when I'm half coherent;) Another idea I'm getting in my twisted brain is
to add an additional flag to cpuinfo, "wtsc," for "Weird TSC." :)

Okay, I'm gonna go to bed now, since I looked up at the clock, and
realized that it's now about 3:45. And I have TYGHB indentations on my
forehead from falling asleep at the keyboard.

Probably not a great idea to take this seriously, but lemme know if I'm on
the right track in the morning. Maybe then I can sort my muddled brain out
(after ingestion of massive amounts of coffee), dig out my datasheets
(it's only a full file cabinet worth, shouldn't be too hard to find one
very lightly documented feature;), and actually get this CORRECT. ;)

Anyways, I've rambled enough. To bed with this lunatic! %)

-Phil R. Jaenke ( /
TheGuyInCharge(tm), Ketyra Designs - We get paid to break stuff :)
Linux pkrea.ketyra.INT 2.0.33 #15 Sat Apr 18 00:40:21 EDT 1998 i586
Linux 2.0.33 #15 Fri Apr 17 00:22:13 EDT 1998 i586
- Linus says for 'brave people only.' I say 'keep a backup.' - :)

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to