From: "H. Peter Anvin" <hpa@xxxxxxxxxxxxxxx> setup_bios_corruption_check() tries to claim any low memory regions that we haven't already reserved. Make sure we reserve any low memory regions that we intend to either use or know/assume a priori is bad *before* we initialize the checker. Stable team note: adding this to the list to consider for stable because it generates user-visible nuisance dmesg warnings in some configurations. However, it is not urgent and should be allowed to percolate in Linus' tree for a bit first. Reported-by: Olof Johansson <olof@xxxxxxxxx> Signed-off-by: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> Link: http://lkml.kernel.org/r/528168CB.7070602@xxxxxxxxxxxxxxx Cc: <stable@xxxxxxxxxxxxxxx> v3.9+ [not urgent] --- arch/x86/kernel/setup.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index f0de629..8c01d6e 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -1080,10 +1080,6 @@ void __init setup_arch(char **cmdline_p) /* preallocate 4k for mptable mpc */ early_reserve_e820_mpc_new(); -#ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION - setup_bios_corruption_check(); -#endif - #ifdef CONFIG_X86_32 printk(KERN_DEBUG "initial memory mapped: [mem 0x00000000-%#010lx]\n", (max_pfn_mapped<<PAGE_SHIFT) - 1); @@ -1100,6 +1096,14 @@ void __init setup_arch(char **cmdline_p) setup_real_mode(); + /* + * At this point we should have reserved any low memory regions + * we need to reserve. + */ +#ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION + setup_bios_corruption_check(); +#endif + memblock_set_current_limit(get_max_mapped()); dma_contiguous_reserve(0); -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html