lkml.org 
[lkml]   [2009]   [Nov]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: i686 quirk for AMD Geode
    On Sun, 8 Nov 2009 19:22:47 +0100
    Matteo Croce <technoboy85@gmail.com> wrote:

    > On Sun, Nov 8, 2009 at 5:05 PM, Andres Salomon
    > <dilinger@collabora.co.uk> wrote:
    > > See comment below.  BTW, how does this affect performance on LXs?
    > > Do you have any hard numbers for common tasks?
    > >
    > > On Sat, 7 Nov 2009 12:11:55 +0100
    > > Matteo Croce <technoboy85@gmail.com> wrote:
    > > [...]
    > >>
    > >> --- a/arch/x86/kernel/Makefile        2009-11-06 15:06:52.246223989
    > >> +0100 +++ b/arch/x86/kernel/Makefile  2009-11-06
    > >> 15:07:04.294054613 +0100 @@ -89,7 +89,7 @@
    > >>  obj-$(CONFIG_HPET_TIMER)     += hpet.o
    > >>
    > >>  obj-$(CONFIG_K8_NB)          += k8.o
    > >> -obj-$(CONFIG_MGEODE_LX)              += geode_32.o mfgpt_32.o
    > >> +obj-$(CONFIG_MGEODE_LX)              += geode_32.o mfgpt_32.o
    > >> nopl_emu.o obj-$(CONFIG_DEBUG_RODATA_TEST)    += test_rodata.o
    > >>  obj-$(CONFIG_DEBUG_NX_TEST)  += test_nx.o
    > >>
    > >> --- a/arch/x86/kernel/cpu/amd.c       2009-11-06 15:06:52.254223805
    > >> +0100 +++ b/arch/x86/kernel/cpu/amd.c 2009-11-06
    > >> 15:07:04.294054613 +0100 @@ -138,8 +138,10 @@
    > >>       }
    > >>
    > >>       if (c->x86_model == 10) {
    > >> -             /* AMD Geode LX is model 10 */
    > >> -             /* placeholder for any needed mods */
    > >> +             /* Geode only lacks the NOPL instruction to be i686,
    > >> +                but we can emulate it in the exception handler
    > >> +                and promote it to a class 6 cpu */
    > >> +             boot_cpu_data.x86 = 6;
    > >>               return;
    > >>       }
    > >
    > > If you're going to update this, you also need to make sure that
    > > you're not breaking things that check it.  For example,
    > > arch/x86/include/asm/geode.h has an is_geode_lx check that expects
    > > boot_cpu_data.x86 to be 5.  Please be sure to update all these
    > > places when creating a patch like this.
    > >
    >
    > Right, but what if is_geode_lx() is called befor the x86.id change
    > takes effect? Maybe something like this?
    >
    > --- a/arch/x86/include/asm/geode.h 2009-11-08 19:13:43.531117343 +0100
    > +++ b/arch/x86/include/asm/geode.h 2009-11-08 19:19:42.130618023
    > +0100 @@ -177,7 +177,7 @@
    > static inline int is_geode_lx(void)
    > {
    > return ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) &&
    > - (boot_cpu_data.x86 == 5) &&
    > + (boot_cpu_data.x86 == 5 || boot_cpu_data.x86 == 6) &&
    > (boot_cpu_data.x86_model == 10));
    > }


    Yeah, that looks better.
    --
    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-11-08 19:51    [W:0.028 / U:62.332 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site