aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorJoonsoo Kim <iamjoonsoo.kim@lge.com>2014-12-12 19:55:52 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-12-13 15:42:48 -0500
commit031bc5743f158b2d5498294f489e534a31251626 (patch)
tree472c0024f26821a627ec17a2e73a450f450ca4cc /mm/page_alloc.c
parente30825f1869a75b29a69dc8e0aaaaccc492092cf (diff)
mm/debug-pagealloc: make debug-pagealloc boottime configurable
Now, we have prepared to avoid using debug-pagealloc in boottime. So introduce new kernel-parameter to disable debug-pagealloc in boottime, and makes related functions to be disabled in this case. Only non-intuitive part is change of guard page functions. Because guard page is effective only if debug-pagealloc is enabled, turning off according to debug-pagealloc is reasonable thing to do. Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Dave Hansen <dave@sr71.net> Cc: Michal Nazarewicz <mina86@mina86.com> Cc: Jungsoo Son <jungsoo.son@lge.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index e0a39d328ca1..303d38516807 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -425,15 +425,35 @@ static inline void prep_zero_page(struct page *page, unsigned int order,
425 425
426#ifdef CONFIG_DEBUG_PAGEALLOC 426#ifdef CONFIG_DEBUG_PAGEALLOC
427unsigned int _debug_guardpage_minorder; 427unsigned int _debug_guardpage_minorder;
428bool _debug_pagealloc_enabled __read_mostly;
428bool _debug_guardpage_enabled __read_mostly; 429bool _debug_guardpage_enabled __read_mostly;
429 430
431static int __init early_debug_pagealloc(char *buf)
432{
433 if (!buf)
434 return -EINVAL;
435
436 if (strcmp(buf, "on") == 0)
437 _debug_pagealloc_enabled = true;
438
439 return 0;
440}
441early_param("debug_pagealloc", early_debug_pagealloc);
442
430static bool need_debug_guardpage(void) 443static bool need_debug_guardpage(void)
431{ 444{
445 /* If we don't use debug_pagealloc, we don't need guard page */
446 if (!debug_pagealloc_enabled())
447 return false;
448
432 return true; 449 return true;
433} 450}
434 451
435static void init_debug_guardpage(void) 452static void init_debug_guardpage(void)
436{ 453{
454 if (!debug_pagealloc_enabled())
455 return;
456
437 _debug_guardpage_enabled = true; 457 _debug_guardpage_enabled = true;
438} 458}
439 459