Re: [PATCH] mm/debug_pagealloc: Ask users for default setting of debug_pagealloc

From: Christian Borntraeger
Date: Mon Jan 25 2016 - 06:10:29 EST

On 01/25/2016 11:07 AM, Christian Borntraeger wrote:
> On 01/25/2016 11:02 AM, Heiko Carstens wrote:
>> On Mon, Jan 25, 2016 at 10:45:50AM +0100, Christian Borntraeger wrote:
>>>>> + By default this option will be almost for free and can be activated
>>>>> + in distribution kernels. The overhead and the debugging can be enabled
>>>>> + by DEBUG_PAGEALLOC_ENABLE_DEFAULT or the debug_pagealloc command line
>>>>> + parameter.
>>>> Sorry, but it's not almost for free and should not be used by distribution
>>>> kernels. If we have DEBUG_PAGEALLOC enabled, at least on s390 we will not
>>>> make use of 2GB and 1MB pagetable entries for the identy mapping anymore.
>>>> Instead we will only use 4K mappings.
>>> Hmmm, can we change these code areas to use debug_pagealloc_enabled? I guess
>>> this evaluated too late?
>> Yes, that should be possible. "debug_pagealloc" is an early_param, which
>> will be evaluated before we call paging_init() (both in
>> arch/s390/kernel/setup.c).
>> So it looks like this can be trivially changed. (replace the ifdefs in
>> arch/s390/mm/vmem.c with debug_pagealloc_enabled()).
>>>> I assume this is true for all architectures since freeing pages can happen
>>>> in any context and therefore we can't allocate memory in order to split
>>>> page tables.
>>>> So enabling this will cost memory and put more pressure on the TLB.
>>> So I will change the description and drop the "if unsure" statement.
>> Well, given that we can change it like above... I don't care anymore ;)
> Ok, I will give it a try, and come back with a rewording or an s390 patch.

I have a patch for x86 and s390. powerpc should also be possible.

Now it seems that sparc already defines the TSB very early in head.S.
Unless we find a solution for sparc to use debug_pagealloc_enabled()
I will modify the patch description and resend the patch.