mirror of https://gitee.com/openkylin/linux.git
x86/microcode: Disable builtin microcode loading on 32-bit for now
Andy Shevchenko reported machine freezes when booting latest tip on 32-bit setups. Problem is, the builtin microcode handling cannot really work that early, when we haven't even enabled paging. A proper fix would involve handling that case specially as every other early 32-bit boot case in the microcode loader and would require much more involved changes for which it is too late now, more than a week before the upcoming merge window. So, disable the builtin microcode loading on 32-bit for now. Reported-and-tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: H. Peter Anvin <hpa@zytor.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/1433436928-31903-20-git-send-email-bp@alien8.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
e774eaa9f6
commit
ee38a90709
|
@ -230,6 +230,7 @@ static void apply_ucode_in_initrd(void *ucode, size_t size, bool save_patch)
|
|||
|
||||
static bool __init load_builtin_amd_microcode(struct cpio_data *cp, int family)
|
||||
{
|
||||
#ifdef CONFIG_X86_64
|
||||
char fw_name[36] = "amd-ucode/microcode_amd.bin";
|
||||
|
||||
if (family >= 0x15)
|
||||
|
@ -237,6 +238,9 @@ static bool __init load_builtin_amd_microcode(struct cpio_data *cp, int family)
|
|||
"amd-ucode/microcode_amd_fam%.2xh.bin", family);
|
||||
|
||||
return get_builtin_firmware(cp, fw_name);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
void __init load_ucode_amd_bsp(int family)
|
||||
|
|
|
@ -523,6 +523,7 @@ EXPORT_SYMBOL_GPL(save_mc_for_early);
|
|||
|
||||
static bool __init load_builtin_intel_microcode(struct cpio_data *cp)
|
||||
{
|
||||
#ifdef CONFIG_X86_64
|
||||
u32 eax = 0x00000001, ebx, ecx = 0, edx;
|
||||
int family, model, stepping;
|
||||
char name[30];
|
||||
|
@ -536,6 +537,9 @@ static bool __init load_builtin_intel_microcode(struct cpio_data *cp)
|
|||
sprintf(name, "intel-ucode/%02x-%02x-%02x", family, model, stepping);
|
||||
|
||||
return get_builtin_firmware(cp, name);
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
static __initdata char ucode_name[] = "kernel/x86/microcode/GenuineIntel.bin";
|
||||
|
|
Loading…
Reference in New Issue