Messages in this thread | | | Date | Sat, 3 Oct 2009 09:21:27 +0200 | From | Ingo Molnar <> | Subject | Re: i686 quirk for AMD Geode |
| |
* Matteo Croce <technoboy85@gmail.com> wrote:
> Hi, > > the AMD GEode LX has an x86 id of 5 (i586) tought it's technically an i686: > > root@alix:/usr/src# cat /proc/cpuinfo > processor : 0 > vendor_id : AuthenticAMD > cpu family : 5 > model : 10 > model name : Geode(TM) Integrated Processor by AMD PCS > stepping : 2 > cpu MHz : 498.060 > cache size : 128 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 de pse tsc msr cx8 sep pge cmov clflush mmx > mmxext 3dnowext 3dnow > bogomips : 996.12 > clflush size : 32 > cache_alignment : 32 > address sizes : 32 bits physical, 32 bits virtual > power management: > > indeed it has mmx, mmxext and cmov. > So I added the quirk below and I can confirm that the system is running fine. > I did an x264 encode to trigger any SIGILL due to missing opcodes, but > it worked. > > I also did this simple test which gives a ~2.5x speed boost: > http://pastebin.ca/1590089 > > I wish some feedback from someone, I really dunno why AMD set the > cpuid value to 5 > > --- a/arch/x86/kernel/cpu/bugs.c 2009-10-03 03:43:02.399323313 +0200 > +++ b/arch/x86/kernel/cpu/bugs.c 2009-10-03 03:54:22.582205090 +0200 > @@ -151,6 +151,12 @@ > #endif > } > > +static void __init check_geode_i586(void) > +{ > + if(boot_cpu_data.x86_vendor == X86_VENDOR_AMD && > + boot_cpu_data.x86_model == 10 && boot_cpu_data.x86 == 5) > + boot_cpu_data.x86 = 6; > +} > > void __init check_bugs(void) > { > @@ -163,6 +169,7 @@ > check_fpu(); > check_hlt(); > check_popad(); > + check_geode_i586(); > init_utsname()->machine[1] = > '0' + (boot_cpu_data.x86 > 6 ? 6 : boot_cpu_data.x86); > alternative_instructions();
Looks good, but your signoff line is missing.
Ingo
| |