Re: [PATCH] x86, mm: disable 1GB direct mapping when disabling 2MB mapping

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Vlastimil Babka <vbabka@xxxxxxx> wrote:

> The kmemleak and debug_pagealloc features both disable using huge pages for
> direct mapping so they can do cpa() on page level granularity in any context.
> However they only do that for 2MB pages, which means 1GB pages can still be
> used if the CPU supports it, unless disabled by a boot param, which is
> non-obvious. Disable also 1GB pages when disabling 2MB pages.
> 
> Signed-off-by: Vlastimil Babka <vbabka@xxxxxxx>
> ---
>  arch/x86/mm/init.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
> index cbc87ea98751..20282dfce0fa 100644
> --- a/arch/x86/mm/init.c
> +++ b/arch/x86/mm/init.c
> @@ -170,6 +170,10 @@ static void __init probe_page_size_mask(void)
>  	 */
>  	if (boot_cpu_has(X86_FEATURE_PSE) && !debug_pagealloc_enabled())
>  		page_size_mask |= 1 << PG_LEVEL_2M;
> +	else
> +		direct_gbpages = 0;
> +#else
> +	direct_gbpages = 0;
>  #endif
>  
>  	/* Enable PSE if available */

So I agree with the fix, but I think it would be much cleaner to eliminate the 
outer #ifdef:

	#if !defined(CONFIG_KMEMCHECK)

and put it into the condition, like this:

	if (boot_cpu_has(X86_FEATURE_PSE) && !debug_pagealloc_enabled() && !IS_ENABLED(CONFIG_KMEMCHECK))
		page_size_mask |= 1 << PG_LEVEL_2M;
	else
		direct_gbpages = 0;

without any #ifdeffery. This makes it much more readable all around, and also 
makes it obvious that when the 2MB size bit is not set then gbpages are disabled 
as well.

Thanks,

	Ingo

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux