Re: 3.14 x86 ACPI handover regression

From: Yinghai Lu
Date: Wed Sep 10 2014 - 14:19:16 EST


[+ linux acpi]

could be other problems ...that is caused by wrong
use memblock_alloc replace memblock_find....

On Wed, Sep 10, 2014 at 8:44 AM, Daniel J Blueman <daniel@xxxxxxxxxxxxx> wrote:
> Kernels 3.14 and newer fail ACPI handover [1] on Supermicro H8QGL servers,
> invariant of BIOS version or settings, causing boot failure, confirmed
> across a bunch of servers.
>
> Doing some bisect-fu, it turns out that reverting Yinghai's patch fixes the
> behaviour. Booting with Santosh's patch (5b6e529521d3, which Yinghai
> reverts) succeeds, but interestingly booting with the patch before Santosh's
> patch also succeeds, suggesting there's other interaction. Behaviour is
> stable at all places tested.
>
> Any tips on how to proceed?
>
> Thanks,
> Daniel
>
> -- [1]
>
> ACPI Error: Hardware did not enter ACPI mode (20131218/evxfevnt-113)
> ACPI Warning: AcpiEnable failed (20131218/utxfinit-169)
> ACPI: Unable to enable ACPI
>
> -- [2]
>
> commit 4ce7a8697cb795fda6bdf082c14743b4bcd551c3
> Author: Yinghai Lu <yinghai@xxxxxxxxxx>
> Date: Mon Jan 27 17:06:50 2014 -0800
>
> x86: revert wrong memblock current limit setting
>
> Dave reported big numa system booting is broken.
>
> It turns out that commit 5b6e529521d3 ("x86: memblock: set current limit
> to max low memory address") sets the limit to low wrongly.
>
> max_low_pfn_mapped is different from max_pfn_mapped.
> max_low_pfn_mapped is always under 4G.
>
> That will memblock_alloc_nid all go under 4G.
>
> Revert 5b6e529521d3 to fix a no-boot regression which was triggered by
> 457ff1de2d24 ("lib/swiotlb.c: use memblock apis for early memory
> allocations").
>
> Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx>
> Reported-by: Dave Hansen <dave.hansen@xxxxxxxxx>
> Acked-by: Santosh Shilimkar <santosh.shilimkar@xxxxxx>
> Cc: Russell King <linux@xxxxxxxxxxxxxxxx>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxx>
> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>
> diff --git a/arch/x86/include/asm/page_types.h
> b/arch/x86/include/asm/page_types.h
> index 2f59cce..f97fbe3 100644
> --- a/arch/x86/include/asm/page_types.h
> +++ b/arch/x86/include/asm/page_types.h
> @@ -51,9 +51,9 @@ extern int devmem_is_allowed(unsigned long pagenr);
> extern unsigned long max_low_pfn_mapped;
> extern unsigned long max_pfn_mapped;
>
> -static inline phys_addr_t get_max_low_mapped(void)
> +static inline phys_addr_t get_max_mapped(void)
> {
> - return (phys_addr_t)max_low_pfn_mapped << PAGE_SHIFT;
> + return (phys_addr_t)max_pfn_mapped << PAGE_SHIFT;
> }
>
> bool pfn_range_is_mapped(unsigned long start_pfn, unsigned long end_pfn);
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index c967559..06853e6 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1119,7 +1119,7 @@ void __init setup_arch(char **cmdline_p)
>
> setup_real_mode();
>
> - memblock_set_current_limit(get_max_low_mapped());
> + memblock_set_current_limit(get_max_mapped());
> dma_contiguous_reserve(0);
>
> /*
> --
> Daniel J Blueman
> Principal Software Engineer, Numascale
--
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/