• A
    x86/boot: Fail the boot if !M486 and CPUID is missing · ed68d7e9
    Andy Lutomirski 提交于
    Linux will have all kinds of sporadic problems on systems that don't
    have the CPUID instruction unless CONFIG_M486=y.  In particular,
    sync_core() will explode.
    
    I believe that these kernels had a better chance of working before
    commit 05fb3c19 ("x86/boot: Initialize FPU and X86_FEATURE_ALWAYS
    even if we don't have CPUID").  That commit inadvertently fixed a
    serious bug: we used to fail to detect the FPU if CPUID wasn't
    present.  Because we also used to forget to set X86_FEATURE_ALWAYS, we
    end up with no cpu feature bits set at all.  This meant that
    alternative patching didn't do anything and, if paravirt was disabled,
    we could plausibly finish the entire boot process without calling
    sync_core().
    
    Rather than trying to work around these issues, just have the kernel
    fail loudly if it's running on a CPUID-less 486, doesn't have CPUID,
    and doesn't have CONFIG_M486 set.
    Reported-by: NMatthew Whitehead <tedheadster@gmail.com>
    Signed-off-by: NAndy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/70eac6639f23df8be5fe03fa1984aedd5d40077a.1479598603.git.luto@kernel.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
    ed68d7e9
cpu.c 2.3 KB