2.6.0 doesn't recognizes some Cyrix Cpus ?

Submitted by Anonymous
on February 13, 2004 - 5:42am

hi!
I am playing with Linux 2.6.0 on a PC-104 board with
ZFx86 CPU - it is Cyrix core based 486. Kernel 2.4.18 detects the CPU
as Cyrix Cx486DX2, but 2.6.0 says it is 486.

I looked through /arch/i386/kernel/setup.c in 2.4.18 sources,
/arch/i386/kernel/cpu/common.c in 2.6.0 sources and
found the identify_cpu() function that seems to be working a bit incorrect in 2.6.0.

In 2.4.18 it checks if the CPU able to execute CPUID , if cannot - the
id_and_try_enable_cpuid() is called, which identifies old Cyrixes and tries
to turn on CPUID on some of them. Even if the CPU is not CPUID-capable, Cyrix
is detected by test_cyrix_52div(), at least, the function fills x86_vendor & x86_vendorid fields in for Cyrixes. The fields are used later
for vendor-specific initialization.

In 2.6.0 identify_cpu() does not check CPUID-uncapable CPUs by test_cyrix_52div() and
doesnt try to enable CPUID on them, so , further generic_identify() considers my CPU as usual 486, doesnt find vendor in get_cpu_vendor and after all default CPU init procedure is performed instead of vendor-specific.

I understand that now people are more focused on newest P4's, Athlons 64 etc , but I think that support for old CPUs also shouldnt be broken ...

submit a patch

molo
on
February 13, 2004 - 5:52pm

Sounds like you have a good handle on the problem. Fix up your 2.6.0 kernel, test it on your cyrix and a non-cyrix, and then submit it to Andrew Morton or someone.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.