Messages in this thread Patch in this message | | | From | Matteo Croce <> | Date | Sun, 8 Nov 2009 19:04:35 +0100 | Subject | Re: i686 quirk for AMD Geode |
| |
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. >
True, but also remove the duplicate function is_geode in the NAND driver and use the identical one defined in geode.h:
--- a/drivers/mtd/nand/cs553x_nand.c 2009-11-08 18:58:14.835043214 +0100 +++ b/drivers/mtd/nand/cs553x_nand.c 2009-11-08 19:00:07.914117831 +0100 @@ -30,6 +30,7 @@
#include <asm/msr.h> #include <asm/io.h> +#include <asm/geode.h>
#define NR_CS553X_CONTROLLERS 4
@@ -260,23 +261,6 @@ return err; }
-static int is_geode(void) -{ - /* These are the CPUs which will have a CS553[56] companion chip */ - if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD && - boot_cpu_data.x86 == 5 && - boot_cpu_data.x86_model == 10) - return 1; /* Geode LX */ - - if ((boot_cpu_data.x86_vendor == X86_VENDOR_NSC || - boot_cpu_data.x86_vendor == X86_VENDOR_CYRIX) && - boot_cpu_data.x86 == 5 && - boot_cpu_data.x86_model == 5) - return 1; /* Geode GX (née GX2) */ - - return 0; -} -
#ifdef CONFIG_MTD_PARTITIONS static const char *part_probes[] = { "cmdlinepart", NULL }; -- 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/
| |