Re: Dynamic nop selection breaks boot on Geode LX

From: Borislav Petkov
Date: Sun Oct 03 2010 - 01:52:05 EST


From: Daniel Drake <dsd@xxxxxxxxxx>
Date: Sat, Oct 02, 2010 at 08:16:19PM +0100

> Hi,
>
> linux-next fails to boot on OLPC's XO-1 laptop based on Geode LX
> processor.
>
> This is because of
>
> commit f49aa448561fe9215f43405cac6f31eb86317792 Author: Jason Baron
> <jbaron@xxxxxxxxxx> Date: Fri Sep 17 11:08:51 2010 -0400
>
> jump label: Make dynamic no-op selection available outside of
> ftrace
>
> http://git.kernel.org/?p=linux/kernel/git/mingo/linux-2.6-x86.git;a=co
> mmitdiff;h=f49aa44
>
> The Geode hangs inside the asm() statement inside
> arch_init_ideal_nop5.
>
> Any thoughts?

maybe because the Geode doesn't have both the
P6_NOP5 and the NOP with 4 0x66 prefixes:
http://kerneltrap.org/mailarchive/linux-kernel/2010/8/27/4612336

and for some reason the trap can't find the fixup address. You say
"hangs" so you don't even get an "invalid opcode" OOPS?

Maybe on a Geode jmp label should use the 2-byte jmp + 3 1-byte nops
unconditionally after adding a synthetic CPUID flag in init_amd_k6(), in
the Geode part.

--
Regards/Gruss,
Boris.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/