On Fri, Sep 7, 2012 at 2:31 PM, <[email protected]> wrote:
>
> The patch titled
> Subject: x86/mm: limit extra padding calculation to x86_32
> has been added to the -mm tree. Its filename is
> x86-mm-limit-2-4m-size-calculation-to-x86_32.patch
>
> Before you just go and hit "reply", please:
> a) Consider who else should be cc'ed
> b) Prefer to cc a suitable mailing list as well
> c) Ideally: find the original patch on the mailing list and do a
> reply-to-all to that, adding suitable additional cc's
>
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
>
> The -mm tree is included into linux-next and is updated
> there every 3-4 working days
>
> ------------------------------------------------------
> From: Stefan Bader <[email protected]>
> Subject: x86/mm: limit extra padding calculation to x86_32
>
> Starting with kernel v3.5 kexec based crash dumping was observed to fail
> (without any apparent message) on x86_64 machines. This was traced to a
> lack of memory triggered by a substantial increase (several megabyes) in
> the size of the initial page tables.
>
> After regression (on a VM with 2GB of memory):
> kernel direct mapping tables up to 0x7fffcfff @ [mem 0x1fbfd000-0x1fffffff]
> size = 4206591 bytes
>
> With this patch applied:
> kernel direct mapping tables up to 0x7fffcfff @ [mem 0x1fffc000-0x1fffffff]
> size = 16383 bytes
>
> A bisection lead to commit 722bc6b ("x86/mm: Fix the size calculation of
> mapping tables")
>
> This change modified the extra space calculation to take into account that
> the first 2/4M range of memory would be mapped as 4K pages as suggested in
> chapter 11.11.9 of the Intel software developer's manual.
>
> However this is currently only true for x86_32 (the reasons behind that
> are unclear but apparently the whole page table setup needs to be re-
> visited as it turns out to be very easy to break and has flaws in its
> current form).
>
> Until the logic can be revisited and combined, pair up the extra space
> calculation with the logic which creates the extra mappings.
>
> Signed-off-by: Stefan Bader <[email protected]>
> Cc: WANG Cong <[email protected]>
> Cc: Yinghai Lu <[email protected]>
> Cc: Tejun Heo <[email protected]>
> Cc: <[email protected]> [v3.5+]
> Cc: Ingo Molnar <[email protected]>
> Cc: Thomas Gleixner <[email protected]>
> Cc: "H. Peter Anvin" <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> ---
>
> arch/x86/mm/init.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff -puN arch/x86/mm/init.c~x86-mm-limit-2-4m-size-calculation-to-x86_32
> arch/x86/mm/init.c
> --- a/arch/x86/mm/init.c~x86-mm-limit-2-4m-size-calculation-to-x86_32
> +++ a/arch/x86/mm/init.c
> @@ -60,10 +60,11 @@ static void __init find_early_table_spac
> extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT);
> #ifdef CONFIG_X86_32
> extra += PMD_SIZE;
> -#endif
> +
> /* The first 2/4M doesn't use large pages. */
> if (mr->start < PMD_SIZE)
> extra += mr->end - mr->start;
> +#endif
>
> ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT;
> } else
> _
>
> Patches currently in -mm which might be from [email protected] are
>
> x86-mm-limit-2-4m-size-calculation-to-x86_32.patch
>
three lines
/* The first 2/4M doesn't use large pages. */
if (mr->start < PMD_SIZE)
extra += mr->end - mr->start;
should be just dropped even for 32 bit.
Thanks
Yinghai
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html