Re: [PATCH v3 2/3] x86: query dynamic DEBUG_PAGEALLOC setting

From: David Rientjes
Date: Wed Jan 27 2016 - 17:17:20 EST


On Wed, 27 Jan 2016, Christian Borntraeger wrote:

> We can use debug_pagealloc_enabled() to check if we can map
> the identity mapping with 2MB pages. We can also add the state
> into the dump_stack output.
>
> The patch does not touch the code for the 1GB pages, which ignored
> CONFIG_DEBUG_PAGEALLOC. Do we need to fence this as well?
>
> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
> Reviewed-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> ---
> arch/x86/kernel/dumpstack.c | 5 ++---
> arch/x86/mm/init.c | 7 ++++---
> arch/x86/mm/pageattr.c | 14 ++++----------
> 3 files changed, 10 insertions(+), 16 deletions(-)
>
> diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
> index 9c30acf..32e5699 100644
> --- a/arch/x86/kernel/dumpstack.c
> +++ b/arch/x86/kernel/dumpstack.c
> @@ -265,9 +265,8 @@ int __die(const char *str, struct pt_regs *regs, long err)
> #ifdef CONFIG_SMP
> printk("SMP ");
> #endif
> -#ifdef CONFIG_DEBUG_PAGEALLOC
> - printk("DEBUG_PAGEALLOC ");
> -#endif
> + if (debug_pagealloc_enabled())
> + printk("DEBUG_PAGEALLOC ");
> #ifdef CONFIG_KASAN
> printk("KASAN");
> #endif
> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
> index 493f541..39823fd 100644
> --- a/arch/x86/mm/init.c
> +++ b/arch/x86/mm/init.c
> @@ -150,13 +150,14 @@ static int page_size_mask;
>
> static void __init probe_page_size_mask(void)
> {
> -#if !defined(CONFIG_DEBUG_PAGEALLOC) && !defined(CONFIG_KMEMCHECK)
> +#if !defined(CONFIG_KMEMCHECK)
> /*
> - * For CONFIG_DEBUG_PAGEALLOC, identity mapping will use small pages.
> + * For CONFIG_KMEMCHECK or pagealloc debugging, identity mapping will
> + * use small pages.
> * This will simplify cpa(), which otherwise needs to support splitting
> * large pages into small in interrupt context, etc.
> */
> - if (cpu_has_pse)
> + if (cpu_has_pse && !debug_pagealloc_enabled())
> page_size_mask |= 1 << PG_LEVEL_2M;
> #endif
>

I would have thought free_init_pages() would be modified to use
debug_pagealloc_enabled() as well?