lkml.org 
[lkml]   [2009]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: i686 quirk for AMD Geode
    On Sat, Oct 3, 2009 at 9:21 AM, Ingo Molnar <mingo@elte.hu> wrote:
    >
    > * 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
    >

    Sorry Ingo but if you read my last mail I wrote that the GEODE does
    supports FCOMI but not NOPL
    so i don't know if it's worth it, even is I haven't ANY binary in my
    system with such instruction:

    # find /lib/tls/i686 /lib/i686 -type f |xargs objdump -d |grep -c nopl
    0
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2009-10-03 11:57    [W:0.048 / U:123.436 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site