2.6.0 doesn't recognize some Cyrix Cpus ?

From: Alexey Shinkin
Date: Tue Feb 17 2004 - 23:44:55 EST


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 incorrectly 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,
Athlons64 etc , but I think that support for old CPUs also shouldnt be
broken...


--
Best regards,
Alex Shinkin

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/