Re: crash dump memory reservation regression

From: Dave Young
Date: Wed Mar 21 2012 - 04:17:37 EST


On Tue, Mar 13, 2012 at 1:31 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote:
> On Sun, Mar 11, 2012 at 8:00 PM, CAI Qian <caiqian@xxxxxxxxxx> wrote:
>> commit 3661ca66a42e306aaf53246fb75aec1ea01be0f0
>> x86, memblock: Fix crashkernel allocation
>>
>> introduced a regression that crashkernel=512M
>> according to bisecting will fail like this,
>>
>> crashkernel reservation failed - No suitable area found.
>> The full dmesg can be found here.
>>
>> http://people.redhat.com/qcai/dmesg.bad
>
> The reason is: we put pagetable for [0,2g) just blow 512M.
>
> Later we have other patches that will put pagetable for [0,2g) just
> below 2g. even at that time we only can access 512M, because we use
> early_ioremap to access page table.
>
> But that good_end part get reverted in following because it cause s4
> resume fail.
>
> So there will be pagetable around just below 512M again. So you have
> no chance to get 512M below 768M.
>
> Solution will be:
> 1. Âremove the good_end setting for 64 bit again. and root cause S4 resume.

Takashi, could you check if latest kernel without the good_end patch
below works for you?

> 2. Âget page low?
> 3. Âfix kdump, and make kdump could take two ranges, one is small
> segment below 512M, other part could be more than 4G.
>
> Thanks
>
> Yinghai
>
>
> commit 8548c84da2f47e71bbbe300f55edb768492575f7
> Author: Takashi Iwai <tiwai@xxxxxxx>
> Date: Â Sun Oct 23 23:19:12 2011 +0200
>
> Â Âx86: Fix S4 regression
>
> Â ÂCommit 4b239f458 ("x86-64, mm: Put early page table high") causes a S4
> Â Âregression since 2.6.39, namely the machine reboots occasionally at S4
> Â Âresume. ÂIt doesn't happen always, overall rate is about 1/20. ÂBut,
> Â Âlike other bugs, once when this happens, it continues to happen.
>
> Â ÂThis patch fixes the problem by essentially reverting the memory
> Â Âassignment in the older way.
>
> Â ÂSigned-off-by: Takashi Iwai <tiwai@xxxxxxx>
> Â ÂCc: <stable@xxxxxxxxxx>
> Â ÂCc: Rafael J. Wysocki <rjw@xxxxxxx>
> Â ÂCc: Yinghai Lu <yinghai.lu@xxxxxxxxxx>
> Â Â[ We'll hopefully find the real fix, but that's too late for 3.1 now ]
> Â ÂSigned-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>
> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
> index 3032644..87488b9 100644
> --- a/arch/x86/mm/init.c
> +++ b/arch/x86/mm/init.c
> @@ -63,9 +63,8 @@ static void __init find_early_table_space(unsigned
> long end, int use_pse,
> Â#ifdef CONFIG_X86_32
> Â Â Â Â/* for fixmap */
> Â Â Â Âtables += roundup(__end_of_fixed_addresses * sizeof(pte_t), PAGE_SIZE);
> -
> - Â Â Â good_end = max_pfn_mapped << PAGE_SHIFT;
> Â#endif
> + Â Â Â good_end = max_pfn_mapped << PAGE_SHIFT;
>
> Â Â Â Âbase = memblock_find_in_range(start, good_end, tables, PAGE_SIZE);
> Â Â Â Âif (base == MEMBLOCK_ERROR)
> --
> 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/



--
Regards
Dave
--
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/