When attempting to boot kernel-smp-2.6.15-1.2054_FC5 on an SMP VIA C3 machine, the following error is printed many times for a few seconds, after which the machine reboots: Unknown interrupt or fault at EIP 00000060 c0100295 00000294 A custom kernel (2070 checked out of Fedora CVS) built with CONFIG_MVIAC3_2=yes and CONFIG_SMP=yes works fine. /proc/cpuinfo contains: processor : 0 vendor_id : CentaurHauls cpu family : 6 model : 9 model name : VIA Nehemiah stepping : 10 cpu MHz : 997.364 cache size : 64 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr cx8 apic mtrr pge cmov pat mmx fxsr sse rng rng_en ace ace_en bogomips : 1998.37 plus an identical entry for the second processor. I have the machine for testing indefinitely.
ahh, the 686-smp kernel has CONFIG_HIGHMEM64 enabled, and there's no PAE on this CPU. PAE isn't something we can detect at runtime though, so short of adding another kernel rpm (which is never a good thing), we're kinda stuck. Will have to have a think about this one. I know the ubuntu people are experimenting with a '686' kernel that autodetects smp (somewhat like we did for x86-64 in FC5). We *could* in theory do something similar, and remove the UP kernel build, and end up with two kernels, a kernel-686, and kernel-686-PAE, both of which being SMP capable. It's risky though, there's a lot of really crappy systems out there that may not boot again after such a change.
Would you consider adding a nopae config to the SRPM and making it relatively simple to build it? I have no problem rolling my own kernels but it would be nice to avoid hacking the spec and CVS makefile for every release. It might be interesting to see if special kernels for minority platforms could be carried in Extras.
The kernel at http://people.redhat.com/davej/kernels/Fedora/FC5/RPMS.kernel/kernel-smp-2.6.16-1.2083_FC5.i586.rpm seems to work well on this machine. Do I lose anything by running a 586 kernel instead of compiling a custom i686 kernel with CONFIG_HIGHMEM64G unset?
the big difference is that its compiled with -march=i586 instead of -march=i686, so gcc doesn't emit some instructions (like cmov), which tbh aren't that big a deal on VIA systems. (They were a performance win to use on older Pentiums, but anything made in the last few years does branch prediction good enough that they don't matter).
Ok. Go with the 586-smp for FC5.